COCANWIKI is now ~95% UTF-8 safe.
[cocanwiki.git] / scripts / crash.ml
index 232ec4b..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.4 2005/03/31 14:24:04 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,18 +30,14 @@ 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 = 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
-
+  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
@@ -49,16 +45,23 @@ let run r (q : cgi) (dbh : Dbi.connection) hostid
    *)
   let mail_sent =
     match crash_email with
-       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
-         Sendmail.send_mail ~subject ~to_addr:[email] body;
+    | 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
+
+       let to_addrs = ["", email] in
+       let content_type =
+         "text/plain", ["charset", Mimestring.mk_param "UTF-8"] in
+
+       let msg =
+         Netsendmail.compose ~subject ~to_addrs ~content_type body in
+       Netsendmail.sendmail msg;
 
-         true in
+       true in
 
   template#conditional "mail_sent" mail_sent;