Submit
Path:
~
/
/
usr
/
lib
/
python3
/
dist-packages
/
File Content:
debconf.py
# Copyright: # Moshe Zadka (c) 2002 # Canonical Ltd. (c) 2005 (DebconfCommunicator) # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY AUTHORS AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. from __future__ import print_function import sys, os import errno import re import subprocess import fcntl class DebconfError(Exception): pass LOW, MEDIUM, HIGH, CRITICAL = 'low', 'medium', 'high', 'critical' class Debconf: """A class that speaks the debconf protocol. The simplest way to use this is as a context manager: import debconf with debconf.Debconf(run_frontend=True) as db: print(db.get('debconf/frontend')) Note that this will send the STOP command on exiting the context manager, so you shouldn't expect to be able to use the same frontend again after this. If you need to do that, then you should instantiate the class directly instead: import debconf db = debconf.Debconf(run_frontend=True) print(db.get('debconf/frontend')) """ def __init__(self, title=None, read=None, write=None, run_frontend=False): for command in ('capb set reset title input beginblock endblock go get' ' register unregister subst fset fget previous_module' ' visible purge metaget exist version settitle' ' info progress data').split(): self.setCommand(command) self.read = read or sys.stdin self.write = write or sys.stdout sys.stdout = sys.stderr if run_frontend: runFrontEnd() self.setUp(title) def setUp(self, title): self.version = self.version(2) if self.version[:2] != '2.': raise DebconfError(256, "wrong version: %s" % self.version) self.capabilities = self.capb().split() if title: self.title(title) def setCommand(self, command): setattr(self, command, lambda *args, **kw: self.command(command, *args, **kw)) def command(self, command, *params): command = command.upper() self.write.write("%s %s\n" % (command, ' '.join(map(str, params)))) self.write.flush() while True: try: resp = self.read.readline().rstrip('\n') break except IOError as e: if e.errno == errno.EINTR: continue else: raise if ' ' in resp: status, data = resp.split(' ', 1) else: status, data = resp, '' status = int(status) if status == 0: return data elif status == 1: # unescaped data unescaped = '' for chunk in re.split(r'(\\.)', data): if chunk.startswith('\\') and len(chunk) == 2: if chunk[1] == 'n': unescaped += '\n' else: unescaped += chunk[1] else: unescaped += chunk return unescaped else: raise DebconfError(status, data) def stop(self): self.write.write('STOP\n') self.write.flush() def forceInput(self, priority, question): try: self.input(priority, question) return 1 except DebconfError as e: if e.args[0] != 30: raise return 0 def getBoolean(self, question): result = self.get(question) return result == 'true' def getString(self, question): return self.get(question) def __enter__(self): return self def __exit__(self, exc_type, exc_value, exc_tb): self.stop() class DebconfCommunicator(Debconf, object): def __init__(self, owner, title=None, cloexec=False): args = ['debconf-communicate', '-fnoninteractive', owner] self.dccomm = subprocess.Popen( args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, close_fds=True, universal_newlines=True) super(DebconfCommunicator, self).__init__(title=title, read=self.dccomm.stdout, write=self.dccomm.stdin) if cloexec: fcntl.fcntl(self.read.fileno(), fcntl.F_SETFD, fcntl.FD_CLOEXEC) fcntl.fcntl(self.write.fileno(), fcntl.F_SETFD, fcntl.FD_CLOEXEC) def shutdown(self): if self.dccomm is not None: self.dccomm.stdin.close() self.dccomm.stdout.close() self.dccomm.wait() self.dccomm = None # Don't rely on this; call .shutdown() explicitly. def __del__(self): try: self.shutdown() except AttributeError: pass if ('DEBCONF_USE_CDEBCONF' in os.environ and os.environ['DEBCONF_USE_CDEBCONF'] != ''): _frontEndProgram = '/usr/lib/cdebconf/debconf' else: _frontEndProgram = '/usr/share/debconf/frontend' def runFrontEnd(): if 'DEBIAN_HAS_FRONTEND' not in os.environ: os.environ['PERL_DL_NONLAZY']='1' os.execv(_frontEndProgram, [_frontEndProgram, sys.executable]+sys.argv) if __name__ == '__main__': runFrontEnd() db = Debconf() db.forceInput(CRITICAL, 'bsdmainutils/calendar_lib_is_not_empty') db.go() less = db.getBoolean('less/add_mime_handler') aptlc = db.getString('apt-listchanges/email-address') db.stop() print(db.version) print(db.capabilities) print(less) print(aptlc)
Edit
Rename
Chmod
Delete
FILE
FOLDER
INFO
Name
Size
Permission
Action
Automat-20.2.0.egg-info
---
0755
Babel-2.8.0.egg-info
---
0755
CommandNotFound
---
0755
DistUpgrade
---
0755
HweSupportStatus
---
0755
Jinja2-3.0.3.egg-info
---
0755
MarkupSafe-2.0.1.egg-info
---
0755
OpenSSL
---
0755
PyGObject-3.42.1.egg-info
---
0755
PyHamcrest-2.0.2.egg-info
---
0755
PyJWT-2.3.0.egg-info
---
0755
PyYAML-5.4.1.egg-info
---
0755
SecretStorage-3.3.1.egg-info
---
0755
Twisted-22.1.0.egg-info
---
0755
UpdateManager
---
0755
__pycache__
---
0755
_distutils_hack
---
0755
_yaml
---
0755
apport
---
0755
apt
---
0755
apt_inst-stubs
---
0755
apt_pkg-stubs
---
0755
aptsources
---
0755
attr
---
0755
attrs-21.2.0.egg-info
---
0755
automat
---
0755
babel
---
0755
bcrypt
---
0755
bcrypt-3.2.0.egg-info
---
0755
blinker
---
0755
certifi
---
0755
certifi-2020.6.20.egg-info
---
0755
chardet
---
0755
chardet-4.0.0.egg-info
---
0755
click
---
0755
click-8.0.3.egg-info
---
0755
cloud_init-25.1.4.egg-info
---
0755
cloudinit
---
0755
colorama
---
0755
colorama-0.4.4.egg-info
---
0755
configobj-5.0.6.egg-info
---
0755
constantly
---
0755
constantly-15.1.0.egg-info
---
0755
cryptography
---
0755
cryptography-3.4.8.egg-info
---
0755
dbus
---
0755
dbus_python-1.2.18.egg-info
---
0755
debian
---
0755
debian_bundle
---
0755
distro
---
0755
distro-1.7.0.egg-info
---
0755
distro_info-1.1+ubuntu0.2.egg-info
---
0755
fail2ban
---
0755
gi
---
0755
hamcrest
---
0755
httplib2
---
0755
httplib2-0.20.2.egg-info
---
0755
hyperlink
---
0755
hyperlink-21.0.0.egg-info
---
0755
idna
---
0755
idna-3.3.egg-info
---
0755
importlib_metadata
---
0755
importlib_metadata-4.6.4.egg-info
---
0755
incremental
---
0755
incremental-21.3.0.egg-info
---
0755
iotop
---
0755
janitor
---
0755
jeepney
---
0755
jeepney-0.7.1.dist-info
---
0755
jinja2
---
0755
jsonpatch-1.32.egg-info
---
0755
jsonpointer-2.0.egg-info
---
0755
jsonschema
---
0755
jsonschema-3.2.0.egg-info
---
0755
jwt
---
0755
keyring
---
0755
keyring-23.5.0.egg-info
---
0755
landscape
---
0755
launchpadlib
---
0755
launchpadlib-1.10.16.egg-info
---
0755
lazr
---
0755
lazr.restfulclient-0.14.4.egg-info
---
0755
lazr.uri-1.0.6.egg-info
---
0755
lxml
---
0755
lxml-4.8.0.egg-info
---
0755
magic
---
0755
markupsafe
---
0755
more_itertools
---
0755
more_itertools-8.10.0.egg-info
---
0755
netifaces-0.11.0.egg-info
---
0755
oauthlib
---
0755
oauthlib-3.2.0.egg-info
---
0755
pexpect
---
0755
pkg_resources
---
0755
ptyprocess
---
0755
ptyprocess-0.7.0.dist-info
---
0755
pyOpenSSL-21.0.0.egg-info
---
0755
pyasn1
---
0755
pyasn1-0.4.8.egg-info
---
0755
pyasn1_modules
---
0755
pygtkcompat
---
0755
pyparsing-2.4.7.egg-info
---
0755
pyrsistent
---
0755
pyrsistent-0.18.1.egg-info
---
0755
pyserial-3.5.egg-info
---
0755
python_apt-2.4.0+ubuntu4.egg-info
---
0755
python_debian-0.1.43+ubuntu1.1.egg-info
---
0755
python_magic-0.4.24.egg-info
---
0755
pytz
---
0755
pytz-2022.1.egg-info
---
0755
regex
---
0755
regex-2022.1.18-py3.10.egg-info
---
0755
requests
---
0755
requests-2.25.1.egg-info
---
0755
secretstorage
---
0755
serial
---
0755
service_identity
---
0755
service_identity-18.1.0.egg-info
---
0755
setuptools
---
0755
setuptools-59.6.0.egg-info
---
0755
six-1.16.0.egg-info
---
0755
softwareproperties
---
0755
sos
---
0755
sos-4.5.6.egg-info
---
0755
ssh_import_id
---
0755
ssh_import_id-5.11.egg-info
---
0755
systemd
---
0755
twisted
---
0755
uaclient
---
0755
ubuntu_pro_client-8001.egg-info
---
0755
ufw
---
0755
unattended_upgrades-0.1.egg-info
---
0755
urllib3
---
0755
urllib3-1.26.5.egg-info
---
0755
wadllib
---
0755
wadllib-1.3.6.egg-info
---
0755
yaml
---
0755
zipp-1.0.0.egg-info
---
0755
zope
---
0755
zope.interface-5.4.0.egg-info
---
0755
_cffi_backend.cpython-310-x86_64-linux-gnu.so
194472 bytes
0644
_dbus_bindings.cpython-310-x86_64-linux-gnu.so
168152 bytes
0644
_dbus_glib_bindings.cpython-310-x86_64-linux-gnu.so
23040 bytes
0644
_pyrsistent_version.py
23 bytes
0644
_snack.cpython-310-x86_64-linux-gnu.so
47888 bytes
0644
_version.py
21 bytes
0644
apport_python_hook.py
8063 bytes
0644
apt_inst.cpython-310-x86_64-linux-gnu.so
60064 bytes
0644
apt_pkg.cpython-310-x86_64-linux-gnu.so
347096 bytes
0644
blinker-1.4.egg-info
3901 bytes
0644
command_not_found-0.3.egg-info
189 bytes
0644
configobj.py
89613 bytes
0644
deb822.py
273 bytes
0644
debconf.py
6769 bytes
0644
distro_info.py
12528 bytes
0644
iotop-0.6.egg-info
348 bytes
0644
jsonpatch.py
28813 bytes
0644
jsonpointer.py
9796 bytes
0644
lsb_release.py
14901 bytes
0644
netifaces.cpython-310-x86_64-linux-gnu.so
23232 bytes
0644
pexpect-4.8.0.egg-info
2285 bytes
0644
problem_report.py
26867 bytes
0644
pvectorc.cpython-310-x86_64-linux-gnu.so
37552 bytes
0644
pyasn1_modules-0.2.1.egg-info
1722 bytes
0644
pyinotify-0.9.6.egg-info
1421 bytes
0644
pyinotify.py
89010 bytes
0644
pyparsing.py
273365 bytes
0644
six.py
34549 bytes
0644
snack.py
31134 bytes
0644
systemd_python-234.egg-info
586 bytes
0644
ufw-0.36.1.egg-info
263 bytes
0644
validate.py
47243 bytes
0644
zipp.py
6914 bytes
0644
zope.interface-5.4.0-nspkg.pth
529 bytes
0644
N4ST4R_ID | Naxtarrr