aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/control28
-rw-r--r--lib/mauve/alert.rb39
-rw-r--r--lib/mauve/alert_changed.rb15
-rw-r--r--lib/mauve/datamapper.rb7
-rw-r--r--lib/mauve/history.rb6
-rw-r--r--lib/mauve/server.rb15
-rw-r--r--lib/mauve/web_interface.rb13
-rw-r--r--test/bst_to_gmt.yaml531
-rw-r--r--test/tc_mauve_alert.rb21
9 files changed, 631 insertions, 44 deletions
diff --git a/debian/control b/debian/control
index e7019fb..48ef489 100644
--- a/debian/control
+++ b/debian/control
@@ -3,7 +3,7 @@ Maintainer: Matthew Bloch <matthew@bytemark.co.uk>
Uploaders: Patrick J Cherry <patrick@bytemark.co.uk>
Section: ruby
Priority: optional
-Build-Depends: ruby1.8, debhelper, cdbs, rdoc, txt2man, cdbs
+Build-Depends: ruby1.8, debhelper, cdbs, rdoc, txt2man, cdbs, libsetup-ruby1.8
Standards-Version: 3.9.1
Package: mauvealert-client
@@ -24,24 +24,20 @@ Architecture: all
Pre-Depends: libjs-jquery
Depends: mauvealert-common (>= 3.4.0),
adduser,
- ruby1.8 (>= 1.8.7),
- libhaml-ruby1.8 | haml,
+ libdm-core-ruby1.8 (>= 1.2.0),
+ libdm-migrations-ruby1.8 (>= 1.2.0),
+ libdm-serializer-ruby1.8 (>= 1.2.0),
+ libdm-sqlite-adapter-ruby1.8 (>= 1.2.0),
+ libdm-types-ruby1.8 (>= 1.2.0),
+ libdm-validations-ruby1.8 (>= 1.2.0),
+ libhaml-ruby1.8,
liblog4r-ruby1.8,
libredcloth-ruby1.8,
librmail-ruby1.8,
- libsinatra-ruby1.8,
- libuuidtools-ruby1.8,
- libwebrick-ruby1.8,
- libdm-core-ruby1.8,
- libdm-do-adapter-ruby1.8,
- libdm-migrations-ruby1.8,
- libdm-serializer-ruby1.8,
- libdm-sqlite-adapter-ruby1.8,
- libdo-sqlite3-ruby1.8,
- libdm-timestamps-ruby1.8,
- libdm-types-ruby1.8,
- libdm-validations-ruby1.8,
- thin1.8 | thin,
+ libsanitize-ruby1.8 (>= 2.0.3),
+ libsinatra-ruby1.8 (>= 1.0),
+ ruby1.8 (>= 1.8.7),
+ thin1.8 (>= 1.2.11),
libxmpp4r-ruby1.8,
${misc:Depends}
Suggests: mauvealert-client
diff --git a/lib/mauve/alert.rb b/lib/mauve/alert.rb
index 25cee54..37a8f2e 100644
--- a/lib/mauve/alert.rb
+++ b/lib/mauve/alert.rb
@@ -16,7 +16,7 @@ module Mauve
property :id, Serial
property :alert_id, Integer
- property :earliest, Time
+ property :earliest, EpochTime
belongs_to :alert, :model => "Alert"
# 1) Shame we can't get this called automatically from DataMapper.auto_upgrade!
@@ -28,7 +28,7 @@ module Mauve
# http://www.mail-archive.com/datamapper@googlegroups.com/msg02314.html
#
def self.create_view!
- the_distant_future = Time.now + 2000.days # it is the year 2000 - the humans are dead
+ the_distant_future = (Time.now + 2000.days).to_i # it is the year 2000 - the humans are dead
["BEGIN TRANSACTION",
"DROP VIEW IF EXISTS mauve_alert_earliest_dates",
"CREATE VIEW
@@ -76,21 +76,22 @@ module Mauve
property :detail, Text, :length=>65535
property :importance, Integer, :default => 50
- property :raised_at, Time
- property :cleared_at, Time
- property :updated_at, Time
- property :acknowledged_at, Time
+ property :raised_at, EpochTime
+ property :cleared_at, EpochTime
+ property :updated_at, EpochTime
+ property :acknowledged_at, EpochTime
property :acknowledged_by, String, :lazy => false
property :update_type, String, :lazy => false
- property :will_clear_at, Time
- property :will_raise_at, Time
- property :will_unacknowledge_at, Time
+ property :will_clear_at, EpochTime
+ property :will_raise_at, EpochTime
+ property :will_unacknowledge_at, EpochTime
has n, :changes, :model => AlertChanged
has n, :histories, :through => :alerthistory
has 1, :alert_earliest_date
+ before :valid?, :do_set_timestamps
before :save, :do_sanitize_html
before :save, :take_copy_of_changes
after :save, :notify_if_needed
@@ -204,7 +205,11 @@ module Mauve
attribute_set(key, Alert.clean_html(val))
end
end
-
+
+ def do_set_timestamps(context = :default)
+ self.updated_at = Time.now unless self.original_attributes.has_key?("updated_at")
+ end
+
# This is to stop datamapper inserting duff dates into the database.
#
def check_dates
@@ -255,7 +260,7 @@ module Mauve
h = History.new(:alerts => [self], :type => "update")
if self.update_type == "acknowledged"
- h.event = "ACKNOWLEDGEDuntil #{self.will_unacknowledge_at}"
+ h.event = "ACKNOWLEDGED until #{self.will_unacknowledge_at}"
h.user = self.acknowledged_by
elsif is_a_change
@@ -378,7 +383,7 @@ module Mauve
# Don't clear will_clear_at
self.update_type = "raised" if self.update_type.nil? or self.update_type != "changed" or self.original_attributes[Alert.properties[:update_type]] == "cleared"
end
-
+
unless save
logger.error("Couldn't save #{self}")
false
@@ -386,7 +391,7 @@ module Mauve
true
end
end
-
+
# Clear an alert at a specified time
#
# @param [Time] at The time at which the alert should be cleared.
@@ -576,7 +581,11 @@ module Mauve
# @return [NilClass]
def receive_update(update, reception_time = Time.now, ip_source="network")
- update = Proto::AlertUpdate.parse_from_string(update) unless update.kind_of?(Proto::AlertUpdate)
+ unless update.kind_of?(Proto::AlertUpdate)
+ new_update = Proto::AlertUpdate.new
+ new_update.parse_from_string(update)
+ update = new_update
+ end
alerts_updated = []
@@ -679,7 +688,7 @@ module Mauve
alert_db.importance = alert.importance if alert.importance != 0
- alert_db.updated_at = reception_time
+ alert_db.updated_at = reception_time
if alert_db.raised?
#
diff --git a/lib/mauve/alert_changed.rb b/lib/mauve/alert_changed.rb
index c36c4c8..9b2bea4 100644
--- a/lib/mauve/alert_changed.rb
+++ b/lib/mauve/alert_changed.rb
@@ -15,14 +15,23 @@ module Mauve
property :id, Serial
property :alert_id, Integer, :required => true
property :person, String, :required => true
- property :at, Time, :required => true
+ property :at, EpochTime, :required => true
property :was_relevant, Boolean, :required => true, :default => true
property :level, String, :required => true
property :update_type, String, :required => true
- property :remind_at, Time
+ property :remind_at, EpochTime, :required => false
belongs_to :alert
-
+
+ before :valid?, :do_set_timestamps
+
+ protected
+
+ def do_set_timestamps(context = :default)
+ self.at = Time.now unless self.original_attributes.has_key?("at")
+ end
+
+ public
# @return [String]
def to_s
diff --git a/lib/mauve/datamapper.rb b/lib/mauve/datamapper.rb
index 12f95dc..abf56c7 100644
--- a/lib/mauve/datamapper.rb
+++ b/lib/mauve/datamapper.rb
@@ -4,12 +4,11 @@
#
#
require 'dm-core'
-require 'dm-validations'
+require 'dm-migrations'
+require 'dm-serializer'
require 'dm-sqlite-adapter-with-mutex'
require 'dm-types'
-require 'dm-serializer'
-require 'dm-migrations'
-require 'dm-timestamps'
+require 'dm-validations'
# DataMapper::Model.raise_on_save_failure = true
diff --git a/lib/mauve/history.rb b/lib/mauve/history.rb
index d9ab8e9..bcdd41a 100644
--- a/lib/mauve/history.rb
+++ b/lib/mauve/history.rb
@@ -80,11 +80,11 @@ module Mauve
property :type, String, :required => true, :default => "unknown", :lazy => false
property :event, Text, :required => true, :default => "Nothing set", :lazy => false
property :user, String
- property :created_at, Time, :required => true
+ property :created_at, EpochTime, :required => true
has n, :alerts, :through => :alerthistory
- before :valid?, :set_created_at
+ before :valid?, :do_set_created_at
before :save, :do_sanitize_html
protected
@@ -110,7 +110,7 @@ module Mauve
# Update the created_at time on the object
#
- def set_created_at(context = :default)
+ def do_set_created_at(context = :default)
self.created_at = Time.now unless self.created_at.is_a?(Time)
end
diff --git a/lib/mauve/server.rb b/lib/mauve/server.rb
index 41a76dc..233695d 100644
--- a/lib/mauve/server.rb
+++ b/lib/mauve/server.rb
@@ -108,14 +108,25 @@ module Mauve
#
# Update any tables.
#
- Mauve.constants.each do |c|
+ Mauve.constants.each do |c|
next if %w(AlertEarliestDate).include?(c)
m = Mauve.const_get(c)
- m.auto_upgrade! if m.respond_to?("auto_upgrade!")
+ next unless m.respond_to?("auto_upgrade!")
+ m.auto_upgrade!
#
# Don't want to use automigrate, since this trashes the tables.
#
# m.auto_migrate! if m.respond_to?("auto_migrate!")
+ #
+ #
+ m.properties.each do |prop|
+ next unless prop.is_a?(DataMapper::Property::EpochTime)
+ logger.info("Updating #{c}.#{prop.name}")
+ statement = "UPDATE mauve_#{DataMapper::Inflector.tableize(c)} SET #{prop.name} = strftime(\"%s\",#{prop.name}) WHERE #{prop.name} LIKE \"%-%-%\";"
+ DataMapper.repository(:default).adapter.execute("BEGIN TRANSACTION;")
+ DataMapper.repository(:default).adapter.execute(statement)
+ DataMapper.repository(:default).adapter.execute("COMMIT TRANSACTION;")
+ end
end
AlertHistory.migrate!
diff --git a/lib/mauve/web_interface.rb b/lib/mauve/web_interface.rb
index 716aaf3..b998ad8 100644
--- a/lib/mauve/web_interface.rb
+++ b/lib/mauve/web_interface.rb
@@ -5,7 +5,18 @@ require 'json'
require 'mauve/authentication'
-require 'sinatra/tilt'
+tilt_lib = "tilt"
+begin
+ require tilt_lib
+rescue LoadError => ex
+ if tilt_lib == "tilt"
+ tilt_lib = "sinatra/tilt"
+ retry
+ end
+
+ raise ex
+end
+
require 'sinatra/base'
require 'sinatra-partials'
diff --git a/test/bst_to_gmt.yaml b/test/bst_to_gmt.yaml
new file mode 100644
index 0000000..9beba52
--- /dev/null
+++ b/test/bst_to_gmt.yaml
@@ -0,0 +1,531 @@
+---
+- - !binary |
+ CIGtjfXBidCdLxIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EJOssvUEGLunsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkC7p7L1BA==
+
+ - 2011-10-30 01:00:59 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CNqN9tre2LzJIRIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0ENKssvUEGPqnsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkD6p7L1BA==
+
+ - 2011-10-30 01:02:02 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ COPg8rupw4WNNBIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EIOusvUEGKupsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkCrqbL1BA==
+
+ - 2011-10-30 01:04:59 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CJvH9u+o6r34PxIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EO6usvUEGJaqsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkCWqrL1BA==
+
+ - 2011-10-30 01:06:46 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CLmy3Kig9ZLtbRIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EOqvsvUEGJKrsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkCSq7L1BA==
+
+ - 2011-10-30 01:08:50 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CMHTufKazojGShIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EMKwsvUEGOqrsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkDqq7L1BA==
+
+ - 2011-10-30 01:10:18 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CN30w9mX8/mgQBIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0ELOxsvUEGNussvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkDbrLL1BA==
+
+ - 2011-10-30 01:12:11 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ COyfjdKqnuXjIxIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EKOysvUEGMutsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkDLrbL1BA==
+
+ - 2011-10-30 01:14:03 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CILniMKzp+OpLhIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0ELWzsvUEGN2usvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkDdrrL1BA==
+
+ - 2011-10-30 01:16:29 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CNee8on82/2oYRIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EJS0svUEGLyvsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkC8r7L1BA==
+
+ - 2011-10-30 01:18:04 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CKXWm/3F1pO3HBIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EJ21svUEGMWwsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkDFsLL1BA==
+
+ - 2011-10-30 01:20:21 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CO/pvpGIp62bBBIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0ELO2svUEGNuxsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkDbsbL1BA==
+
+ - 2011-10-30 01:22:52 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ COjh0r7CvPX+SRIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EKe3svUEGM+ysvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkDPsrL1BA==
+
+ - 2011-10-30 01:24:47 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ COvzjJrnk9ubEhIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EKG4svUEGMmzsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkDJs7L1BA==
+
+ - 2011-10-30 01:26:49 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CI2ygZH5ptGDGhIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EPW4svUEGJ20svUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkCdtLL1BA==
+
+ - 2011-10-30 01:28:13 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CL3l5o7LgpTrCxIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EPm5svUEGKG1svUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkChtbL1BA==
+
+ - 2011-10-30 01:30:25 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CJvly9bGytPuWhIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EPW6svUEGJ22svUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkCdtrL1BA==
+
+ - 2011-10-30 01:32:29 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CP7qw92Qqp+DXBIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0ENG7svUEGPm2svUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkD5trL1BA==
+
+ - 2011-10-30 01:34:01 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CP792a+2nu+CRhIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EOC8svUEGIi4svUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkCIuLL1BA==
+
+ - 2011-10-30 01:36:24 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CK+A/rSb9Y70JxIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0ENG9svUEGPm4svUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkD5uLL1BA==
+
+ - 2011-10-30 01:38:17 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CKLj19unkcHDXBIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0ENK+svUEGPq5svUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkD6ubL1BA==
+
+ - 2011-10-30 01:40:26 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CLiAl/y9zaPsNRIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EOK/svUEGIq7svUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkCKu7L1BA==
+
+ - 2011-10-30 01:42:50 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CMLH3JuKhI+hAhIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0ENnAsvUEGIG8svUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkCBvLL1BA==
+
+ - 2011-10-30 01:44:49 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CNzj3NrtpKm0KBIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EKTBsvUEGMy8svUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkDMvLL1BA==
+
+ - 2011-10-30 01:46:04 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CM2I8Ojuoqv5aRIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EJDEsvUEGLi/svUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkC4v7L1BA==
+
+ - 2011-10-30 01:52:08 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CI2+3qmcr6fwaBIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EJLFsvUEGLrAsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkC6wLL1BA==
+
+ - 2011-10-30 01:54:18 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CLjG4eGfsa26IRIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EKLGsvUEGMrBsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkDKwbL1BA==
+
+ - 2011-10-30 01:56:42 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CLeKg+G84vfIShIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EPjGsvUEGKDCsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkCgwrL1BA==
+
+ - 2011-10-30 01:58:08 +01:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CMfz56zZ3L26PRIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EOrHsvUEGJLDsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkCSw7L1BA==
+
+ - 2011-10-30 01:00:02 +00:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CPDv2/GpnNSQFhIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EPXIsvUEGJ3EsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkCdxLL1BA==
+
+ - 2011-10-30 01:02:21 +00:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CJXtqJ6zpd3GUxIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EPnJsvUEGKHFsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkChxbL1BA==
+
+ - 2011-10-30 01:04:33 +00:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CJrLnOHgquzIMRIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EOTKsvUEGIzGsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkCMxrL1BA==
+
+ - 2011-10-30 01:06:20 +00:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CLXhxeWlj+fNRBIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EPbLsvUEGJ7HsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkCex7L1BA==
+
+ - 2011-10-30 01:08:46 +00:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ COS+o/ujhdrjcRIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EPTMsvUEGJzIsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkCcyLL1BA==
+
+ - 2011-10-30 01:10:52 +00:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CNGJq4LxscK8fBIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EMPNsvUEGOvIsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkDryLL1BA==
+
+ - 2011-10-30 01:12:11 +00:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CLqiv/XDo6C4dxIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EOvOsvUEGJPKsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkCTyrL1BA==
+
+ - 2011-10-30 01:14:59 +00:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CN2d/pWcq/TfXBIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EM3PsvUEGPXKsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkD1yrL1BA==
+
+ - 2011-10-30 01:16:37 +00:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CK+mirHyut+/UxIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EKrQsvUEGNLLsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkDSy7L1BA==
+
+ - 2011-10-30 01:18:10 +00:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CIG01qO1y7ftcxIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EMfRsvUEGO/MsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkDvzLL1BA==
+
+ - 2011-10-30 01:20:47 +00:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CIXM/JvGtoX+LxIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EJ7SsvUEGMbNsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkDGzbL1BA==
+
+ - 2011-10-30 01:22:14 +00:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CKGM366BkdrbBhIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EKfTsvUEGM/OsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkDPzrL1BA==
+
+ - 2011-10-30 01:24:31 +00:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CJeegJD1pYztYhIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0ELvUsvUEGOPPsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkDjz7L1BA==
+
+ - 2011-10-30 01:26:59 +00:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CLjZwZa86+r0MBIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EI/VsvUEGLfQsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkC30LL1BA==
+
+ - 2011-10-30 01:28:23 +00:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CLuZn/+xhP/4RBIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EJfWsvUEGL/RsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkC/0bL1BA==
+
+ - 2011-10-30 01:30:39 +00:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CNGbh6GuysWTJhIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EI7XsvUEGLbSsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkC20rL1BA==
+
+ - 2011-10-30 01:32:38 +00:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ COPvpcTwvvSzMhIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EPnXsvUEGKHTsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkCh07L1BA==
+
+ - 2011-10-30 01:34:25 +00:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CMuqyePzsbbaNRIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EITZsvUEGKzUsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkCs1LL1BA==
+
+ - 2011-10-30 01:36:44 +00:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CKP26o/7g/rpAhIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0ENfZsvUEGP/UsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkD/1LL1BA==
+
+ - 2011-10-30 01:38:07 +00:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CPiQrJqp7ODFbRIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EPDasvUEGJjWsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkCY1rL1BA==
+
+ - 2011-10-30 01:40:40 +00:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CNjqj8qT143lORIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EO7bsvUEGJbXsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkCW17L1BA==
+
+ - 2011-10-30 01:42:46 +00:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CJ7w08TBiajLcBIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0ELncsvUEGOHXsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkDh17L1BA==
+
+ - 2011-10-30 01:44:01 +00:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ COj72fL3mKrMaxIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EMjdsvUEGPDYsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkDw2LL1BA==
+
+ - 2011-10-30 01:46:24 +00:00
+ - "::ffff:89.16.188.31"
+- - !binary |
+ CJHPq+fw5fvJQxIXbnV0aGF0Y2guYnl0ZW1hcmsuY28udWsYACK9AQoJaGVh
+ cnRiZWF0EKresvUEGNLZsvUEKixoZWFydGJlYXQgZmFpbGVkIGZvciBudXRo
+ YXRjaC5ieXRlbWFyay5jby51azJ2PHA+VGhlIGhlYXJ0YmVhdCB3YXNuJ3Qg
+ c2VudCBmb3IgdGhlIGhvc3QgbnV0aGF0Y2guYnl0ZW1hcmsuY28udWs8L3A+
+ PHA+VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgaG9zdCBtaWdodCBiZSBkb3du
+ PC9wPkDS2bL1BA==
+
+ - 2011-10-30 01:48:02 +00:00
+ - "::ffff:89.16.188.31"
diff --git a/test/tc_mauve_alert.rb b/test/tc_mauve_alert.rb
index a9aef5f..2b8af6f 100644
--- a/test/tc_mauve_alert.rb
+++ b/test/tc_mauve_alert.rb
@@ -272,4 +272,25 @@ EOF
#
end
+ def test_heartbeats_during_clock_change
+
+ updates = YAML.load_file(File.join(File.dirname(__FILE__),"bst_to_gmt.yaml"))
+
+ Timecop.freeze(updates.first[1]-20.minutes)
+ Configuration.current = ConfigurationBuilder.parse(@test_config)
+ Server.instance.setup
+ assert_equal(Time.now, Server.instance.started_at)
+
+ updates.each do |update, received_at, source_ip|
+ Timecop.freeze(received_at)
+ Alert.receive_update(update, received_at, source_ip)
+ alert = Alert.first
+ assert(alert.cleared?)
+ alert.poll
+ assert(alert.cleared?)
+ assert(0, Server.instance.notification_buffer.length)
+ end
+
+ end
+
end