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

Reply via email to