payment: note that Stripe has instituted an additional 1% fee for non-US cards
[hcoop/portal.git] / aptquery.sml
index ba0e761..7264c80 100644 (file)
@@ -6,7 +6,7 @@ type info = { name : string, section : string, descr : string, installed : bool
 fun validName s = CharVector.all (fn ch => Char.isAlphaNum ch orelse ch = #"_" orelse ch = #"-" orelse ch = #".") s
                  andalso (size s > 0 andalso String.sub (s, 0) <> #"-")
                           
-fun query name =
+fun query {node, pkg = name} =
     let
        val _ =
            if validName name then
@@ -14,7 +14,7 @@ fun query name =
            else
                raise Fail "Invalid package name"
 
-       val proc = Unix.execute ("/usr/bin/apt-cache", ["show", name])
+       val proc = Unix.executeInEnv ("/usr/local/bin/domtool-admin", ["package-exists", Init.nodeName node, name], ["DOMTOOL_USER=hcoop.daemon"])
        val inf = Unix.textInstreamOf proc
 
        fun loop (section, descr) =
@@ -33,7 +33,7 @@ fun query name =
            let
                val _ = Unix.reap proc
 
-               val installed = OS.Process.isSuccess (OS.Process.system ("/usr/bin/dpkg -p " ^ name ^ " >/dev/null 2>/dev/null"))
+               val installed = OS.Process.isSuccess (OS.Process.system ("DOMTOOL_USER=hcoop.daemon /usr/local/bin/domtool-admin package " ^ Init.nodeName node ^ " " ^ name ^ " >/dev/null 2>/dev/null"))
            in
                SOME {name = name, section = section, descr = descr, installed = installed}
            end