|
System | : | Linux MiraNet 3.0.0-14-generic-pae #23-Ubuntu SMP Mon Nov 21 22:07:10 UTC 2011 i686 |
Software | : | Apache. PHP/5.3.6-13ubuntu3.10 |
ID | : | uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)
|
|
Safe Mode | : | OFF |
Open_Basedir | : | OFF |
Freespace | : | 23.03 GB of 70.42 GB (32.7%) |
|
MySQL: ON MSSQL: OFF Oracle: OFF PostgreSQL: OFF Curl: OFF Sockets: ON Fetch: OFF Wget: ON Perl: ON |
Disabled Functions: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
|
[ System Info ]
[ Processes ]
[ SQL Manager ]
[ Eval ]
[ Encoder ]
[ Mailer ]
[ Back Connection ]
[ Backdoor Server ]
[ Kernel Exploit Search ]
[ MD5 Decrypter ]
[ Reverse IP ]
[ Kill Shell ]
[ FTP Brute-Force ]
|
|
/
usr/
share/
pyshared/
landscape/
package/
- drwxr-xr-x
|
Viewing file: skeleton.py (2.79 KB) -rw-r--r--Select action/file-type:  ( +) |  ( +) |  ( +) | Code ( +) | Session ( +) |  ( +) | SDB ( +) |  ( +) |  ( +) |  ( +) |  ( +) |  ( +) |
from landscape.lib.hashlib import sha1
PACKAGE = 1 << 0 PROVIDES = 1 << 1 REQUIRES = 1 << 2 UPGRADES = 1 << 3 CONFLICTS = 1 << 4
DEB_PACKAGE = 1 << 16 | PACKAGE DEB_PROVIDES = 2 << 16 | PROVIDES DEB_NAME_PROVIDES = 3 << 16 | PROVIDES DEB_REQUIRES = 4 << 16 | REQUIRES DEB_OR_REQUIRES = 5 << 16 | REQUIRES DEB_UPGRADES = 6 << 16 | UPGRADES DEB_CONFLICTS = 7 << 16 | CONFLICTS
class PackageTypeError(Exception): """Raised when an unsupported package type is passed to build_skeleton."""
class PackageSkeleton(object):
section = None summary = None description = None size = None installed_size = None
def __init__(self, type, name, version): self.type = type self.name = name self.version = version self.relations = []
def add_relation(self, type, info): self.relations.append((type, info))
def get_hash(self): digest = sha1("[%d %s %s]" % (self.type, self.name, self.version)) self.relations.sort() for pair in self.relations: digest.update("[%d %s]" % pair) return digest.digest()
def build_skeleton(pkg, with_info=False, with_unicode=False): if not build_skeleton.inited: build_skeleton.inited = True global DebPackage, DebNameProvides, DebOrDepends
# Importing from backends depends on smart.init(). from smart.backends.deb.base import ( DebPackage, DebNameProvides, DebOrDepends)
if not isinstance(pkg, DebPackage): raise PackageTypeError()
if with_unicode: skeleton = PackageSkeleton(DEB_PACKAGE, unicode(pkg.name), unicode(pkg.version)) else: skeleton = PackageSkeleton(DEB_PACKAGE, pkg.name, pkg.version) relations = set() for relation in pkg.provides: if isinstance(relation, DebNameProvides): relations.add((DEB_NAME_PROVIDES, str(relation))) else: relations.add((DEB_PROVIDES, str(relation))) for relation in pkg.requires: if isinstance(relation, DebOrDepends): relations.add((DEB_OR_REQUIRES, str(relation))) else: relations.add((DEB_REQUIRES, str(relation))) for relation in pkg.upgrades: relations.add((DEB_UPGRADES, str(relation))) for relation in pkg.conflicts: relations.add((DEB_CONFLICTS, str(relation)))
skeleton.relations = sorted(relations)
if with_info: info = pkg.loaders.keys()[0].getInfo(pkg) skeleton.section = info.getGroup() skeleton.summary = info.getSummary() skeleton.description = info.getDescription() skeleton.size = sum(info.getSize(url) for url in info.getURLs()) skeleton.installed_size = info.getInstalledSize()
return skeleton
build_skeleton.inited = False
|