Fixed to match ChriS's API changes to mod_caml.
[cocanwiki.git] / scripts / lib / cocanwiki.ml
index 4f21cc0..33eb3b5 100644 (file)
@@ -1,7 +1,7 @@
 (* COCANWIKI - a wiki written in Objective CAML.
  * Written by Richard W.M. Jones <rich@merjis.com>.
  * Copyright (C) 2004 Merjis Ltd.
- * $Id: cocanwiki.ml,v 1.3 2004/11/01 12:57:53 rich Exp $
+ * $Id: cocanwiki.ml,v 1.5 2005/03/31 14:24:04 rich Exp $
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -104,7 +104,13 @@ let register_script ?(restrict = []) ?(anonymous = true) run =
        *)
        let hostid, hostname, canonical_hostname, edit_anon, view_anon =
         let hostname = try Request.hostname r
-        with Not_found -> failwith "No ``Host:'' header in request" in
+        with Not_found ->
+          error ~back_button:true
+            ~title:"Browser problem" q
+            ("Your browser didn't send a \"Host\" header as part of " ^
+             "the HTTP request.  Unfortunately this web server cannot " ^
+             "handle HTTP requests without a \"Host\" header.");
+          return () in
         let hostname = String.lowercase hostname in
 
         let sth =
@@ -122,8 +128,13 @@ let register_script ?(restrict = []) ?(anonymous = true) run =
              | _ -> assert false)
         with
             Not_found ->
-              failwith ("Hostname ``" ^ hostname ^ "'' not found in " ^
-                        "the hosts/hostnames tables in the database.") in
+              error ~back_button:true
+                ~title:"Unknown website" q
+                ("No website called \"" ^ hostname ^ "\" can be found.  " ^
+                 "If you are the administrator of this site, check that " ^
+                 "the hostname is listed in the \"hostnames\" table " ^
+                 "in the database.");
+              return () in
 
        (* Create the host object. *)
        let host = { hostname = hostname;
@@ -143,8 +154,8 @@ let register_script ?(restrict = []) ?(anonymous = true) run =
              *)
             if q#param_exists "cookie" then (
               let value = q#param "cookie" in
-              let cookie = Cookie.cookie ~name:"auth" ~value ~path:"/" () in
-              Table.set (Request.headers_out r) "Set-Cookie" cookie#as_string;
+              let cookie = Cookie.cookie "auth" value ~path:"/" in
+              Table.set (Request.headers_out r) "Set-Cookie" cookie#to_string;
               value
             ) else (
               (* Normal cookie, from the headers. *)