]> git.pld-linux.org Git - projects/pld-ftp-admin.git/commitdiff
- use sign module
authorElan Ruusamäe <glen@pld-linux.org>
Wed, 27 May 2009 19:26:05 +0000 (19:26 +0000)
committerElan Ruusamäe <glen@pld-linux.org>
Wed, 27 May 2009 19:26:05 +0000 (19:26 +0000)
Changed files:
    bin/pfa-signpkg -> 1.4

bin/pfa-signpkg

index da66759f2dc2fb4cd48f3b886f8a2185a26788b5..5b7803b2fa3fa4a4ae06a142157c2d2a48f03fdc 100644 (file)
@@ -7,8 +7,7 @@ import ftptree
 from common import checkdir
 import ftpio
 from config import sign_key
-import rpm
-import subprocess
+from sign import is_signed, signpkgs
 
 if len(sys.argv) < 3:
     print >>sys.stderr, "ERR: not enough parameters given"
@@ -27,67 +26,28 @@ if not ftpio.lock(sys.argv[1], True):
     print "ERR: %s tree already locked" % sys.argv[1]
     sys.exit(1)
 
-def getSigInfo(hdr):
-    """checks signature from an hdr hand back signature information and/or
-       an error code"""
-    # yum-3.2.22/rpmUtils/miscutils.py
-
-    string = '%|DSAHEADER?{%{DSAHEADER:pgpsig}}:{%|RSAHEADER?{%{RSAHEADER:pgpsig}}:{%|SIGGPG?{%{SIGGPG:pgpsig}}:{%|SIGPGP?{%{SIGPGP:pgpsig}}:{(none)}|}|}|}|'
-    siginfo = hdr.sprintf(string)
-    if siginfo == '(none)':
-        return None
-   
-    return siginfo.split(',')[2].lstrip()
-
-
-def is_signed(rpm_file, key):
-    """Returns rpm information is package signed by the same key"""
-    # http://code.activestate.com/recipes/306705/
-    ts = rpm.ts()
-    ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES)
-    fdno = os.open(rpm_file, os.O_RDONLY)
-    hdr = ts.hdrFromFdno(fdno)
-    os.close(fdno)
-
-    sigid = getSigInfo(hdr)
-    if sigid == None:
-        return None
-
-    return key == sigid[-len(key):]
-
-def signpkgs(files):
-    if not os.path.isfile('/usr/bin/gpg'):
-        raise OSError, 'Missing gnupg binary'
-    if not os.path.isfile('/bin/rpm'):
-        raise OSError, 'Missing rpm binary'
-
-    cmd = ['/bin/rpm', '--resign']
-    cmd += files
-    rc = subprocess.call(cmd, stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE, close_fds = True)
-    if rc != 0:
-        print >>sys.stderr, "package signing failed"
-        sys.exit(rc)
-
+files = []
 try:
-    tree = ftptree.FtpTree(sys.argv[1]) #, loadall=True)
+    tree = ftptree.FtpTree(sys.argv[1])
     tree.mark4moving(sys.argv[2:])
     files = tree.rpmfiles()
 
-    print "Checking signatures of %d files from %d packages" % (len(files), len(tree.loadedpkgs))
-    sign = []
-    for file in files:
-        if not is_signed(file, sign_key):
-            sign.append(file)
-
-    if len(sign) > 0:
-        print "Signing %d packages" % len(sign)
-        signpkgs(sign)
-    else:
-        print "No packages to sign"
-
 except ftptree.SomeError:
     # In case of problems we need to unlock the tree before exiting
     ftpio.unlock(sys.argv[1])
     sys.exit(1)
 
 ftpio.unlock(sys.argv[1])
+
+print "Checking signatures of %d files from %d packages" % (len(files), len(tree.loadedpkgs))
+sign = []
+for file in files:
+    if not is_signed(file):
+        sign.append(file)
+
+if len(sign) == 0:
+    print "No packages to sign"
+    sys.exit(0)
+
+print "Signing %d files" % len(sign)
+signpkgs(sign)
This page took 0.122929 seconds and 4 git commands to generate.