diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 09:19:41 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 09:19:41 +0000 |
commit | a27c8b00ebf173659f22f53ce65679e94e7dfb1b (patch) | |
tree | 02c68ec259348b63c6328896aa73265eb7b3d730 /scripts/mail_expired.rb | |
parent | Initial commit. (diff) | |
download | debian-keyring-upstream.tar.xz debian-keyring-upstream.zip |
Adding upstream version 2022.12.24.upstream/2022.12.24upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'scripts/mail_expired.rb')
-rwxr-xr-x | scripts/mail_expired.rb | 69 |
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 |