]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/uwobo/uwobo.ml
* setprofileparam ==> setparam
[helm.git] / helm / uwobo / uwobo.ml
index b51169c9ce464cfdcd8afc5dc69fbac9d3f6ff72..73cc23b6547471511eb4a3a90e8067f93d0f2a26 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")
@@ -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 *)
@@ -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 *)