]> matita.cs.unibo.it Git - helm.git/commitdiff
* setprofileparam ==> setparam
authorLuca Padovani <luca.padovani@unito.it>
Mon, 24 May 2004 12:49:58 +0000 (12:49 +0000)
committerLuca Padovani <luca.padovani@unito.it>
Mon, 24 May 2004 12:49:58 +0000 (12:49 +0000)
* serialization/deserialization of the profile file implemented (write-through
  semantics)
* cloning of a profile fixed

helm/uwobo/uwobo.ml
helm/uwobo/uwobo_common.ml
helm/uwobo/uwobo_profiles.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 *)
index bdb455bc76f3106439e8315819d2441cd2e2a226..87a640b4306d156753c0df050ba71a511360acfc 100644 (file)
@@ -141,7 +141,7 @@ let usage_string =
       is set to false.
     </p>
     <p>
-      <b><kbd>setprofileparam?id=id[&password=password]&key=key[&value=value]</kbd></b><br />
+      <b><kbd>setparam?id=id[&password=password]&key=key[&value=value]</kbd></b><br />
       sets the property <em>key</em> to <em>value</em>, if <em>value</em> is provided; otherwise
       the parameter is unset. The password is required if the profile writing permission is set to
       false.
index 715c247716291d47849404873081fd0de05aad4f..c34ba3ed91ff434c435a28f029c9d3df6a492bbe 100644 (file)
@@ -111,7 +111,7 @@ let create ?id ?clone ?clone_password ?(read_perm=true) ?(write_perm=true) ?(adm
          check_permission pid clone_password `Read ;
          to_list_rel ~prefix:(params_key pid) ()
   in
-    List.iter (fun (key, value) -> Helm_registry.set_string key value) params ;
+    List.iter (fun (key, value) -> Helm_registry.set_string (params_key pid ^ "." ^ key) value) params ;
     Helm_registry.set_bool (read_permission_key pid) read_perm ;
     Helm_registry.set_bool (write_permission_key pid) write_perm ;
     Helm_registry.set_bool (admin_permission_key pid) admin_perm ;