[ Avaa Bypassed ]




Upload:

Command:

www-data@18.216.78.190: ~ $
# Copyright (C) 2009-2012, Benjamin Drung <bdrung@debian.org>
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

"""provides information about Ubuntu's and Debian's distributions"""

import csv
import datetime
import os


def convert_date(string):
    """Convert a date string in ISO 8601 into a datetime object."""
    if not string:
        date = None
    else:
        parts = [int(x) for x in string.split("-")]
        if len(parts) == 3:
            (year, month, day) = parts
            date = datetime.date(year, month, day)
        elif len(parts) == 2:
            (year, month) = parts
            if month == 12:
                date = datetime.date(year, month, 31)
            else:
                date = datetime.date(year, month + 1, 1) - datetime.timedelta(1)
        else:
            raise ValueError("Date not in ISO 8601 format.")
    return date


def _get_data_dir():
    """Get the data directory based on the module location."""
    return "/usr/share/distro-info"


class DistroDataOutdated(Exception):
    """Distribution data outdated."""

    def __init__(self):
        super(DistroDataOutdated, self).__init__(
            "Distribution data outdated. "
            "Please check for an update for distro-info-data. See "
            "/usr/share/doc/distro-info-data/README.Debian for details.")


class DistroRelease(object):
    """Represents a distributions release"""
    # pylint: disable=too-few-public-methods
    # pylint: disable=too-many-instance-attributes

    def __init__(self, version, codename, series, created=None, release=None, eol=None,
                 eol_server=None, eol_esm=None):
        # pylint: disable=too-many-arguments
        self.version = version
        self.codename = codename
        self.series = series
        self.created = created
        self.release = release
        self.eol = eol
        self.eol_server = eol_server
        self.eol_esm = eol_esm

    def is_supported(self, date):
        """Check whether this release is supported on the given date."""
        return date >= self.created and (self.eol is None or date <= self.eol or (
            self.eol_server is not None and date <= self.eol_server))


def _get_date(row, column):
    return convert_date(row[column]) if column in row else None


class DistroInfo(object):
    """Base class for distribution information.
    Use DebianDistroInfo or UbuntuDistroInfo instead of using this directly.
    """

    def __init__(self, distro):
        self._distro = distro
        filename = os.path.join(_get_data_dir(), distro.lower() + ".csv")
        csvfile = open(filename)
        csv_reader = csv.DictReader(csvfile)
        self._releases = []
        for row in csv_reader:
            release = DistroRelease(row['version'], row['codename'], row['series'],
                                    _get_date(row, 'created'), _get_date(row, 'release'),
                                    _get_date(row, 'eol'), _get_date(row, 'eol-server'),
                                    _get_date(row, 'eol-esm'))
            self._releases.append(release)
        csvfile.close()
        self._date = datetime.date.today()

    @property
    def all(self):
        """List codenames of all known distributions."""
        return [x.series for x in self._releases]

    def get_all(self, result="codename"):
        """List all known distributions."""
        return [self._format(result, x) for x in self._releases]

    def _avail(self, date):
        """Return all distributions that were available on the given date."""
        return [x for x in self._releases if date >= x.created]

    def codename(self, release, date=None, default=None):
        """Map codename aliases to the codename they describe."""
        # pylint: disable=no-self-use,unused-argument
        return release

    def version(self, name, default=None):
        """Map codename or series to version"""
        for release in self._releases:
            if name in (release.codename, release.series):
                return release.version
        return default

    def devel(self, date=None, result="codename"):
        """Get latest development distribution based on the given date."""
        if date is None:
            date = self._date
        distros = [x for x in self._avail(date) if x.release is None or
                   (date < x.release and (x.eol is None or date <= x.eol))]
        if not distros:
            raise DistroDataOutdated()
        return self._format(result, distros[-1])

    def _format(self, format_string, release):
        """Format a given distribution entry."""
        if format_string == "object":
            return release
        if format_string == "codename":
            return release.series
        if format_string == "fullname":
            return self._distro + " " + release.version + ' "' + release.codename + '"'
        if format_string == "release":
            return release.version

        raise ValueError("Only codename, fullname, object, and release are allowed "
                         "result values, but not '" + format_string + "'.")

    def stable(self, date=None, result="codename"):
        """Get latest stable distribution based on the given date."""
        if date is None:
            date = self._date
        distros = [x for x in self._avail(date) if x.release is not None and
                   date >= x.release and (x.eol is None or date <= x.eol)]
        if not distros:
            raise DistroDataOutdated()
        return self._format(result, distros[-1])

    def supported(self, date=None, result=None):
        """Get list of all supported distributions based on the given date."""
        raise NotImplementedError()

    def valid(self, codename):
        """Check if the given codename is known."""
        return codename in self.all

    def unsupported(self, date=None, result="codename"):
        """Get list of all unsupported distributions based on the given date."""
        if date is None:
            date = self._date
        supported = self.supported(date)
        distros = [self._format(result, x) for x in self._avail(date)
                   if x.series not in supported]
        return distros


