# Example mauveserver.conf file, based on Bytemark's configuration.
# Probably still needs a bit of improvement and explanation.
#

# The service which listens for alert messages
#
server {
  # persistent data store, only sqlite3 supported at the moment
  database "sqlite3:///var/lib/mauvealert/alerts.db"

  listener {
    ip "0.0.0.0"
    port 32741
  }
  
  # default is probably more than enough!
  #transmission_id_expire_time 600

  # few options for web interface, just the TCP port number
  web_interface {
    ip "0.0.0.0"
    port 1288
    document_root  "/usr/share/mauvealert"
  }
}

logger {

  default_format "%d [ %6.6l ] [ %12.12c ] %m"

#  outputter("stdout") {
#    level    Log4r::DEBUG
#  }

  outputter("file") {
    filename "/var/log/mauve/mauveserver.log"
    trunc    false
    level    Log4r::DEBUG
  }

  outputter("email") {
    server       "outgoing.mx.bytemark.co.uk"
    subject      "Mauve logger output"
    from         "#{ENV['USER']}@#{Socket.gethostname}"
    to           "patrick@bytemark.co.uk"
    domain       "test.mauve.bytemark.co.uk"
    level        Log4r::WARN
  }

}

notification_method("email") {
  # email address to send from
  from "mauvealert@" + `hostname`.chomp
  # smarthost
  server "localhost"
  # add this to the subject of any emails we send
  subject_prefix "[mauve] "

  # for testing, enable this
  #deliver_to_file "/tmp/alerts.txt"  
}

# How to log into a jabber server
#
# notification_method("xmpp") {
#   jid "mauvealert@jabber.org/olympus"
#   password "WojIsEv8ScaufOm1"
# }

# How to notify by SMS - we use aql.com, you'll need to write a module
# to use any other provider.
#
# notification_method("sms") {
#   provider "AQL"
# 
#   username "x"
#   password "x"
#   from "01234567890"
#
#   # Maximum number of SMS messages to concatenate for one notification
#   max_messages_per_alert 3
# }

# Simple default notification preference for root at this machine, at all
# alert levels.  You probably want more people, see below for a more complete
# example.
# 
# Passwords are generated like so:
# ruby-1.8.7-p72 > require 'digest/sha1'                                                                                                                          
# => true                                                                                                                                                         
# ruby-1.8.7-p72 > sha1 = Digest::SHA1.hexdigest('my new super secure and easy to type on phone password')
# => "729cf161621400fa63fcb3b4750441390fbface2"
#
person("root") {
  all { email("root@localhost") }
}

# Johnny is the go-to guy for everything on this network, poor Johnny!
#
# person("johnny") {
#
#   # Johnny wants waking up 24/7 if anything urgent happens
#   urgent { sms("07111222333") }
#
#   # Email him for anything that's not urgent
#   normal { email("johnny@example.com") }
#
#   # Anything else can just be a jabber message, which he might miss.
#   # Email instead if he's unavailable/offline - but give it a try if
#   # we don't know his status.
#   low { xmpp("johnny@example.com.jabber.org", :if_presence => [:available, unknown]) || email("johnny@example.com") }
#
#   # SMS messages are expensive, if we're sending more than 5 per minute,
#   # tell the user we're going to stop until it slows down.
#   suppress_notifications_after 5 => 1.minute
#   # In general, this is too many notifications for Johnny
#   suppress_notifications_after 60 => 1.hour
# }

# Archie is Johnny's boss
#
# person("archie") {
#   all { email("archie@example.com") }
#
#   # Don't spam Archie, if more than 3 messages per hour come in.
#   suppress_notifications_after 3 => 1.hour
# }

# Here is a group of alerts generated by the core routers.  
# 
# alert_group {
#   level URGENT
#   includes { source == "core-router" }
#
#   # Johnny should get up and fix these errors very quickly, we will
#   # bother him every 15 minutes until he does.
#   # 
#   notify("johnny") { every 15.minutes }
#
#   # Archie only wants to know about these alerts if they have gone
#   # unacknowledged for a whole hour - Johnny must be slacking!  Even
#   # then he only needs to know during the working day.
#   #
#   notify("archie") { 
#     every 6.hours
#     during { unacknowledged(1.hour); hours_in_day(9..17) }
#   }
# }

# Default notification - tell root about all alerts every hour
# 
alert_group {
  level NORMAL
  notify("root") { every 1.hour }
}