]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/uwobo/uwobo.ml
New icons.
[helm.git] / helm / uwobo / uwobo.ml
index b51169c9ce464cfdcd8afc5dc69fbac9d3f6ff72..2e454651906de8b5fcc208d8fb2cf6ef506ed986 100644 (file)
@@ -35,13 +35,18 @@ let debug_level = `Notice ;;
 let debug_print s = if debug then prerr_endline s ;;
 Http_common.debug := false ;;
 
+let configuration_file = "/projects/helm/etc/uwobo.conf.xml";;
 
   (* First of all we load the configuration *)
 let _ =
- let configuration_file = "/projects/helm/etc/uwobo.conf.xml" in
   Helm_registry.load_from configuration_file
 ;;
 
+let save_configuration () =
+  if not (Helm_registry.has "uwobo.cloned") then
+    Helm_registry.save_to configuration_file
+;;
+
   (* other settings *)
 let daemon_name = "UWOBO OCaml" ;;
 let default_media_type = "text/html" ;;
@@ -254,7 +259,8 @@ let start_new_session cmd_pipe res_pipe outchan port logfile =
          let environment =
           (* Here I am loosing the current value of port_env_var; *)
           (* this should not matter                               *)
-          Unix.putenv "UWOBO__PORT" (string_of_int port) ;
+          Unix.putenv "uwobo__port" (string_of_int port) ;
+         Unix.putenv "uwobo__cloned" "1" ;
           Unix.environment ()
          in
          (* 4. We exec a new copy of uwobo *)
@@ -374,7 +380,7 @@ let callback
                    (string_of_param_option req "password")
        in
          short_circuit_grandfather_and_client ~cmd ~cmd_pipe ~res_pipe outchan
-    | "/setprofileparam" ->
+    | "/setparam" ->
        let cmd = sprintf "setprofileparam %s,%s,%s,%s" 
                    (string_of_param_option req "id")
                    (string_of_param_option req "password")
@@ -410,7 +416,7 @@ let callback
        let res = Uwobo_profiles.get_params pid ?password () in
        respond_html
         ("<html><body><ul>" ^
-         String.concat "" (List.map (fun k,v -> "<li>" ^ k ^ " = " ^ v  ^ "</li>") res) ^
+         String.concat "" (List.map (fun k,v -> "<li><key>" ^ k ^ "</key> = <value>" ^ v  ^ "</value></li>") res) ^
          "</ul></body></html>") outchan
     | "/getparam" ->
         let pid = req#param "id" in
@@ -432,7 +438,7 @@ let callback
          match forwhat with
             Some forwhat ->
              let value = Uwobo_profiles.get_permission pid ?password forwhat in
-             respond_html ("<html><body>" ^ (if value then "true" else "false") ^ "</body></html>") outchan
+             respond_html ("<html><body>" ^ (if value then "public" else "private") ^ "</body></html>") outchan
            | None -> Http_daemon.respond_error ~code:(`Status (`Client_error `Bad_request)) outchan ;
          end
     | "/apply" ->
@@ -650,6 +656,7 @@ let main () =
                            ?password
                            ()
                        in
+                         save_configuration () ;
                          output_string res_pipe ("Profile " ^ pid ^ " created. Hi " ^ pid) ;
                          raise Restart_HTTP_daemon
                    | _ -> assert false
@@ -662,6 +669,7 @@ let main () =
                  | _ -> assert false
               in
                Uwobo_profiles.remove pid ?password () ;
+               save_configuration () ;
                output_string res_pipe "Done" ;
                raise Restart_HTTP_daemon
            | line when Pcre.pmatch ~rex:setprofileparam_cmd_RE line -> (* /setprofileparam *)
@@ -673,6 +681,7 @@ let main () =
                  | _ -> assert false
               in
                Uwobo_profiles.set_param pid ?password ~key ~value () ;
+               save_configuration () ;
                output_string res_pipe "Done" ;
                raise Restart_HTTP_daemon
            | line when Pcre.pmatch ~rex:setpassword_cmd_RE line -> (* /setpassword *)
@@ -684,6 +693,7 @@ let main () =
                  | _ -> assert false
               in
                Uwobo_profiles.set_password pid ?old_password password ;
+               save_configuration () ;
                output_string res_pipe "Done" ;
                raise Restart_HTTP_daemon
            | line when Pcre.pmatch ~rex:setpermission_cmd_RE line -> (* /setpermission *)
@@ -694,7 +704,7 @@ let main () =
                  | "write" -> `Write
                  | "admin" -> `Admin
                  | _ -> assert false
-             and bool_of_string s = "true" = s
+             and bool_of_string s = "public" = s
              in
              let pid, password, forwhat, value =
                match Pcre.split ~pat:"," (Pcre.replace ~rex:setpermission_cmd_RE line) with
@@ -703,6 +713,7 @@ let main () =
                  | _ -> assert false
               in
                Uwobo_profiles.set_permission pid ?password forwhat value ;
+               save_configuration () ;
                output_string res_pipe "Done" ;
                raise Restart_HTTP_daemon
             | cmd ->  (* invalid interprocess command received *)