]> matita.cs.unibo.it Git - helm.git/commitdiff
Ported to Helm_registry.
authorClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Mon, 16 Feb 2004 18:16:58 +0000 (18:16 +0000)
committerClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Mon, 16 Feb 2004 18:16:58 +0000 (18:16 +0000)
helm/uwobo/Makefile
helm/uwobo/uwobo.conf.xml.sample [new file with mode: 0644]
helm/uwobo/uwobo.ml

index c2a97d7c5fe5fcca7a41eace74176d2299cabfb4..9cec0e48838c2ea68e442f5ef0437408625701a0 100644 (file)
@@ -1,7 +1,7 @@
 VERSION = 0.2.1
 DISTDIR = uwobo-$(VERSION)
 DISTTARBALL = $(DISTDIR).tar.gz
-REQUIRES = http gdome2 gdome2-xslt pcre unix
+REQUIRES = http gdome2 gdome2-xslt pcre unix helm-registry
 COMMONOPTS = -package "$(REQUIRES)" -pp camlp4o
 OCAMLFIND = ocamlfind
 OCAMLC = $(OCAMLFIND) ocamlc $(COMMONOPTS)
diff --git a/helm/uwobo/uwobo.conf.xml.sample b/helm/uwobo/uwobo.conf.xml.sample
new file mode 100644 (file)
index 0000000..d138ee1
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<helm_registry>
+  <section name="per_user_settings">
+    <key name="dbm_dir">/projects/helm/shared/V7_mowgli</key>
+    <key name="cache_dir">/tmp/helm/cache</key>
+  </section>
+
+  <section name="uwobo">
+    <key name="log_basename">/var/log/mowgli/uwobo</key>
+    <key name="log_extension">.log</key>
+
+    <key name="port">58080</key>
+  </section>
+</helm_registry>
index a9755885d2463f65490c4f263c1d0ccc0f09c02d..d680f9e2825d6ff6f80ff10efb90188a2e2c53a6 100644 (file)
@@ -35,13 +35,15 @@ let debug_level = `Notice ;;
 let debug_print s = if debug then prerr_endline s ;;
 Http_common.debug := false ;;
 
+
+  (* First of all we load the configuration *)
+let _ =
+ let configuration_file = "/projects/helm/etc/uwobo.conf.xml" in
+  Helm_registry.load_from configuration_file
+;;
+
   (* other settings *)
 let daemon_name = "UWOBO OCaml" ;;
-let default_log_base_file = "log/uwobo" ;; (* relative to execution dir *)
-let log_extension = ".log" ;;
-let default_port = 58080 ;;
-let port_env_var = "UWOBO_PORT" ;;
-let log_env_var = "UWOBO_LOG_FILE" ;; (* The extension _pid.log will be added *)
 let default_media_type = "text/html" ;;
 let default_encoding = "utf8" ;;
 
@@ -59,24 +61,14 @@ let get_encoding props =
   Not_found -> default_encoding
 ;;
 
-let port =
-  try
-    int_of_string (Sys.getenv port_env_var)
-  with
-  | Not_found -> default_port
-  | Failure "int_of_string" ->
-     prerr_endline "Warning: invalid port number" ;
-     exit (-1)
-;;
+let port = Helm_registry.get_int "uwobo.port";;
+
 let logfilename_of_port port =
- let basename =
-  try
-   Sys.getenv log_env_var
-  with
-   Not_found -> default_log_base_file
- in
-  basename ^ "_" ^ string_of_int port ^ log_extension
+ let basename = Helm_registry.get "uwobo.log_basename" in
+ let extension = Helm_registry.get "uwobo.log_extension" in
+  basename ^ "_" ^ string_of_int port ^ extension
 ;;
+
 let logfile = logfilename_of_port port;;
 let logfile_perm = 0o640 ;;
 
@@ -216,55 +208,57 @@ let veillogger = new Uwobo_common.libXsltLogger ;;
   (* It can raise Failure "Connection refused" *)
   (* It can raise Failure "Port already in use" *)
 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 port_env_var (string_of_int port) ;
-  Unix.environment ()
- in
-  (* Let's check that the port is free *)
-  (try
-    ignore
-     (Http_client.http_get
-       ("http://127.0.0.1:" ^ string_of_int port ^ "/help")) ;
-    raise (Failure "Port already in use")
-   with
-    Unix.Unix_error (Unix.ECONNREFUSED, _, _) -> ()
-  ) ;
-  match Unix.fork () with
-     0 ->
-       Unix.handle_unix_error
-        (function () ->
-          (* 1. We close all the open pipes to avoid duplicating them *)
-          Unix.close (Unix.descr_of_out_channel cmd_pipe) ;
-          Unix.close (Unix.descr_of_in_channel res_pipe) ;
-          Unix.close (Unix.descr_of_out_channel outchan) ;
-          (* 2. We redirect stdout and stderr to the logfile *)
-          Unix.close Unix.stdout ;
-          assert
-           (Unix.openfile logfile [Unix.O_WRONLY ; Unix.O_APPEND ; Unix.O_CREAT]
-             0o664 = Unix.stdout) ;
-          Unix.close Unix.stderr ;
-          assert
-           (Unix.openfile logfile [Unix.O_WRONLY ; Unix.O_APPEND ; Unix.O_CREAT]
-             0o664 = Unix.stderr) ;
-          prerr_endline "***** Starting a new session" ;
-          (* 3. We exec a new copy of uwobo *)
-          Unix.execve Sys.executable_name [||] environment ; 
-          (* It should never reach this point *)
-          assert false
-        ) ()
-   | child when child > 0 ->
-      (* let's check if the new UWOBO started correctly *)
-      Unix.sleep 5 ;
-      (* It can raise Failure "Connection refused" *)
-      (try
-        ignore
-          (Http_client.http_get
-            ("http://127.0.0.1:" ^ string_of_int port ^ "/help"))
-      with Unix.Unix_error (Unix.ECONNREFUSED, _, _) ->
-        raise (Failure "Connection refused"))
-   | _ -> failwith "Can't fork :-("
+ (* Let's check that the port is free *)
+ (try
+   ignore
+    (Http_client.http_get
+      ("http://127.0.0.1:" ^ string_of_int port ^ "/help")) ;
+   raise (Failure "Port already in use")
+  with
+   Unix.Unix_error (Unix.ECONNREFUSED, _, _) -> ()
+ ) ;
+ match Unix.fork () with
+    0 ->
+      Unix.handle_unix_error
+       (function () ->
+         (* 1. We close all the open pipes to avoid duplicating them *)
+         Unix.close (Unix.descr_of_out_channel cmd_pipe) ;
+         Unix.close (Unix.descr_of_in_channel res_pipe) ;
+         Unix.close (Unix.descr_of_out_channel outchan) ;
+         (* 2. We redirect stdout and stderr to the logfile *)
+         Unix.close Unix.stdout ;
+         assert
+          (Unix.openfile logfile [Unix.O_WRONLY ; Unix.O_APPEND ; Unix.O_CREAT]
+            0o664 = Unix.stdout) ;
+         Unix.close Unix.stderr ;
+         assert
+          (Unix.openfile logfile [Unix.O_WRONLY ; Unix.O_APPEND ; Unix.O_CREAT]
+            0o664 = Unix.stderr) ;
+         prerr_endline "***** Starting a new session" ;
+
+         (* 3. We set up a new environment *)
+         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.environment ()
+         in
+         (* 4. We exec a new copy of uwobo *)
+         Unix.execve Sys.executable_name [||] environment ; 
+         (* It should never reach this point *)
+         assert false
+       ) ()
+  | child when child > 0 ->
+     (* let's check if the new UWOBO started correctly *)
+     Unix.sleep 5 ;
+     (* It can raise Failure "Connection refused" *)
+     (try
+       ignore
+         (Http_client.http_get
+           ("http://127.0.0.1:" ^ string_of_int port ^ "/help"))
+     with Unix.Unix_error (Unix.ECONNREFUSED, _, _) ->
+       raise (Failure "Connection refused"))
+  | _ -> failwith "Can't fork :-("
 ;;
 
   (* request handler action