COCANWIKI is now ~95% UTF-8 safe.
[cocanwiki.git] / scripts / crash.ml
index 2795efd..d5aa886 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: crash.ml,v 1.1 2004/10/09 15:01:58 rich Exp $
+ * $Id: crash.ml,v 1.6 2006/07/31 09:49:42 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
@@ -30,33 +30,38 @@ open Cocanwiki
 open Cocanwiki_template
 open Cocanwiki_server_settings
 
-let run r (q : cgi) (dbh : Dbi.connection) hostid _ _ =
+let run r (q : cgi) dbh hostid
+    { canonical_hostname = canonical_hostname } _ =
   let template = get_template dbh hostid "crash.html" in
   let crash_email = server_settings_crash_email dbh in
 
+  (* Get the current time and write it into the logs. *)
+  let time = Calendar.now () in
+  let time = Printer.CalendarPrinter.to_string time in
+  prerr_endline ("crash: " ^ time);
+
   (* Send a feedback email to the designated address if
    * server_settings.crash_email is set.
    *)
   let mail_sent =
     match crash_email with
-       None -> false
-      | Some email ->
-         (* Get the current time and write it into the logs. *)
-         let time = Unix.gmtime (Unix.time ()) in
-         let time =
-           sprintf "%04d/%02d/%02d %02d:%02d:%02d"
-           (time.Unix.tm_year + 1900) (time.Unix.tm_mon + 1) time.Unix.tm_mday
-           time.Unix.tm_hour time.Unix.tm_min time.Unix.tm_sec in
+    | None -> false
+    | Some email ->
+       let subject =
+         "Crash notify: There was a 500 internal server error" in
+       let body = "Crash at " ^ time ^ "\n" ^
+         "Hostname is " ^ canonical_hostname ^ "\n" ^
+         "Please see the error log for details." in
 
-         prerr_endline ("crash: " ^ time);
+       let to_addrs = ["", email] in
+       let content_type =
+         "text/plain", ["charset", Mimestring.mk_param "UTF-8"] in
 
-         let subject =
-           "Crash notify: There was a 500 internal server error" in
-         let body = "Crash at " ^ time ^ "\n" ^
-                    "Please see the error log for details." in
-         Sendmail.send_mail ~subject ~body ~to_addr:[email] ();
+       let msg =
+         Netsendmail.compose ~subject ~to_addrs ~content_type body in
+       Netsendmail.sendmail msg;
 
-         true in
+       true in
 
   template#conditional "mail_sent" mail_sent;