Submit
Path:
~
/
/
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)
Submit
FILE
FOLDER
Name
Size
Permission
Action
Babel-2.8.0.egg-info
---
0755
CommandNotFound
---
0755
DistUpgrade
---
0755
Django-3.2.12.egg-info
---
0755
Genshi-0.7.6.egg-info
---
0755
HweSupportStatus
---
0755
Jinja2-3.0.3.egg-info
---
0755
MarkupSafe-2.0.1.egg-info
---
0755
MySQLdb
---
0755
OpenSSL
---
0755
PyGObject-3.42.1.egg-info
---
0755
PyGreSQL-5.1.2.egg-info
---
0755
PyJWT-2.3.0.egg-info
---
0755
PyNaCl-1.5.0.dist-info
---
0755
PyYAML-5.4.1.egg-info
---
0755
Pygments-2.11.2.egg-info
---
0755
S3
---
0755
SecretStorage-3.3.1.egg-info
---
0755
Sphinx-4.3.2.egg-info
---
0755
Trac-1.5.3.egg-info
---
0755
UpdateManager
---
0755
__pycache__
---
0755
_distutils_hack
---
0755
_yaml
---
0755
alabaster
---
0755
alabaster-0.7.12.egg-info
---
0755
apport
---
0755
apt
---
0755
apt_inst-stubs
---
0755
apt_pkg-stubs
---
0755
aptsources
---
0755
asgiref
---
0755
asgiref-3.5.0.egg-info
---
0755
attr
---
0755
attrs-21.2.0.egg-info
---
0755
awscli
---
0755
awscli-1.22.34.egg-info
---
0755
babel
---
0755
blinker
---
0755
boto
---
0755
boto-2.49.0.egg-info
---
0755
botocore
---
0755
botocore-1.23.34.egg-info
---
0755
certifi
---
0755
certifi-2020.6.20.egg-info
---
0755
chardet
---
0755
chardet-4.0.0.egg-info
---
0755
colorama
---
0755
colorama-0.4.4.egg-info
---
0755
cryptography
---
0755
cryptography-3.4.8.egg-info
---
0755
curl
---
0755
dateutil
---
0755
dbus
---
0755
dbus_python-1.2.18.egg-info
---
0755
debian
---
0755
debian_bundle
---
0755
devscripts
---
0755
devscripts-2.22.1ubuntu1.egg-info
---
0755
distlib
---
0755
distlib-0.3.4.egg-info
---
0755
distro
---
0755
distro-1.7.0.egg-info
---
0755
distro_info-1.1+ubuntu0.2.egg-info
---
0755
django
---
0755
docutils
---
0755
docutils-0.17.1.egg-info
---
0755
duplicity
---
0755
duplicity-0.8.21.egg-info
---
0755
fail2ban
---
0755
fail2ban-0.11.2.egg-info
---
0755
fasteners
---
0755
fasteners-0.14.1.egg-info
---
0755
filelock
---
0755
filelock-3.6.0.egg-info
---
0755
future
---
0755
future-0.18.2.egg-info
---
0755
genshi
---
0755
gi
---
0755
hgdemandimport
---
0755
hgext
---
0755
hgext3rd
---
0755
httplib2
---
0755
httplib2-0.20.2.egg-info
---
0755
idna
---
0755
idna-3.3.egg-info
---
0755
imagesize-1.3.0.egg-info
---
0755
importlib_metadata
---
0755
importlib_metadata-4.6.4.egg-info
---
0755
iotop
---
0755
janitor
---
0755
jeepney
---
0755
jeepney-0.7.1.dist-info
---
0755
jinja2
---
0755
jmespath
---
0755
jmespath-0.10.0.egg-info
---
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
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
libfuturize
---
0755
libpasteurize
---
0755
lockfile
---
0755
lockfile-0.12.2.egg-info
---
0755
magic
---
0755
markupsafe
---
0755
mercurial
---
0755
monotonic-1.6.egg-info
---
0755
more_itertools
---
0755
more_itertools-8.10.0.egg-info
---
0755
mysqlclient-1.4.6.egg-info
---
0755
nacl
---
0755
netifaces-0.11.0.egg-info
---
0755
netplan
---
0755
numpy
---
0755
numpy-1.21.5.egg-info
---
0755
oauthlib
---
0755
oauthlib-3.2.0.egg-info
---
0755
packaging
---
0755
packaging-21.3.egg-info
---
0755
past
---
0755
pexpect
---
0755
pip
---
0755
pip-22.0.2.dist-info
---
0755
pkg_resources
---
0755
platformdirs
---
0755
platformdirs-2.5.1.dist-info
---
0755
psycopg2
---
0755
psycopg2-2.9.2.egg-info
---
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
pycurl-7.44.1.egg-info
---
0755
pygments
---
0755
pygtkcompat
---
0755
pymacaroons
---
0755
pymacaroons-0.13.0.egg-info
---
0755
pyparsing-2.4.7.egg-info
---
0755
pyrsistent
---
0755
pyrsistent-0.18.1.egg-info
---
0755
pyserial-3.5.egg-info
---
0755
pysvn
---
0755
pysvn-1.9.15.egg-info
---
0755
python_apt-2.4.0+ubuntu4.1.egg-info
---
0755
python_dateutil-2.8.1.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
requests
---
0755
requests-2.25.1.egg-info
---
0755
roman-3.3.egg-info
---
0755
rsa
---
0755
rsa-4.8.egg-info
---
0755
s3cmd-2.2.0.egg-info
---
0755
s3transfer
---
0755
s3transfer-0.5.0.egg-info
---
0755
secretstorage
---
0755
serial
---
0755
setuptools
---
0755
setuptools-59.6.0.egg-info
---
0755
simplejson
---
0755
simplejson-3.17.6.egg-info
---
0755
six-1.16.0.egg-info
---
0755
snowballstemmer
---
0755
snowballstemmer-2.2.0.egg-info
---
0755
softwareproperties
---
0755
sos
---
0755
sos-4.9.2.egg-info
---
0755
sphinx
---
0755
sqlparse
---
0755
sqlparse-0.4.2.egg-info
---
0755
ssh_import_id
---
0755
ssh_import_id-5.11.egg-info
---
0755
systemd
---
0755
trac
---
0755
tracopt
---
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
virtualenv
---
0755
virtualenv-20.13.0+ds.dist-info
---
0755
wadllib
---
0755
wadllib-1.3.6.egg-info
---
0755
wheel
---
0755
wheel-0.37.1.egg-info
---
0755
xapian
---
0755
yaml
---
0755
zipp-1.0.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
_pg.cpython-310-x86_64-linux-gnu.so
114376 bytes
0644
_pyrsistent_version.py
23 bytes
0644
_snack.cpython-310-x86_64-linux-gnu.so
47888 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
deb822.py
273 bytes
0644
debconf.py
6769 bytes
0644
distro_info.py
12528 bytes
0644
drv_libxml2.py
15376 bytes
0644
imagesize.py
13352 bytes
0644
iotop-0.6.egg-info
348 bytes
0644
jsonpatch.py
28813 bytes
0644
jsonpointer.py
9796 bytes
0644
libxml2.py
346308 bytes
0644
libxml2mod.cpython-310-x86_64-linux-gnu.so
437808 bytes
0644
lsb_release.py
14901 bytes
0644
mercurial-6.1.1-py3.10.egg-info
1330 bytes
0644
monotonic.py
7169 bytes
0644
netifaces.cpython-310-x86_64-linux-gnu.so
23232 bytes
0644
pexpect-4.8.0.egg-info
2285 bytes
0644
pg.py
102204 bytes
0644
pgdb.py
63567 bytes
0644
problem_report.py
26867 bytes
0644
pvectorc.cpython-310-x86_64-linux-gnu.so
37552 bytes
0644
pycurl.cpython-310-x86_64-linux-gnu.so
143976 bytes
0644
pyparsing.py
273365 bytes
0644
roman.py
3664 bytes
0644
schedutils-0.6.egg-info
291 bytes
0644
schedutils.cpython-310-x86_64-linux-gnu.so
15136 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
zipp.py
6914 bytes
0644
N4ST4R_ID | Naxtarrr