[Checkins] SVN: zc.zopeorgkeyupload/branches/dev/s Added a script to move uploaded keys into home

Jim Fulton jim at zope.com
Fri May 2 09:18:54 EDT 2008


Log message for revision 86089:
  Added a script to move uploaded keys into home
  directories.
  

Changed:
  U   zc.zopeorgkeyupload/branches/dev/setup.py
  A   zc.zopeorgkeyupload/branches/dev/src/zc/zopeorgkeyupload/mvkey.py

-=-
Modified: zc.zopeorgkeyupload/branches/dev/setup.py
===================================================================
--- zc.zopeorgkeyupload/branches/dev/setup.py	2008-05-02 13:18:51 UTC (rev 86088)
+++ zc.zopeorgkeyupload/branches/dev/setup.py	2008-05-02 13:18:53 UTC (rev 86089)
@@ -19,6 +19,9 @@
 entry_points = """
 [zope.publisher.publication_factory]
 default = zc.zopeorgkeyupload:Publication
+
+[console_scripts]
+mvkey = zc.zopeorgkeyupload.mvkey:main
 """
 
 setup(

Added: zc.zopeorgkeyupload/branches/dev/src/zc/zopeorgkeyupload/mvkey.py
===================================================================
--- zc.zopeorgkeyupload/branches/dev/src/zc/zopeorgkeyupload/mvkey.py	                        (rev 0)
+++ zc.zopeorgkeyupload/branches/dev/src/zc/zopeorgkeyupload/mvkey.py	2008-05-02 13:18:53 UTC (rev 86089)
@@ -0,0 +1,58 @@
+import os
+import pwd
+import re
+import sys
+
+iskey = re.compile('-[12]$').search
+
+
+valid_groups = 'zopesvn', 'cvsusers'
+
+def main(args=None):
+    if args is None:
+        args = sys.argv[1:]
+
+    try:
+        [keydir, users] = args
+    except:
+        print 'Usage: %s key-drop-dir user-list-file' % sys.argv[0]
+        sys.exit(1)
+        
+    users = set(open(users).read().strip().split())
+    
+    for name in os.listdir(keydir):
+        if iskey(name):
+            keypath = os.path.join(keydir, name)
+            login, type_ = name.rsplit('-', 1)
+            try:
+                uid, gid, c, home = pwd.getpwnam(login)[2:6]
+            except KeyError:
+                print 'Invalid login', login
+                os.remove(keypath)
+                continue
+
+            if uid < 100 or gid < 100:
+                print 'Hack? System account', login
+                os.remove(keypath)
+                continue
+
+            if login not in users:
+                print 'Hack? Not in a valid user', login
+                os.remove(keypath)
+                continue
+
+            sshdir = os.path.join(home, '.ssh')
+            if not os.path.exists(sshdir):
+                os.mkdir(sshdir)
+                os.chown(sshdir, uid, gid)
+                os.chmod(sshdir, 0755)
+            
+            if type_ == '1':
+                dest = 'authorized_keys'
+            else:
+                dest = 'authorized_keys2'
+
+            dest = os.path.join(sshdir, dest)
+            os.rename(keypath, dest)
+            os.chown(dest, uid, gid)
+            os.chmod(dest, 0755)


Property changes on: zc.zopeorgkeyupload/branches/dev/src/zc/zopeorgkeyupload/mvkey.py
___________________________________________________________________
Name: svn:keywords
   + Id
Name: svn:eol-style
   + native



More information about the Checkins mailing list