X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=scripts%2Flib%2Fcocanwiki.ml;h=33eb3b5ebbb45d2bccc3183cd93b11f2580aab17;hb=295f2cde3f43ccf7f775d39b95925e10aa4c37cb;hp=553c03a7e3e733e963625a5efac36d8fbfb6f5dd;hpb=c5f822d1ca81042a8c0be2955668b0abebf1b11c;p=cocanwiki.git diff --git a/scripts/lib/cocanwiki.ml b/scripts/lib/cocanwiki.ml index 553c03a..33eb3b5 100644 --- a/scripts/lib/cocanwiki.ml +++ b/scripts/lib/cocanwiki.ml @@ -1,7 +1,7 @@ (* COCANWIKI - a wiki written in Objective CAML. * Written by Richard W.M. Jones . * Copyright (C) 2004 Merjis Ltd. - * $Id: cocanwiki.ml,v 1.2 2004/10/30 10:16:10 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 @@ -53,7 +53,6 @@ type permissions_t = CanView | CanEdit | CanManageUsers | CanManageContacts type prefs_t = { email : string option; (* Email address. *) email_notify : bool; (* Email notification. *) - diff_sidebyside : bool; (* Shows diffs side-by-side. *) } (* The "user object". *) @@ -105,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 = @@ -123,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; @@ -144,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. *) @@ -161,7 +171,7 @@ let register_script ?(restrict = []) ?(anonymous = true) run = "select u.id, u.name, u.can_edit, u.can_manage_users, u.can_manage_contacts, u.can_manage_site, u.can_edit_global_css, u.can_import_mail, - u.email, u.email_notify, u.diff_sidebyside + u.email, u.email_notify from usercookies uc, users u where uc.cookie = ? and uc.userid = u.id and u.hostid = ?" in sth#execute [`String cookie; `Int hostid]; @@ -170,8 +180,7 @@ let register_script ?(restrict = []) ?(anonymous = true) run = `Bool can_edit; `Bool can_manage_users; `Bool can_manage_contacts; `Bool can_manage_site; `Bool can_edit_global_css; `Bool can_import_mail; - (`Null | `String _) as email; `Bool email_notify; - `Bool diff_sidebyside ] -> + (`Null | `String _) as email; `Bool email_notify ] -> (* Every logged in user can view. *) let perms = [CanView] in let perms = @@ -198,8 +207,7 @@ let register_script ?(restrict = []) ?(anonymous = true) run = `Null -> None | `String email -> Some email in let prefs = { email = email; - email_notify = email_notify; - diff_sidebyside = diff_sidebyside } in + email_notify = email_notify; } in User (userid, name, perms, prefs) | _ -> assert false) with