class DebianDistroInfo(DistroInfo):
    """provides information about Debian's distributions"""

    def __init__(self):
        super(DebianDistroInfo, self).__init__("Debian")

    def codename(self, release, date=None, default=None):
        """Map 'unstable', 'testing', etc. to their codenames."""
        if release == "unstable":
            codename = self.devel(date)
        elif release == "testing":
            codename = self.testing(date)
        elif release == "stable":
            codename = self.stable(date)
        elif release == "oldstable":
            codename = self.old(date)
        else:
            codename = default
        return codename

    def devel(self, date=None, result="codename"):
        """Get latest development distribution based on the given date."""
        if date is None:
            date = self._date
        distros = [x for x in self._avail(date) if x.release is None or
                   (date < x.release and (x.eol is None or date <= x.eol))]
        if len(distros) < 2:
            raise DistroDataOutdated()
        return self._format(result, distros[-2])

    def old(self, date=None, result="codename"):
        """Get old (stable) Debian distribution based on the given date."""
        if date is None:
            date = self._date
        distros = [x for x in self._avail(date)
                   if x.release is not None and date >= x.release]
        if len(distros) < 2:
            raise DistroDataOutdated()
        return self._format(result, distros[-2])

    def supported(self, date=None, result="codename"):
        """Get list of all supported Debian distributions based on the given
           date."""
        if date is None:
            date = self._date
        distros = [self._format(result, x) for x in self._avail(date)
                   if x.eol is None or date <= x.eol]
        return distros

    def testing(self, date=None, result="codename"):
        """Get latest testing Debian distribution based on the given date."""
        if date is None:
            date = self._date
        distros = [x for x in self._avail(date) if (x.release is None and x.version) or
                   (x.release is not None and date < x.release and
                    (x.eol is None or date <= x.eol))]
        if not distros:
            raise DistroDataOutdated()
        return self._format(result, distros[-1])

    def valid(self, codename):
        """Check if the given codename is known."""
        return (DistroInfo.valid(self, codename) or
                codename in ["unstable", "testing", "stable", "oldstable"])


class UbuntuDistroInfo(DistroInfo):
    """provides information about Ubuntu's distributions"""

    def __init__(self):
        super(UbuntuDistroInfo, self).__init__("Ubuntu")

    def lts(self, date=None, result="codename"):
        """Get latest long term support (LTS) Ubuntu distribution based on the
           given date."""
        if date is None:
            date = self._date
        distros = [x for x in self._releases if x.version.find("LTS") >= 0 and
                   x.release <= date <= x.eol]
        if not distros:
            raise DistroDataOutdated()
        return self._format(result, distros[-1])

    def is_lts(self, codename):
        """Is codename an LTS release?"""
        distros = [x for x in self._releases if x.series == codename]
        if not distros:
            return False
        return "LTS" in distros[0].version

    def supported(self, date=None, result="codename"):
        """Get list of all supported Ubuntu distributions based on the given
           date."""
        if date is None:
            date = self._date
        distros = [self._format(result, x) for x in self._avail(date)
                   if date <= x.eol or
                   (x.eol_server is not None and date <= x.eol_server)]
        return distros

    def supported_esm(self, date=None, result="codename"):
        """Get list of all ESM supported Ubuntu distributions based on the
           given date."""
        if date is None:
            date = self._date
        distros = [self._format(result, x) for x in self._avail(date)
                   if x.eol_esm is not None and date <= x.eol_esm]
        return distros

Filemanager

