Hackfut Security File Manager
Current Path:
/usr/lib/python2.6/site-packages/yum
usr
/
lib
/
python2.6
/
site-packages
/
yum
/
📁
..
📄
Errors.py
(3.69 KB)
📄
Errors.pyc
(7.99 KB)
📄
Errors.pyo
(7.99 KB)
📄
__init__.py
(233.6 KB)
📄
__init__.pyc
(152.87 KB)
📄
__init__.pyo
(152.7 KB)
📄
callbacks.py
(4.56 KB)
📄
callbacks.pyc
(5.15 KB)
📄
callbacks.pyo
(5.15 KB)
📄
comps.py
(20.28 KB)
📄
comps.pyc
(17.16 KB)
📄
comps.pyo
(17.16 KB)
📄
config.py
(36.42 KB)
📄
config.pyc
(36.59 KB)
📄
config.pyo
(36.59 KB)
📄
constants.py
(4.59 KB)
📄
constants.pyc
(3.49 KB)
📄
constants.pyo
(3.49 KB)
📄
depsolve.py
(63.98 KB)
📄
depsolve.pyc
(38.71 KB)
📄
depsolve.pyo
(38.66 KB)
📄
failover.py
(3.29 KB)
📄
failover.pyc
(3.51 KB)
📄
failover.pyo
(3.51 KB)
📄
history.py
(61 KB)
📄
history.pyc
(53.7 KB)
📄
history.pyo
(53.49 KB)
📄
i18n.py
(20.2 KB)
📄
i18n.pyc
(16.13 KB)
📄
i18n.pyo
(16.13 KB)
📄
logginglevels.py
(7.8 KB)
📄
logginglevels.pyc
(6.46 KB)
📄
logginglevels.pyo
(6.46 KB)
📄
mdparser.py
(6.26 KB)
📄
mdparser.pyc
(7.63 KB)
📄
mdparser.pyo
(7.63 KB)
📄
metalink.py
(9.28 KB)
📄
metalink.pyc
(8.93 KB)
📄
metalink.pyo
(8.86 KB)
📄
misc.py
(35.86 KB)
📄
misc.pyc
(36.06 KB)
📄
misc.pyo
(36.02 KB)
📄
packageSack.py
(40.9 KB)
📄
packageSack.pyc
(42.36 KB)
📄
packageSack.pyo
(42.36 KB)
📄
packages.py
(80.56 KB)
📄
packages.pyc
(77.75 KB)
📄
packages.pyo
(77.71 KB)
📄
parser.py
(7.62 KB)
📄
parser.pyc
(6.39 KB)
📄
parser.pyo
(6.39 KB)
📄
pgpmsg.py
(53.14 KB)
📄
pgpmsg.pyc
(38.67 KB)
📄
pgpmsg.pyo
(38.67 KB)
📄
pkgtag_db.py
(4.84 KB)
📄
pkgtag_db.pyc
(5.09 KB)
📄
pkgtag_db.pyo
(5.09 KB)
📄
plugins.py
(24.5 KB)
📄
plugins.pyc
(25.77 KB)
📄
plugins.pyo
(25.77 KB)
📄
repoMDObject.py
(9.85 KB)
📄
repoMDObject.pyc
(8.42 KB)
📄
repoMDObject.pyo
(8.42 KB)
📄
repos.py
(13.97 KB)
📄
repos.pyc
(15.46 KB)
📄
repos.pyo
(15.42 KB)
📄
rpmsack.py
(67.15 KB)
📄
rpmsack.pyc
(57.08 KB)
📄
rpmsack.pyo
(56.94 KB)
📄
rpmtrans.py
(24.42 KB)
📄
rpmtrans.pyc
(22.95 KB)
📄
rpmtrans.pyo
(22.89 KB)
📄
sqlitesack.py
(69.71 KB)
📄
sqlitesack.pyc
(54.47 KB)
📄
sqlitesack.pyo
(54.05 KB)
📄
sqlutils.py
(6.27 KB)
📄
sqlutils.pyc
(5.65 KB)
📄
sqlutils.pyo
(5.65 KB)
📄
transactioninfo.py
(31.26 KB)
📄
transactioninfo.pyc
(29.02 KB)
📄
transactioninfo.pyo
(29.02 KB)
📄
update_md.py
(24.13 KB)
📄
update_md.pyc
(20.8 KB)
📄
update_md.pyo
(20.8 KB)
📄
yumRepo.py
(74.2 KB)
📄
yumRepo.pyc
(58.22 KB)
📄
yumRepo.pyo
(58.22 KB)
Editing: pkgtag_db.py
#!/usr/bin/python -tt # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2009 Red Hat, Inc # written by seth vidal # parse sqlite tag database # return pkgnames and tag that was matched from sqlutils import sqlite, executeSQL, sql_esc from Errors import PkgTagsError import sqlutils import sys import misc def catchSqliteException(func): """This decorator converts sqlite exceptions into PkgTagsError""" def newFunc(*args, **kwargs): try: return func(*args, **kwargs) except sqlutils.sqlite.Error, e: # 2.4.x requires this, but 2.6.x complains about even hasattr() # of e.message ... *sigh* if sys.hexversion < 0x02050000: if hasattr(e,'message'): raise PkgTagsError, str(e.message) else: raise PkgTagsError, str(e) raise PkgTagsError, str(e) newFunc.__name__ = func.__name__ newFunc.__doc__ = func.__doc__ newFunc.__dict__.update(func.__dict__) return newFunc class PackageTagDB(object): def __init__(self, repoid, sqlite_file): self.sqlite_file = sqlite_file self.repoid = repoid # take a path to the sqlite tag db # open it and leave a cursor in place for the db self._conn = sqlite.connect(sqlite_file) self.cur = self._conn.cursor() def _getTagsCount(self): ''' Unused, so no need to cache. ''' for n in self._sql_exec("select count(*) from packagetags",): return n[0] count = property(fget=lambda self: self._getTagsCount(), doc="Number of entries in the pkgtag DB") @catchSqliteException def _sql_exec(self, sql, *args): """ Exec SQL against an MD of the repo, return a cursor. """ executeSQL(self.cur, sql, *args) return self.cur def search_tags(self, tag): """Search by tag name/glob Return dict of dict[packagename] = [stringmatched, stringmatched, ...]""" res = {} (tag, esc) = sql_esc(tag) query = "SELECT name, tag, score FROM packagetags where tag like ? %s" % esc tag = '%' + tag + '%' rows = self._sql_exec(query, (tag,)) for (name, tag, score) in rows: if name not in res: res[name] = [] res[name].append(tag) return res def search_names(self, name): """Search by package name/glob. Return dict of dict[packagename] = [tag1, tag2, tag3, tag4, ...]""" res = {} (name, esc) = sql_esc(name) query = "SELECT name, tag, score FROM packagetags where name like ?%s " % esc name = '%' + name + '%' rows = self._sql_exec(query, (name,)) for (name, tag, score) in rows: if name not in res: res[name] = [] res[name].append(tag) return res class PackageTags(object): def __init__(self): self.db_objs = {} def add(self, repoid, sqlite_file): if repoid in self.db_objs: raise PkgTagsError, "Already added tags from %s" % repoid dbobj = PackageTagDB(repoid, sqlite_file) self.db_objs[repoid] = dbobj def remove(self, repoid): if repoid in self.db_objs: del self.db_objs[repoid] else: raise PkgTagsError, "No tag db for %s" % repoid def search_names(self, name): res = {} for ptd in self.db_objs.values(): for (name, taglist) in ptd.search_names(name).items(): if not name in res: res[name] = [] res[name].extend(taglist) out = {} for (name, taglist) in res.items(): out[name] = misc.unique(taglist) return out def search_tags(self, tagname): res = {} for ptd in self.db_objs.values(): for (name, taglist) in ptd.search_tags(tagname).items(): if not name in res: res[name] = [] res[name].extend(taglist) out = {} for (name, taglist) in res.items(): out[name] = misc.unique(taglist) return out
Upload File
Create Folder