You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@whimsical.apache.org by se...@apache.org on 2018/07/11 08:11:00 UTC

[whimsy] branch master updated: Add cross-check of LDAP members and owners

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 18ce055  Add cross-check of LDAP members and owners
18ce055 is described below

commit 18ce055215b1f98ccd7b18abfe7bfe41ae57de00
Author: Sebb <se...@apache.org>
AuthorDate: Wed Jul 11 09:10:58 2018 +0100

    Add cross-check of LDAP members and owners
---
 www/index.html               |  1 +
 www/secretary/ldap-check.cgi | 91 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 92 insertions(+)

diff --git a/www/index.html b/www/index.html
index 11e005e..8656e71 100644
--- a/www/index.html
+++ b/www/index.html
@@ -181,6 +181,7 @@
               <ul>
                 <li><a href="secretary/workbench/">Secretary Workbench</a></li>
                 <li><a href="secretary/icla-lint">Lint test for iclas.txt</a></li>
+                <li><a href="secretary/ldap-check">LDAP members and owners checks</a></li>
                 <li><a href="secretary/memapp_check">Check members.txt against members_apps</a></li>
                 <li><a href="secretary/public-names">Public names: LDAP vs icla.txt</a></li>
                 <li><a href="secretary/response-time">Response time test</a></li>
diff --git a/www/secretary/ldap-check.cgi b/www/secretary/ldap-check.cgi
new file mode 100755
index 0000000..6e50f3d
--- /dev/null
+++ b/www/secretary/ldap-check.cgi
@@ -0,0 +1,91 @@
+#!/usr/bin/env ruby
+
+=begin
+
+Compare LDAP lists
+
+project.memberids should agree with Group.memberids (if it exixts)
+project.ownerids should agree with Committee.memberids (if it exists)
+=end
+
+$LOAD_PATH.unshift '/srv/whimsy/lib'
+
+require 'whimsy/asf'
+require 'wunderbar'
+
+_html do
+  _style %{
+    table {border-collapse: collapse}
+    table, th, td {border: 1px solid black}
+    td {padding: 3px 6px}
+    tr:hover td {background-color: #FF8}
+    th {background-color: #a0ddf0}
+  }
+
+  _h1 'LDAP membership checks'
+
+  _p do
+    _ 'LDAP project members must agree with corresponding (unix) group members'
+    _ 'LDAP project owners must agree with corresponding committee members'
+    _ 'The lists below show the differences, if any'
+  end
+  
+  _table do
+    _tr do
+      _th 'Project'
+      _th 'GuineaPig?'
+      _th 'project members - group members'
+      _th 'group members - project members'
+      _th 'project owners - committee members'
+      _th 'committee-members - project owners'
+    end
+    projects = ASF::Project.list
+    
+    projects.sort_by(&:name).each do |p|
+      po_co=[]
+      co_po=[]
+      pm_um=[]
+      um_pm=[]
+      if c=ASF::Committee[p.name] # we have PMC 
+        po=p.ownerids
+        co=c.ownerids
+        po_co=po-co
+        co_po=co-po
+      end
+      if u=ASF::Group[p.name] # we have the unix group
+        pm=p.memberids
+        um=u.memberids
+        pm_um=pm-um
+        um_pm=um-pm
+      end
+      if pm_um.size > 0 or um_pm.size > 0 or po_co.size > 0 or co_po.size > 0
+        _tr do
+          _td do
+            _a p.name, href: '/roster/committee/' + p.name
+          end
+          _td ASF::Committee.isGuineaPig?(p.name)
+          _td do
+            pm_um.each do |id|
+              _a id, href: '/roster/committer/' + id
+            end
+          end
+          _td do
+            um_pm.each do |id|
+              _a id, href: '/roster/committer/' + id
+            end
+          end
+          _td do
+            po_co.each do |id|
+              _a id, href: '/roster/committer/' + id
+            end
+          end
+          _td do
+            co_po.each do |id|
+              _a id, href: '/roster/committer/' + id
+            end
+          end
+        end
+      end
+    end
+  end
+end
\ No newline at end of file