Name Type Size Permission Actions
AptUrl Folder 0755
Click-7.0.egg-info Folder 0755
CommandNotFound Folder 0755
ConfigArgParse-0.13.0.egg-info Folder 0755
DistUpgrade Folder 0755
HweSupportStatus Folder 0755
LanguageSelector Folder 0755
Mako-1.1.0.egg-info Folder 0755
MarkupSafe-1.1.0.egg-info Folder 0755
NvidiaDetector Folder 0755
OpenSSL Folder 0755
PIL Folder 0755
Pillow-7.0.0.egg-info Folder 0755
PyGObject-3.36.0.egg-info Folder 0755
PyJWT-1.7.1.egg-info Folder 0755
PyNaCl-1.3.0.egg-info Folder 0755
Quirks Folder 0755
SecretStorage-2.3.1.egg-info Folder 0755
UbuntuDrivers Folder 0755
UpdateManager Folder 0755
__pycache__ Folder 0755
acme Folder 0755
acme-1.1.0.egg-info Folder 0755
apport Folder 0755
apt Folder 0755
apt_inst-stubs Folder 0755
apt_pkg-stubs Folder 0755
aptdaemon Folder 0755
aptsources Folder 0755
bcrypt Folder 0755
bcrypt-3.1.7.egg-info Folder 0755
blinker Folder 0755
cairo Folder 0755
certbot Folder 0755
certbot-0.40.0.egg-info Folder 0755
certbot_apache Folder 0755
certbot_apache-0.39.0.egg-info Folder 0755
certifi Folder 0755
certifi-2019.11.28.egg-info Folder 0755
chardet Folder 0755
chardet-3.0.4.egg-info Folder 0755
click Folder 0755
colorama Folder 0755
colorama-0.4.3.egg-info Folder 0755
configobj-5.0.6.egg-info Folder 0755
cryptography Folder 0755
cryptography-2.8.egg-info Folder 0755
cupshelpers Folder 0755
dateutil Folder 0755
dbus Folder 0755
dbus_python-1.2.16.egg-info Folder 0755
debian Folder 0755
debian_bundle Folder 0755
defer Folder 0755
defer-1.0.6.egg-info Folder 0755
distro-1.4.0.egg-info Folder 0755
distro_info-0.23ubuntu1.egg-info Folder 0755
duplicity Folder 0755
duplicity-0.8.12.0.egg-info Folder 0755
fasteners Folder 0755
fasteners-0.14.1.egg-info Folder 0755
future Folder 0755
future-0.18.2.egg-info Folder 0755
gi Folder 0755
google Folder 0755
httplib2 Folder 0755
httplib2-0.14.0.egg-info Folder 0755
icu Folder 0755
idna Folder 0755
idna-2.8.egg-info Folder 0755
janitor Folder 0755
josepy Folder 0755
josepy-1.2.0.egg-info Folder 0755
jwt Folder 0755
keyring Folder 0755
keyring-18.0.1.egg-info Folder 0755
language_selector-0.1.egg-info Folder 0755
launchpadlib Folder 0755
launchpadlib-1.10.13.egg-info Folder 0755
lazr Folder 0755
lazr.restfulclient-0.14.2.egg-info Folder 0755
lazr.uri-1.0.3.egg-info Folder 0755
libfuturize Folder 0755
libpasteurize Folder 0755
lockfile Folder 0755
lockfile-0.12.2.egg-info Folder 0755
louis Folder 0755
macaroonbakery Folder 0755
macaroonbakery-1.3.1.egg-info Folder 0755
mako Folder 0755
markupsafe Folder 0755
mock Folder 0755
mock-3.0.5.egg-info Folder 0755
monotonic-1.5.egg-info Folder 0755
nacl Folder 0755
netifaces-0.10.4.egg-info Folder 0755
oauthlib Folder 0755
oauthlib-3.1.0.egg-info Folder 0755
olefile Folder 0755
olefile-0.46.egg-info Folder 0755
orca Folder 0755
paramiko Folder 0755
paramiko-2.6.0.egg-info Folder 0755
parsedatetime Folder 0755
parsedatetime-2.4.egg-info Folder 0755
past Folder 0755
pbr Folder 0755
pbr-5.4.5.egg-info Folder 0755
pexpect Folder 0755
pkg_resources Folder 0755
protobuf-3.6.1.egg-info Folder 0755
ptyprocess Folder 0755
pyOpenSSL-19.0.0.egg-info Folder 0755
pyRFC3339-1.1.egg-info Folder 0755
pyatspi Folder 0755
pygtkcompat Folder 0755
pymacaroons Folder 0755
pymacaroons-0.13.0.egg-info Folder 0755
pyrfc3339 Folder 0755
python_apt-2.0.1+ubuntu0.20.4.1.egg-info Folder 0755
python_dateutil-2.7.3.egg-info Folder 0755
python_debian-0.1.36ubuntu1.egg-info Folder 0755
pytz Folder 0755
pytz-2019.3.egg-info Folder 0755
reportlab Folder 0755
reportlab-3.5.34.egg-info Folder 0755
requests Folder 0755
requests-2.22.0.egg-info Folder 0755
requests_toolbelt Folder 0755
requests_toolbelt-0.8.0.egg-info Folder 0755
requests_unixsocket Folder 0755
requests_unixsocket-0.2.0.egg-info Folder 0755
secretstorage Folder 0755
setuptools Folder 0755
setuptools-45.2.0.egg-info Folder 0755
simplejson Folder 0755
six-1.14.0.egg-info Folder 0755
softwareproperties Folder 0755
speechd Folder 0755
speechd_config Folder 0755
ssh_import_id Folder 0755
ssh_import_id-5.10.egg-info Folder 0755
systemd Folder 0755
uaclient Folder 0755
ubuntu_advantage_tools-8001.egg-info Folder 0755
ubuntu_drivers_common-0.0.0.egg-info Folder 0755
ufw Folder 0755
unattended_upgrades-0.1.egg-info Folder 0755
urllib3 Folder 0755
urllib3-1.25.8.egg-info Folder 0755
usbcreator Folder 0755
wadllib Folder 0755
wadllib-1.3.3.egg-info Folder 0755
xdg Folder 0755
xkit Folder 0755
yaml Folder 0755
zope Folder 0755
zope.component-4.3.0.egg-info Folder 0755
zope.event-4.4.egg-info Folder 0755
zope.hookable-5.0.0.egg-info Folder 0755
zope.interface-4.7.1.egg-info Folder 0755
Brlapi-0.7.0.egg-info File 242 B 0644
PyICU-2.4.2.egg-info File 10.44 KB 0644
PyICU.py File 1.43 KB 0644
PyYAML-5.3.1.egg-info File 1.74 KB 0644
_cffi_backend.cpython-38-x86_64-linux-gnu.so File 181.92 KB 0644
_dbus_bindings.cpython-38-x86_64-linux-gnu.so File 168.16 KB 0644
_dbus_glib_bindings.cpython-38-x86_64-linux-gnu.so File 22.54 KB 0644
_icu.cpython-38-x86_64-linux-gnu.so File 1.1 MB 0644
_ldb_text.py File 3.45 KB 0644
_version.py File 21 B 0644
_yaml.cpython-38-x86_64-linux-gnu.so File 276.73 KB 0644
apport_python_hook.py File 7.87 KB 0644
apt_inst.cpython-38-x86_64-linux-gnu.so File 58.67 KB 0644
apt_pkg.cpython-38-x86_64-linux-gnu.so File 350.95 KB 0644
apturl-0.5.2.egg-info File 180 B 0644
augeas.py File 23 KB 0644
blinker-1.4.egg-info File 3.81 KB 0644
brlapi.cpython-38-x86_64-linux-gnu.so File 241.27 KB 0644
command_not_found-0.3.egg-info File 189 B 0644
configargparse.py File 40.47 KB 0644
configobj.py File 87.51 KB 0644
cups.cpython-38-x86_64-linux-gnu.so File 196.14 KB 0644
cupsext.cpython-38-x86_64-linux-gnu.so File 45.04 KB 0644
cupshelpers-1.0.egg-info File 231 B 0644
deb822.py File 273 B 0644
debconf.py File 6.61 KB 0644
distro.py File 42.24 KB 0644
distro_info.py File 10.89 KB 0644
easy_install.py File 126 B 0644
entrypoints.egg-info File 226 B 0644
entrypoints.py File 7.99 KB 0644
hpmudext.cpython-38-x86_64-linux-gnu.so File 18.85 KB 0644
language_support_pkgs.py File 9.7 KB 0644
ldb.cpython-38-x86_64-linux-gnu.so File 102.25 KB 0644
louis-3.12.0.egg-info File 527 B 0644
lsb_release.py File 14.55 KB 0644
monotonic.py File 6.95 KB 0644
netifaces.cpython-38-x86_64-linux-gnu.so File 22.68 KB 0644
netifaces.cpython-38d-x86_64-linux-gnu.so File 26.71 KB 0644
pcardext.cpython-38-x86_64-linux-gnu.so File 22.66 KB 0644
pexpect-4.6.0.egg-info File 2.23 KB 0644
problem_report.py File 26.25 KB 0644
pycairo-1.16.2.egg-info File 3.75 KB 0644
pycups-1.9.73.egg-info File 1.31 KB 0644
python_augeas-0.5.0.egg-info File 238 B 0644
pyxdg-0.26.egg-info File 576 B 0644
scanext.cpython-38-x86_64-linux-gnu.so File 23.35 KB 0644
simplejson-3.16.0.egg-info File 2.97 KB 0644
six.py File 33.28 KB 0644
systemd_python-234.egg-info File 586 B 0644
talloc.cpython-38-x86_64-linux-gnu.so File 15.64 KB 0644
ufw-0.36.egg-info File 261 B 0644
uno.py File 17.11 KB 0644
unohelper.py File 10.7 KB 0644
usb_creator-0.3.7.egg-info File 219 B 0644
validate.py File 46.14 KB 0644
xkit-0.0.0.egg-info File 266 B 0644
zope.component-4.3.0-nspkg.pth File 529 B 0644
zope.event-4.4-nspkg.pth File 529 B 0644
zope.hookable-5.0.0-nspkg.pth File 529 B 0644
zope.interface-4.7.1-nspkg.pth File 529 B 0644