summaryrefslogtreecommitdiffstats
path: root/scripts/mail_expired.rb
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xscripts/mail_expired.rb69
1 files changed, 69 insertions, 0 deletions
diff --git a/scripts/mail_expired.rb b/scripts/mail_expired.rb
new file mode 100755
index 0000000..f0124c7
--- /dev/null
+++ b/scripts/mail_expired.rb
@@ -0,0 +1,69 @@
+#!/usr/bin/ruby
+# coding: utf-8
+require 'yaml'
+
+ARGV[0] == '--send' or
+ raise RuntimeError, 'This will send many mails! Are you sure? Tell me to "--send"'
+
+%w(debian-keyring-gpg debian-maintainers-gpg debian-nonupload-gpg .git).each do |ck|
+ Dir.exists?(ck) or raise RuntimeError, 'Please run this script from the base keyring-maint git tree'
+end
+
+data = `make test`.split(/\n/).select {|lin| lin=~/expired on/}
+keys = {}
+expired_keys = {'keyring' => [],
+ 'maintainers' => [],
+ 'nonupload' => []}
+
+File.open('keyids','r') do |f|
+ f.readlines.each do |l|
+ l=~/^(0x[\dABCDEF]+) (.+) <(.+)>$/; keys[$1] = [$2,$3]
+ end
+end
+
+data.each do |l|
+ l=~/debian-(\w+).gpg:\s*(0x[\dABCDEF]+) expired on (.+) \(\)\s*$/
+ persondata = keys[$2] || ['NM (?)', nil]
+ expired_keys[$1] << {:key => $2, :name => persondata[0], :login => persondata[1], :date => $3}
+end
+
+proposed_exp = (Time.now + 2*365*86400).strftime '%a %d %b %Y %I:%M:%S %p %Z'
+expired_keys.each do |keyring, exp_k|
+ next if keyring == 'maintainers'
+ exp_k.each do |key|
+ IO.popen('mutt %s@debian.org -c keyring-maint@debian.org -s "Expired key in Debian -- %s (since %s)" -H -' %
+ [key[:login], key[:key], key[:date]], 'w') do |f|
+
+ f.puts 'From: Debian Keyring Maintainers <keyring-maint@debian.org>
+
+Hello %s <%s@debian.org>,
+
+According to our records, your key «%s», part of the Debian
+%s keyring, is expired since %s — Which means you will
+be, among other issues, not able to perform package uploads or vote in GRs!
+
+Please review your key\'s expiry date setting it to a sensible date in
+the future, and send it to our HKP server:
+
+ $ gpg --edit-key %s
+ (...)
+ gpg> expire
+ (...)
+ Key is valid for? (0) 2y
+ Key expires at %s
+ Is this correct? (y/N) y
+ (...)
+ gpg> save
+ $ gpg --keyserver keyring.debian.org --send-key %s
+
+And we will include it in our next keyring push (due towards the end
+of each month).
+
+Thanks,
+
+ - Gunnar Wolf
+ on behalf of the keyring maintenance team
+' % [ key[:name], key[:login], key[:key], keyring, key[:date], key[:key], proposed_exp, key[:key] ]
+ end
+ end
+end