This is an automated email from the ASF dual-hosted git repository.
sebb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/whimsy.git
The following commit(s) were added to refs/heads/master by this push:
new d8b5a42 Obsolete
d8b5a42 is described below
commit d8b5a42df09a13bf7fbf07ff831430b63a2017e4
Author: Sebb <[email protected]>
AuthorDate: Wed Feb 9 17:53:41 2022 +0000
Obsolete
---
www/apmail/mods.cgi | 248 ----------------------------------------------------
1 file changed, 248 deletions(-)
diff --git a/www/apmail/mods.cgi b/www/apmail/mods.cgi
deleted file mode 100755
index 7b1e88e..0000000
--- a/www/apmail/mods.cgi
+++ /dev/null
@@ -1,248 +0,0 @@
-#!/usr/bin/env ruby
-
-$LOAD_PATH.unshift '/srv/whimsy/lib'
-require 'shellwords'
-require 'whimsy/asf'
-
-# TODO: determine apmail@hermes,wheel@hermes group membership
-# TODO: .members. checks are obsolete, but this script does not appear to be
usable anyway
-# as apmail and wheel don't exist, nor does /home/apmail/subscriptions/mods
-unless apmail.include? $USER or wheel.include? $USER
- pmc = ENV['PATH_INFO'][/\/([-\w]+)\.apache\.org\//,1]
- pmc &&= ASF::Committee.find(pmc)
- user = ASF::Person.find($USER)
- unless pmc and pmc.members.include? user
- print "Status: 401 Unauthorized\r\n"
- if pmc and not pmc.members.empty?
- print "WWW-Authenticate: Basic realm=\"#{pmc.display_name} PMC\"\r\n\r\n"
- else
- print "WWW-Authenticate: Basic realm=\"APMail\"\r\n\r\n"
- end
- exit
- end
-end
-
-mods = JSON.load(File.read('/home/apmail/subscriptions/mods'))
-
-_html do
- _head_ do
- _title 'ASF Mailing List Moderator administration'
- _script src: '/jquery-min.js'
- _style %{
- table {border-spacing: 1em 0.2em }
- thead th {border-bottom: solid black}
- tbody tr:hover {background-color: #FF8}
- label {display: block}
- .message {border: 1px solid #0F0; background-color: #CFC}
- .warn {border: 1px solid #F00; background-color: #FCC}
- .demo {border: 1px solid #F80; background-color: #FC0}
- .message, .warn, .demo {padding: 0.5em; border-radius: 1em}
- }
- end
-
- _body? do
- # common banner
- _a href: '/' do
- _img title: "Logo", alt: "Logo",
- src: "https://id.apache.org/img/asf_logo_wide.png"
- end
-
- _h2.demo "*** Demo mode - Changes aren't saved ***"
- _h1_ 'ASF Moderator administration'
-
- if ENV['PATH_INFO'] == '/'
-
- _h2_ 'Domains'
- _ul do
- _li! { _a 'apache.org', href: "apache.org/" }
- _li! { _a 'apachecon.com', href: "apachecon.com/" }
- end
- _ul do
- mods.keys.sort.each do |domain|
- next if %w(apache.org apachecon.com).include? domain
- _li! { _a domain.split('.').first, href: "#{domain}/" }
- end
- end
-
- elsif ENV['PATH_INFO'] == '/list'
-
- _h2 "ASF Mailing List moderators"
- emails = []
- mods.each do |_domain, lists|
- lists.each do |_list, moderators|
- emails += moderators.map(&:downcase)
- end
- end
-
- _ul do
- emails.uniq.sort.each do |email|
- _li! { _a email, href: email }
- end
- end
-
- elsif ENV['PATH_INFO'] =~ %r{@}
-
- email = env['PATH_INFO'][1..-1].downcase
- _h2 "Lists moderated by #{email}"
- _ul do
- mods.each do |domain, lists|
- lists.each do |list, moderators|
- if moderators.map(&:downcase).include? email
- _li! do
- _a "#{list}@#{domain}", href: "#{domain}/#{list}/"
- end
- end
- end
- end
- end
-
- elsif ENV['PATH_INFO'] =~ %r{^/([-.\w]*apache\w*\.\w+)/$}
-
- _h2_ "Mailing Lists - #{$1}"
- _ul do
- mods[$1].each_key do |list|
- _li! { _a list, href: "#{list}/" }
- end
- end
-
- elsif ENV['PATH_INFO'] =~ %r{^/([-.\w]*apache\w*\.\w+)/([-\w]+)/$}
-
- domain = $1
- list = $2
-
- if _.post? and @email.to_s.include? '@'
- if %w(sub unsub).include? @op
- person = ASF::Person.find_by_email(@email)
- op = (@op == 'sub' ? 'added' : 'removed')
- mods[domain][list] << @email if @op == 'sub'
- mods[domain][list].delete @email if @op == 'unsub'
- if person
- _p.message "#{person.public_name} was #{op} as a moderator."
- else
- _p.message "#{@email} was #{op} as a moderator."
- end
- end
- end
-
- apmail_bin = ASF::SVN['apmail_bin']
- archives = File.read(File.join(apmail_bin, '.archives'))
- archives = Hash[*JSON.parse('['+archives.sub(/,?\s*\Z/,']'))]
-
- pmc = domain.split('.').first
- listname = "#{pmc}-#{list}"
- href =
- if archives[listname]
- if archives[listname].include? '/apmail/public-arch/'
- "http://mail-archives.apache.org/mod_mbox/#{listname}"
- else
- user = ASF::Person.find($USER)
- if user.asf_member?
- "https://mail-search.apache.org/members/private-arch/#{listname}"
- elsif ASF::Committee.find(pmc).members.include? user
- "https://mail-search.apache.org/pmc/private-arch/#{listname}"
- end
- end
- end
-
- if href
- _h2_ {_a "#{list}@#{domain}", href: href}
- else
- _h2_ "#{list}@#{domain}"
- end
-
- _table_ do
- _thead_ do
- _tr do
- _th 'Email'
- _th 'Name'
- end
- end
- _tbody do
- mods[domain][list].sort.each do |email|
- person = ASF::Person.find_by_email(email.chomp)
- _tr_ do
- _td email.chomp
- _td! do
- if person
- href = "/roster/committer/#{person.id}"
- if person.asf_member?
- _strong { _a person.public_name, href: href }
- else
- _a person.public_name, href: href
- end
- else
- _em 'unknown'
- end
- end
- end
- end
- end
-
- if mods == ''
- _tr do
- _td(colspan: 2) {_em 'none'}
- end
- end
- end
-
- _h2 'Action'
- _form_ method: 'post' do
- _div style: 'float: left' do
- _label do
- _input type: 'radio', name: 'op', value: 'sub', required: true,
- checked: true
- _ 'Add'
- end
- _label do
- _input type: 'radio', name: 'op', value: 'unsub',
- disabled: (mods[domain][list].length <= 2)
- _ 'Remove'
- end
- end
- _input type: 'email', name: 'email', placeholder: 'email',
- required: true, style: 'margin-left: 1em; margin-top: 0.5em'
- end
-
- _script %{
- // Make click select the email to be removed
- $('tbody tr').click(function() {
- $('input[name=email]').val($('td:first', this).text()).focus();
- $('input:enabled[value=unsub]').prop('checked', true);
- });
-
- // Confirmation dialog
- var confirmed = false;
- $('form').submit(function() {
- if (confirmed) return true;
- var spinner = $('<img src="/spinner.gif"/>');
- $('input[name=email]').after(spinner);
- $.post('', $('form').serialize(), function(_) {
- if (confirm(_.prompt)) {
- confirmed = true;
- $('form').submit();
- }
- spinner.remove();
- }, 'json');
- return false;
- });
- }
- end
- end
-end
-
-_json do
- person = ASF::Person.find_by_email(@email)
- if @op == 'unsub'
- if person
- _prompt "Remove #{person.public_name} as a moderator?"
- else
- _prompt "Remove #{@email} as a moderator?"
- end
- else
- if person
- _prompt "Add #{person.public_name} as a moderator?"
- else
- _prompt "Unknown email. Add #{@email} as a moderator anyway?"
- end
- end
-end