(* 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
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;