404

[ Avaa Bypassed ]




Upload:

Command:

botdev@3.22.194.5: ~ $
# 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 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
        elif format_string == "codename":
            return release.series
        elif format_string == "fullname":
            return self._distro + " " + release.version + ' "' + release.codename + '"'
        elif format_string == "release":
            return release.version
        else:
            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
                   date >= x.release and 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
Automat-0.6.0.egg-info Folder 0755
CommandNotFound Folder 0755
ConfigArgParse-0.11.0.egg-info Folder 0755
Crypto Folder 0755
DistUpgrade Folder 0755
HweSupportStatus Folder 0755
Jinja2-2.10.egg-info Folder 0755
LanguageSelector Folder 0755
MarkupSafe-1.0.egg-info Folder 0755
OpenSSL Folder 0755
PyJWT-1.5.3.egg-info Folder 0755
SecretStorage-2.3.1.egg-info Folder 0755
Twisted-17.9.0.egg-info Folder 0755
UpdateManager Folder 0755
__pycache__ Folder 0755
acme Folder 0755
acme-0.31.0.egg-info Folder 0755
apport Folder 0755
apt Folder 0755
aptsources Folder 0755
asn1crypto Folder 0755
asn1crypto-0.24.0.egg-info Folder 0755
attr Folder 0755
attrs-17.4.0.egg-info Folder 0755
automat Folder 0755
bcrypt Folder 0755
bcrypt-3.1.4.egg-info Folder 0755
blinker Folder 0755
certbot Folder 0755
certbot-0.31.0.egg-info Folder 0755
certbot_apache Folder 0755
certbot_apache-0.31.0.egg-info Folder 0755
certifi Folder 0755
certifi-2018.1.18.egg-info Folder 0755
chardet Folder 0755
chardet-3.0.4.egg-info Folder 0755
click Folder 0755
click-6.7.egg-info Folder 0755
cloud_init-23.1.2.egg-info Folder 0755
cloudinit Folder 0755
colorama Folder 0755
colorama-0.3.7.egg-info Folder 0755
configobj-5.0.6.egg-info Folder 0755
constantly Folder 0755
constantly-15.1.0.egg-info Folder 0755
cryptography Folder 0755
cryptography-2.1.4.egg-info Folder 0755
dbus Folder 0755
debian Folder 0755
debian_bundle Folder 0755
distro-1.0.1.egg-info Folder 0755
distro_info-0.18ubuntu0.18.04.1.egg-info Folder 0755
distro_info_test Folder 0755
dns Folder 0755
dnspython-1.15.0.egg-info Folder 0755
future Folder 0755
future-0.15.2.egg-info Folder 0755
gi Folder 0755
httplib2 Folder 0755
hyperlink Folder 0755
hyperlink-17.3.1.egg-info Folder 0755
icu Folder 0755
idna Folder 0755
idna-2.6.egg-info Folder 0755
incremental Folder 0755
incremental-16.10.1.egg-info Folder 0755
janitor Folder 0755
jinja2 Folder 0755
josepy Folder 0755
josepy-1.1.0.egg-info Folder 0755
jsonpatch-1.16.egg-info Folder 0755
jsonpointer-1.10.egg-info Folder 0755
jsonschema Folder 0755
jsonschema-2.6.0.egg-info Folder 0755
jwt Folder 0755
keyring Folder 0755
keyring-10.6.0.egg-info Folder 0755
keyrings Folder 0755
keyrings.alt-3.0.egg-info Folder 0755
landscape Folder 0755
language_selector-0.1.egg-info Folder 0755
libfuturize Folder 0755
libpasteurize Folder 0755
markupsafe Folder 0755
mock Folder 0755
mock-2.0.0.egg-info Folder 0755
ndg Folder 0755
ndg_httpsclient-0.4.4.egg-info Folder 0755
netifaces-0.10.4.egg-info Folder 0755
oauthlib Folder 0755
oauthlib-2.0.6.egg-info Folder 0755
parsedatetime Folder 0755
parsedatetime-2.4.egg-info Folder 0755
past Folder 0755
pbr Folder 0755
pbr-3.1.1.egg-info Folder 0755
pexpect Folder 0755
pip Folder 0755
pip-9.0.1.egg-info Folder 0755
pkg_resources Folder 0755
proton Folder 0755
proton_client-0.7.1.egg-info Folder 0755
protonvpn_cli Folder 0755
protonvpn_cli-3.13.0.egg-info Folder 0755
protonvpn_nm_lib Folder 0755
protonvpn_nm_lib-3.16.0.egg-info Folder 0755
ptyprocess Folder 0755
pyOpenSSL-17.5.0.egg-info Folder 0755
pyRFC3339-1.0.egg-info Folder 0755
pyasn1 Folder 0755
pyasn1-0.4.2.egg-info Folder 0755
pyasn1_modules Folder 0755
pygtkcompat Folder 0755
pyrfc3339 Folder 0755
python_debian-0.1.32.egg-info Folder 0755
pytz Folder 0755
pytz-2018.3.egg-info Folder 0755
requests_toolbelt Folder 0755
requests_toolbelt-0.8.0.egg-info Folder 0755
requests_unixsocket Folder 0755
requests_unixsocket-0.1.5.egg-info Folder 0755
secretstorage Folder 0755
serial Folder 0755
service_identity Folder 0755
service_identity-16.0.0.egg-info Folder 0755
setuptools Folder 0755
setuptools-39.0.1.egg-info Folder 0755
six-1.11.0.egg-info Folder 0755
softwareproperties Folder 0755
sos Folder 0755
ssh_import_id Folder 0755
ssh_import_id-5.7.egg-info Folder 0755
systemd Folder 0755
twisted Folder 0755
uaclient Folder 0755
ubuntu_advantage_tools-8001.egg-info Folder 0755
ufw Folder 0755
unattended_upgrades-0.1.egg-info Folder 0755
urllib3 Folder 0755
urllib3-1.22.egg-info Folder 0755
wheel Folder 0755
wheel-0.30.0.egg-info Folder 0755
xdg Folder 0755
yaml Folder 0755
zope Folder 0755
zope.component-4.3.0.egg-info Folder 0755
zope.event-4.2.0.egg-info Folder 0755
zope.hookable-4.0.4.egg-info Folder 0755
zope.interface-4.3.2.egg-info Folder 0755
PAM-0.4.2.egg-info File 193 B 0644
PAM.cpython-36m-x86_64-linux-gnu.so File 19.42 KB 0644
PyICU-1.9.8.egg-info File 10.32 KB 0644
PyICU.py File 1.43 KB 0644
PyYAML-3.12.egg-info File 1.48 KB 0644
README.txt File 119 B 0644
_cffi_backend.cpython-36m-x86_64-linux-gnu.so File 165.56 KB 0644
_dbus_bindings.cpython-36m-x86_64-linux-gnu.so File 155.67 KB 0644
_dbus_glib_bindings.cpython-36m-x86_64-linux-gnu.so File 18.7 KB 0644
_icu.cpython-36m-x86_64-linux-gnu.so File 710.82 KB 0644
_snack.cpython-36m-x86_64-linux-gnu.so File 42.59 KB 0644
_version.py File 21 B 0644
_yaml.cpython-36m-x86_64-linux-gnu.so File 220.16 KB 0644
apport_python_hook.py File 7.87 KB 0644
apt_inst.cpython-36m-x86_64-linux-gnu.so File 50.37 KB 0644
apt_inst.pyi File 227 B 0644
apt_pkg.cpython-36m-x86_64-linux-gnu.so File 338.66 KB 0644
apt_pkg.pyi File 8.69 KB 0644
augeas.py File 23 KB 0644
blinker-1.4.egg-info File 3.81 KB 0644
command_not_found-0.3.egg-info File 189 B 0644
configargparse.py File 40.35 KB 0644
configobj.py File 87.51 KB 0644
deb822.py File 146 B 0644
debconf.py File 6.61 KB 0644
dialog.py File 151.75 KB 0644
distro.py File 37.45 KB 0644
distro_info.py File 10.68 KB 0644
easy_install.py File 126 B 0644
gnupg.py File 52.79 KB 0644
httplib2-0.9.2.egg-info File 2.22 KB 0644
jsonpatch.py File 26.19 KB 0644
jsonpointer.py File 9.15 KB 0644
language_support_pkgs.py File 9.89 KB 0644
lsb_release.py File 14.09 KB 0644
netifaces.cpython-36m-x86_64-linux-gnu.so File 18.59 KB 0644
pexpect-4.2.1.egg-info File 2.23 KB 0644
problem_report.py File 26.28 KB 0644
pyasn1_modules-0.2.1.egg-info File 1.68 KB 0644
pycrypto-2.6.1.egg-info File 666 B 0644
pygobject-3.26.1.egg-info File 1013 B 0644
pyserial-3.4.egg-info File 1.62 KB 0644
python_apt-1.6.6.egg-info File 226 B 0644
python_augeas-0.5.0.egg-info File 238 B 0644
python_gnupg-0.4.1.egg-info File 1.46 KB 0644
pythondialog-3.4.0.egg-info File 13.7 KB 0644
pyxdg-0.25.egg-info File 576 B 0644
six.py File 30.16 KB 0644
snack.py File 30.4 KB 0644
sos-4.4.egg-info File 312 B 0644
systemd_python-234.egg-info File 586 B 0644
ufw-0.36.egg-info File 261 B 0644
validate.py File 46.13 KB 0644
zope.component-4.3.0-nspkg.pth File 529 B 0644
zope.event-4.2.0-nspkg.pth File 299 B 0644
zope.hookable-4.0.4-nspkg.pth File 529 B 0644
zope.interface-4.3.2-nspkg.pth File 529 B 0644