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" ;;
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 *)
(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")
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
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" ->
?password
()
in
+ save_configuration () ;
output_string res_pipe ("Profile " ^ pid ^ " created. Hi " ^ pid) ;
raise Restart_HTTP_daemon
| _ -> assert false
| _ -> 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 *)
| _ -> 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 *)
| _ -> 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 *)
| "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
| _ -> 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 *)