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/28 12:29:09 UTC

[whimsy] branch master updated: Compare cn, sn, givenName

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 d7a28b3  Compare cn, sn, givenName
d7a28b3 is described below

commit d7a28b34295784de207f0760e9f6321cad02eaf0
Author: Sebb <se...@apache.org>
AuthorDate: Sat Jul 28 13:29:07 2018 +0100

    Compare cn, sn, givenName
---
 www/index.html               |  1 +
 www/secretary/ldap-names.cgi | 81 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 82 insertions(+)

diff --git a/www/index.html b/www/index.html
index c52d060..4f114e4 100644
--- a/www/index.html
+++ b/www/index.html
@@ -184,6 +184,7 @@
                 <li><a href="secretary/ldap-check">LDAP members and owners checks (may take a while to respond)</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/ldap-names">LDAP name check: compare cn, sn, givenName</a></li>
                 <li><a href="secretary/response-time">Response time test</a></li>
               </ul>
             </div>
diff --git a/www/secretary/ldap-names.cgi b/www/secretary/ldap-names.cgi
new file mode 100755
index 0000000..6ab25a7
--- /dev/null
+++ b/www/secretary/ldap-names.cgi
@@ -0,0 +1,81 @@
+#!/usr/bin/env ruby
+
+=begin
+
+Check LDAP names: cn, sn, givenName
+
+Both givenName and sn should match part of cn
+
+=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 people name checks'
+
+  _p do
+    _ 'LDAP sn and givenName must match part of cn'
+    _br
+    _ 'The table below show the differences, if any'
+  end
+
+  # prefetch LDAP data
+  people = ASF::Person.preload(%w(uid cn sn givenName))
+  matches = 0
+
+  _table do
+    _tr do
+      _th 'uid'
+      _th 'cn'
+      _th 'givenName'
+      _th 'sn'
+    end
+
+    people.sort_by(&:name).each do |p|
+      given = p.givenName rescue '---' # some entries have not set this up
+      givenOK = p.cn.include? given
+      snOK = p.cn.include? p.sn
+      if givenOK and snOK
+        matches += 1
+        next
+      end
+      _tr do
+        _td do
+          _a p.uid, href: '/roster/committee/' + p.uid
+        end
+        _td do
+          _ p.cn
+        end
+        _td do
+          if givenOK
+            _ given
+          else
+            _em given
+          end
+        end
+        _td do
+          if snOK
+            _ p.sn
+          else
+            _em p.sn
+          end
+        end
+      end
+    end
+  end
+
+  _p do
+    _ "Total: #{people.size} Matches: #{matches}"
+  end
+end
\ No newline at end of file