]> git.pld-linux.org Git - projects/pld-ftp-admin.git/commitdiff
Sign all rpm files with asking for password only once.
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Wed, 5 Aug 2009 07:12:26 +0000 (07:12 +0000)
committerArkadiusz Miśkiewicz <arekm@maven.pl>
Wed, 5 Aug 2009 07:12:26 +0000 (07:12 +0000)
Changed files:
    bin/pfa-signpkg -> 1.9
    modules/sign.py -> 1.2

bin/pfa-signpkg
modules/sign.py

index d900386711419b827911fe78536ee362b3f95152..8b861821366659ac6f079672f14b758fc6cb1d46 100644 (file)
@@ -4,6 +4,7 @@
 import sys, os
 sys.path.insert(0, os.environ['HOME']+'/pld-ftp-admin/modules')
 import ftptree
+import getpass
 from common import checkdir
 import ftpio
 from config import sign_key
@@ -82,10 +83,11 @@ def chunk(seq, size, pad=None):
          yield seq[-mod:]
 
 print "Total %d files to sign" % len(sign)
+password = getpass.getpass("Enter signing password: ")
 try:
     for x in chunk(sign, 512):
         print "Signing %d files" % len(x)
-        signpkgs(x)
+        signpkgs(x, password)
 except OSError, e:
     print >>sys.stderr, "ERR: %s" % e
     exit(1)
index 8c1167af951e15f4637875183d1637148eb4e467..153ec67ea32a996d04f53edbdbbb6417524efa42 100644 (file)
@@ -2,8 +2,10 @@
 # vi: encoding=utf-8 ts=8 sts=4 sw=4 et
 
 import os
+import sys
 import rpm
 import subprocess
+import pexpect
 from config import sign_key
 
 def getSigInfo(hdr):
@@ -37,13 +39,22 @@ def is_signed(rpm_file):
 
     return sign_key == sigid[-len(sign_key):]
 
-def signpkgs(files):
+def signpkgs(files, password):
     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', '--define', '_signature gpg', '--define', '_gpg_name ' + sign_key] + files
-    rc = subprocess.call(cmd, stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE, close_fds = True)
+    os.putenv('LC_ALL', 'C')
+    args = ['--resign', '--define', '_signature gpg', '--define', '_gpg_name ' + sign_key] + files
+    child = pexpect.spawn('/bin/rpm', args)
+    child.logfile = sys.stderr
+    child.expect('Enter pass phrase:', timeout=30)
+    child.sendline(password)
+    child.expect(pexpect.EOF)
+    child.close()
+    rc = child.exitstatus
+    #cmd = ['/bin/rpm', '--resign', '--define', '_signature gpg', '--define', '_gpg_name ' + sign_key] + files
+    #rc = subprocess.call(cmd, stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE, close_fds = True)
     if rc != 0:
         raise OSError, 'package signing failed'
This page took 0.044265 seconds and 4 git commands to generate.