From 2781233b2337c9642dcff8b59159dac7931ca48c Mon Sep 17 00:00:00 2001 From: Luciano Bello Date: Fri, 16 Jan 2015 23:21:35 +0000 Subject: unknown-packages: double check and DB update git-svn-id: svn+ssh://svn.debian.org/svn/secure-testing@31413 e39458fd-73e7-0310-bf30-c45bca0a0e42 --- check-external/unknown-packages-pts.py | 44 ---------------------- check-external/unknown-packages.py | 68 ++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+), 44 deletions(-) delete mode 100755 check-external/unknown-packages-pts.py create mode 100755 check-external/unknown-packages.py (limited to 'check-external') diff --git a/check-external/unknown-packages-pts.py b/check-external/unknown-packages-pts.py deleted file mode 100755 index 9f88147f21..0000000000 --- a/check-external/unknown-packages-pts.py +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/python -import urllib2 -import SOAPpy -import os -import string -import sys - -cache_file=os.path.join(os.path.dirname(os.path.abspath(__file__)),'known-unknown-packages.cache') -db_file=os.path.join(os.path.dirname(os.path.abspath(__file__)),'../data/security.db') - -def setup_paths(): - check_file = 'lib/python/debian_support.py' - path = os.getcwd() - while 1: - if os.path.exists("%s/%s" % (path, check_file)): - sys.path = [path + '/lib/python'] + sys.path - return path - idx = string.rfind(path, '/') - if idx == -1: - raise ImportError, "could not setup paths" - path = path[0:idx] -os.chdir(setup_paths()) - -import security_db - -try: - db = security_db.DB(db_file) - new_file = False -except security_db.SchemaMismatch: - os.unlink(db_file) - db = security_db.DB(db_file, verbose=True) - new_file = True - -ws = SOAPpy.SOAPProxy('https://packages.qa.debian.org/cgi-bin/soap-alpha.cgi') - -for pkg,bugs in db.getUnknownPackages(db.cursor()): - if not pkg in open(cache_file).read(): - try: - ws.versions(source=pkg) - except SOAPpy.faultType: - print pkg, - else: - with open(cache_file, 'a') as file: - file.write(pkg+"\n") diff --git a/check-external/unknown-packages.py b/check-external/unknown-packages.py new file mode 100755 index 0000000000..5156e99968 --- /dev/null +++ b/check-external/unknown-packages.py @@ -0,0 +1,68 @@ +#!/usr/bin/python +import urllib2 +import SOAPpy +import os +import string +import sys +import json + +cache_file=os.path.join(os.path.dirname(os.path.abspath(__file__)),'known-unknown-packages.cache') +db_file=os.path.join(os.path.dirname(os.path.abspath(__file__)),'../data/security.db') + +def setup_paths(): + check_file = 'lib/python/debian_support.py' + path = os.getcwd() + while 1: + if os.path.exists("%s/%s" % (path, check_file)): + sys.path = [path + '/lib/python'] + sys.path + return path + idx = string.rfind(path, '/') + if idx == -1: + raise ImportError, "could not setup paths" + path = path[0:idx] +os.chdir(setup_paths()) + +import security_db + +try: + db = security_db.DB(db_file) + new_file = False +except security_db.SchemaMismatch: + os.unlink(db_file) + db = security_db.DB(db_file, verbose=True) + new_file = True + +ws = SOAPpy.SOAPProxy('https://packages.qa.debian.org/cgi-bin/soap-alpha.cgi') + +def checkInPTS(pkg): + try: + ws.versions(source=pkg) + except SOAPpy.faultType: + return False + else: + return True + +def fromSources(pkg): + try: + data = json.load(urllib2.urlopen('http://sources.debian.net/api/src/%s/latest/' %pkg)) + except urllib2.HTTPError as e: + return [] + if 'error' in data: return [] + else: return data['pkg_infos']['suites'] + +def updateAs(pkg,suite,cursor): + kind = 'experimental' if suite == 'experimental' else 'gone:'+suite + print pkg,kind + cursor.execute("""UPDATE package_notes SET package_kind = ? WHERE package = ?""", (kind,pkg)) + +c=db.cursor() +pkgs=set([ i[0] for i in db.getUnknownPackages(c)]) +pkgs.add('whatpackage'); + +for pkg in pkgs: + suites = fromSources(pkg) + if len(suites) >0: + updateAs(pkg,suites[-1],c) + else: + if checkInPTS(pkg): updateAs(pkg,'n/a',c) + else: print 'UNKNOWN' -- cgit v1.2.3