Passgen (admin part)
authorAdam Chlipala <adamc@hcoop.net>
Tue, 24 Mar 2009 15:38:21 +0000 (15:38 +0000)
committerAdam Chlipala <adamc@hcoop.net>
Tue, 24 Mar 2009 15:38:21 +0000 (15:38 +0000)
config.sig
config.sml
passgen.mlt [new file with mode: 0644]
passgen.sig [new file with mode: 0644]
passgen.sml [new file with mode: 0644]

index 22145f9..a18551b 100644 (file)
@@ -8,4 +8,6 @@ val dbstring : string
 val kerberosSuffix : string
 val passwordFiles : string
 
+val passgenDbstring : string
+
 end
index acb31cc..4cef3b4 100644 (file)
@@ -11,4 +11,6 @@ val kerberosSuffix = "@HCOOP.NET"
                     
 val passwordFiles = "/var/lib/portal/"
 
+val passgenDbstring = "dbname='passgen' user='www-data'"
+
 end
diff --git a/passgen.mlt b/passgen.mlt
new file mode 100644 (file)
index 0000000..48be3b4
--- /dev/null
@@ -0,0 +1,21 @@
+<% @header[("title", ["Generated passwords"])];
+
+Group.requireGroupNum 0;
+
+if $"id" <> "" then
+   val id = Web.stoi ($"id");
+   switch PassGen.lookup id of
+     NONE => %>ID not found!<%
+   | SOME pass => %><table class="blanks">
+       <tr> <td>ID:</td> <td><% id %></td> </tr>
+       <tr> <td>Password:</td> <td><% pass %></td> </tr>
+     </table><%
+   end
+end %>
+
+<p><form method="post"><table class="blanks">
+  <tr> <td>ID:</td> <td><input name="id" size="5"></td> </tr>
+  <tr> <td><input type="submit" value="Lookup"></td> </tr>
+</table></form></p>
+
+<% @footer[] %>
\ No newline at end of file
diff --git a/passgen.sig b/passgen.sig
new file mode 100644 (file)
index 0000000..da099d4
--- /dev/null
@@ -0,0 +1,3 @@
+signature PASSGEN = sig
+    val lookup : int -> string option
+end
diff --git a/passgen.sml b/passgen.sml
new file mode 100644 (file)
index 0000000..794c1f4
--- /dev/null
@@ -0,0 +1,16 @@
+structure PassGen :> PASSGEN = struct
+
+open Sql Init
+
+fun lookup id =
+    let
+       val db = C.conn Config.passgenDbstring
+    in
+       (case C.oneOrNoRows db ($`SELECT pass FROM Pass WHERE id = ^(C.intToSql id)`) of
+            NONE => NONE
+          | SOME [pass] => SOME (C.stringFromSql pass)
+          | _ => raise Fail "Bad \"SELECT pass\" row")
+       before C.close db
+    end
+
+end