X7ROOT File Manager
Current Path:
/opt/cloudlinux/venv/lib/python3.11/site-packages
opt
/
cloudlinux
/
venv
/
lib
/
python3.11
/
site-packages
/
ðŸ“
..
ðŸ“
GitPython-3.1.32.dist-info
ðŸ“
Jinja2-3.0.3.dist-info
ðŸ“
Mako-1.2.4.dist-info
ðŸ“
MarkupSafe-2.1.3.dist-info
ðŸ“
PyJWT-2.8.0.dist-info
ðŸ“
PyMySQL-1.1.0.dist-info
ðŸ“
PyVirtualDisplay-3.0.dist-info
ðŸ“
PyYAML-6.0.1.dist-info
ðŸ“
__pycache__
📄
_cffi_backend.cpython-311-x86_64-linux-gnu.so
(267.63 KB)
ðŸ“
_distutils_hack
📄
_pyrsistent_version.py
(23 B)
ðŸ“
_pytest
ðŸ“
_yaml
ðŸ“
aiohttp
ðŸ“
aiohttp-3.9.2.dist-info
ðŸ“
aiohttp_jinja2
ðŸ“
aiohttp_jinja2-1.5.dist-info
ðŸ“
aiohttp_security
ðŸ“
aiohttp_security-0.4.0.dist-info
ðŸ“
aiohttp_session
ðŸ“
aiohttp_session-2.9.0.dist-info
ðŸ“
aiosignal
ðŸ“
aiosignal-1.3.1.dist-info
ðŸ“
alembic
ðŸ“
alembic-1.11.1.dist-info
ðŸ“
annotated_types
ðŸ“
annotated_types-0.6.0.dist-info
ðŸ“
astroid
ðŸ“
astroid-2.15.6.dist-info
ðŸ“
attr
ðŸ“
attrs
ðŸ“
attrs-23.1.0.dist-info
ðŸ“
backports
ðŸ“
certifi
ðŸ“
certifi-2023.7.22.dist-info
ðŸ“
cffi
ðŸ“
cffi-1.15.1.dist-info
ðŸ“
chardet
ðŸ“
chardet-5.2.0.dist-info
ðŸ“
charset_normalizer
ðŸ“
charset_normalizer-2.1.1.dist-info
ðŸ“
cl_dom_collector
📄
cl_proc_hidepid.py
(4.53 KB)
ðŸ“
clcagefslib
ðŸ“
clcommon
ðŸ“
clconfig
ðŸ“
clconfigure
📄
clcontrollib.py
(51.73 KB)
ðŸ“
cldashboard
📄
cldetectlib.py
(18.13 KB)
📄
cldiaglib.py
(45.84 KB)
ðŸ“
clevents
ðŸ“
clflags
📄
clhooklib.py
(1.27 KB)
📄
cli_utils.py
(1.66 KB)
ðŸ“
cllicense
📄
cllicenselib.py
(9.1 KB)
ðŸ“
cllimits
ðŸ“
cllimits_validator
ðŸ“
cllimitslib_v2
ðŸ“
cllvectl
ðŸ“
clpackages
ðŸ“
clquota
ðŸ“
clselect
ðŸ“
clselector
ðŸ“
clsentry
📄
clsetuplib.py
(4.35 KB)
📄
clsudo.py
(14.42 KB)
ðŸ“
clsummary
ðŸ“
clveconfig
ðŸ“
clwizard
ðŸ“
configparser-5.0.2.dist-info
📄
configparser.py
(1.51 KB)
ðŸ“
contextlib2
ðŸ“
contextlib2-21.6.0.dist-info
ðŸ“
coverage
ðŸ“
coverage-7.2.7.dist-info
ðŸ“
cryptography
ðŸ“
cryptography-41.0.2.dist-info
ðŸ“
ddt-1.4.4.dist-info
📄
ddt.py
(12.43 KB)
ðŸ“
dill
ðŸ“
dill-0.3.7.dist-info
ðŸ“
distlib
ðŸ“
distlib-0.3.8.dist-info
📄
distutils-precedence.pth
(151 B)
ðŸ“
docopt-0.6.2.dist-info
📄
docopt.py
(19.48 KB)
ðŸ“
dodgy
ðŸ“
dodgy-0.2.1.dist-info
ðŸ“
filelock
ðŸ“
filelock-3.13.1.dist-info
ðŸ“
flake8
ðŸ“
flake8-5.0.4.dist-info
ðŸ“
flake8_polyfill
ðŸ“
flake8_polyfill-1.0.2.dist-info
ðŸ“
frozenlist
ðŸ“
frozenlist-1.4.0.dist-info
ðŸ“
future
ðŸ“
future-0.18.3.dist-info
ðŸ“
git
ðŸ“
gitdb
ðŸ“
gitdb-4.0.10.dist-info
ðŸ“
guppy
ðŸ“
guppy3-3.1.3.dist-info
ðŸ“
idna
ðŸ“
idna-3.4.dist-info
ðŸ“
iniconfig
ðŸ“
iniconfig-2.0.0.dist-info
ðŸ“
isort
ðŸ“
isort-5.12.0.dist-info
ðŸ“
jinja2
ðŸ“
jsonschema
ðŸ“
jsonschema-3.2.0.dist-info
ðŸ“
jwt
ðŸ“
lazy_object_proxy
ðŸ“
lazy_object_proxy-1.9.0.dist-info
ðŸ“
libfuturize
ðŸ“
libpasteurize
ðŸ“
lve_stats-2.0.dist-info
ðŸ“
lve_utils
📄
lveapi.py
(19.53 KB)
📄
lvectllib.py
(102.55 KB)
ðŸ“
lvemanager
📄
lvestat.py
(6.83 KB)
ðŸ“
lvestats
ðŸ“
lxml
ðŸ“
lxml-4.9.2.dist-info
ðŸ“
mako
ðŸ“
markupsafe
ðŸ“
mccabe-0.7.0.dist-info
📄
mccabe.py
(10.4 KB)
ðŸ“
mock
ðŸ“
mock-5.1.0.dist-info
ðŸ“
multidict
ðŸ“
multidict-6.0.4.dist-info
ðŸ“
numpy
ðŸ“
numpy-1.25.1.dist-info
ðŸ“
numpy.libs
ðŸ“
packaging
ðŸ“
packaging-23.1.dist-info
📄
pam.py
(7.38 KB)
ðŸ“
past
ðŸ“
pep8_naming-0.10.0.dist-info
📄
pep8ext_naming.py
(18.61 KB)
ðŸ“
pip
ðŸ“
pip-25.0.1.dist-info
ðŸ“
pkg_resources
ðŸ“
platformdirs
ðŸ“
platformdirs-3.11.0.dist-info
ðŸ“
pluggy
ðŸ“
pluggy-1.2.0.dist-info
ðŸ“
prettytable
ðŸ“
prettytable-3.8.0.dist-info
ðŸ“
prometheus_client
ðŸ“
prometheus_client-0.8.0.dist-info
ðŸ“
prospector
ðŸ“
prospector-1.10.2.dist-info
ðŸ“
psutil
ðŸ“
psutil-5.9.5.dist-info
ðŸ“
psycopg2
ðŸ“
psycopg2_binary-2.9.6.dist-info
ðŸ“
psycopg2_binary.libs
📄
py.py
(263 B)
ðŸ“
pycodestyle-2.9.1.dist-info
📄
pycodestyle.py
(101.08 KB)
ðŸ“
pycparser
ðŸ“
pycparser-2.21.dist-info
ðŸ“
pydantic
ðŸ“
pydantic-2.4.2.dist-info
ðŸ“
pydantic_core
ðŸ“
pydantic_core-2.10.1.dist-info
ðŸ“
pydocstyle
ðŸ“
pydocstyle-6.3.0.dist-info
ðŸ“
pyfakefs
ðŸ“
pyfakefs-5.2.3.dist-info
ðŸ“
pyflakes
ðŸ“
pyflakes-2.5.0.dist-info
ðŸ“
pylint
ðŸ“
pylint-2.17.4.dist-info
ðŸ“
pylint_celery
ðŸ“
pylint_celery-0.3.dist-info
ðŸ“
pylint_django
ðŸ“
pylint_django-2.5.3.dist-info
ðŸ“
pylint_flask
ðŸ“
pylint_flask-0.6.dist-info
ðŸ“
pylint_plugin_utils
ðŸ“
pylint_plugin_utils-0.7.dist-info
ðŸ“
pylve-2.1-py3.11.egg-info
📄
pylve.cpython-311-x86_64-linux-gnu.so
(25.48 KB)
ðŸ“
pymysql
ðŸ“
pyparsing
ðŸ“
pyparsing-3.0.9.dist-info
ðŸ“
pyrsistent
ðŸ“
pyrsistent-0.19.3.dist-info
ðŸ“
pytest
ðŸ“
pytest-7.4.0.dist-info
ðŸ“
pytest_check
ðŸ“
pytest_check-2.5.3.dist-info
ðŸ“
pytest_snapshot
ðŸ“
pytest_snapshot-0.9.0.dist-info
ðŸ“
pytest_subprocess
ðŸ“
pytest_subprocess-1.5.0.dist-info
ðŸ“
pytest_tap
ðŸ“
pytest_tap-3.5.dist-info
ðŸ“
python_pam-1.8.4.dist-info
ðŸ“
pyvirtualdisplay
ðŸ“
raven
ðŸ“
raven-6.10.0.dist-info
📄
remove_ubc.py
(5.73 KB)
ðŸ“
requests
ðŸ“
requests-2.31.0.dist-info
ðŸ“
requirements_detector
ðŸ“
requirements_detector-1.2.2.dist-info
ðŸ“
schema-0.7.5.dist-info
📄
schema.py
(29.51 KB)
📄
secureio.py
(18.83 KB)
ðŸ“
semver
ðŸ“
semver-3.0.1.dist-info
ðŸ“
sentry_sdk
ðŸ“
sentry_sdk-1.29.2.dist-info
ðŸ“
setoptconf
ðŸ“
setoptconf_tmp-0.3.1.dist-info
ðŸ“
setuptools
ðŸ“
setuptools-78.1.0.dist-info
📄
simple_rpm.so
(11.29 KB)
ðŸ“
simplejson
ðŸ“
simplejson-3.19.1.dist-info
ðŸ“
six-1.16.0.dist-info
📄
six.py
(33.74 KB)
ðŸ“
smmap
ðŸ“
smmap-5.0.0.dist-info
ðŸ“
snowballstemmer
ðŸ“
snowballstemmer-2.2.0.dist-info
ðŸ“
sqlalchemy
ðŸ“
sqlalchemy-1.3.24.dist-info
ðŸ“
ssa
ðŸ“
svgwrite
ðŸ“
svgwrite-1.4.3.dist-info
ðŸ“
tap
ðŸ“
tap_py-3.2.1.dist-info
ðŸ“
testfixtures
ðŸ“
testfixtures-7.1.0.dist-info
ðŸ“
toml
ðŸ“
toml-0.10.2.dist-info
ðŸ“
tomlkit
ðŸ“
tomlkit-0.11.8.dist-info
ðŸ“
typing_extensions-4.7.1.dist-info
ðŸ“
typing_extensions-4.8.0.dist-info
📄
typing_extensions.py
(108.48 KB)
ðŸ“
unshare-0.22.dist-info
📄
unshare.cpython-311-x86_64-linux-gnu.so
(8.17 KB)
ðŸ“
urllib3
ðŸ“
urllib3-2.0.4.dist-info
ðŸ“
vendors_api
ðŸ“
virtualenv
ðŸ“
virtualenv-20.21.1.dist-info
ðŸ“
wcwidth
ðŸ“
wcwidth-0.2.6.dist-info
ðŸ“
wmt
ðŸ“
wrapt
ðŸ“
wrapt-1.15.0.dist-info
ðŸ“
yaml
ðŸ“
yarl
ðŸ“
yarl-1.9.2.dist-info
Editing: pam.py
# (c) 2007 Chris AtLee <chris@atlee.ca> # Licensed under the MIT license: # http://www.opensource.org/licenses/mit-license.php # # Original author: Chris AtLee # # Modified by David Ford, 2011-12-6 # added py3 support and encoding # added pam_end # added pam_setcred to reset credentials after seeing Leon Walker's remarks # added byref as well # use readline to prestuff the getuser input ''' PAM module for python Provides an authenticate function that will allow the caller to authenticate a user against the Pluggable Authentication Modules (PAM) on the system. Implemented using ctypes, so no compilation is necessary. ''' __all__ = ['pam'] __version__ = '1.8.4' __author__ = 'David Ford <david@blue-labs.org>' __released__ = '2018 June 15' import sys from ctypes import CDLL, POINTER, Structure, CFUNCTYPE, cast, byref, sizeof from ctypes import c_void_p, c_size_t, c_char_p, c_char, c_int from ctypes import memmove from ctypes.util import find_library class PamHandle(Structure): """wrapper class for pam_handle_t pointer""" _fields_ = [ ("handle", c_void_p) ] def __init__(self): Structure.__init__(self) self.handle = 0 class PamMessage(Structure): """wrapper class for pam_message structure""" _fields_ = [ ("msg_style", c_int), ("msg", c_char_p) ] def __repr__(self): return "<PamMessage %i '%s'>" % (self.msg_style, self.msg) class PamResponse(Structure): """wrapper class for pam_response structure""" _fields_ = [ ("resp", c_char_p), ("resp_retcode", c_int) ] def __repr__(self): return "<PamResponse %i '%s'>" % (self.resp_retcode, self.resp) conv_func = CFUNCTYPE(c_int, c_int, POINTER(POINTER(PamMessage)), POINTER(POINTER(PamResponse)), c_void_p) class PamConv(Structure): """wrapper class for pam_conv structure""" _fields_ = [ ("conv", conv_func), ("appdata_ptr", c_void_p) ] # Various constants PAM_PROMPT_ECHO_OFF = 1 PAM_PROMPT_ECHO_ON = 2 PAM_ERROR_MSG = 3 PAM_TEXT_INFO = 4 PAM_REINITIALIZE_CRED = 8 libc = CDLL(find_library("c")) libpam = CDLL(find_library("pam")) calloc = libc.calloc calloc.restype = c_void_p calloc.argtypes = [c_size_t, c_size_t] # bug #6 (@NIPE-SYSTEMS), some libpam versions don't include this function if hasattr(libpam, 'pam_end'): pam_end = libpam.pam_end pam_end.restype = c_int pam_end.argtypes = [PamHandle, c_int] pam_start = libpam.pam_start pam_start.restype = c_int pam_start.argtypes = [c_char_p, c_char_p, POINTER(PamConv), POINTER(PamHandle)] pam_setcred = libpam.pam_setcred pam_setcred.restype = c_int pam_setcred.argtypes = [PamHandle, c_int] pam_strerror = libpam.pam_strerror pam_strerror.restype = c_char_p pam_strerror.argtypes = [PamHandle, c_int] pam_authenticate = libpam.pam_authenticate pam_authenticate.restype = c_int pam_authenticate.argtypes = [PamHandle, c_int] class pam(): code = 0 reason = None def __init__(self): pass def authenticate(self, username, password, service='login', encoding='utf-8', resetcreds=True): """username and password authentication for the given service. Returns True for success, or False for failure. self.code (integer) and self.reason (string) are always stored and may be referenced for the reason why authentication failed. 0/'Success' will be stored for success. Python3 expects bytes() for ctypes inputs. This function will make necessary conversions using the supplied encoding. Inputs: username: username to authenticate password: password in plain text service: PAM service to authenticate against, defaults to 'login' Returns: success: True failure: False """ @conv_func def my_conv(n_messages, messages, p_response, app_data): """Simple conversation function that responds to any prompt where the echo is off with the supplied password""" # Create an array of n_messages response objects addr = calloc(n_messages, sizeof(PamResponse)) response = cast(addr, POINTER(PamResponse)) p_response[0] = response for i in range(n_messages): if messages[i].contents.msg_style == PAM_PROMPT_ECHO_OFF: dst = calloc(len(password)+1, sizeof(c_char)) memmove(dst, cpassword, len(password)) response[i].resp = dst response[i].resp_retcode = 0 return 0 # python3 ctypes prefers bytes if sys.version_info >= (3,): if isinstance(username, str): username = username.encode(encoding) if isinstance(password, str): password = password.encode(encoding) if isinstance(service, str): service = service.encode(encoding) else: if isinstance(username, unicode): username = username.encode(encoding) if isinstance(password, unicode): password = password.encode(encoding) if isinstance(service, unicode): service = service.encode(encoding) if b'\x00' in username or b'\x00' in password or b'\x00' in service: self.code = 4 # PAM_SYSTEM_ERR in Linux-PAM self.reason = 'strings may not contain NUL' return False # do this up front so we can safely throw an exception if there's # anything wrong with it cpassword = c_char_p(password) handle = PamHandle() conv = PamConv(my_conv, 0) retval = pam_start(service, username, byref(conv), byref(handle)) if retval != 0: # This is not an authentication error, something has gone wrong starting up PAM self.code = retval self.reason = "pam_start() failed" return False retval = pam_authenticate(handle, 0) auth_success = retval == 0 if auth_success and resetcreds: retval = pam_setcred(handle, PAM_REINITIALIZE_CRED); # store information to inform the caller why we failed self.code = retval self.reason = pam_strerror(handle, retval) if sys.version_info >= (3,): self.reason = self.reason.decode(encoding) if hasattr(libpam, 'pam_end'): pam_end(handle, retval) return auth_success def authenticate(*vargs, **dargs): """ Compatibility function for older versions of python-pam. """ return pam().authenticate(*vargs, **dargs) if __name__ == "__main__": import readline, getpass def input_with_prefill(prompt, text): def hook(): readline.insert_text(text) readline.redisplay() readline.set_pre_input_hook(hook) if sys.version_info >= (3,): result = input(prompt) else: result = raw_input(prompt) readline.set_pre_input_hook() return result pam = pam() username = input_with_prefill('Username: ', getpass.getuser()) # enter a valid username and an invalid/valid password, to verify both failure and success pam.authenticate(username, getpass.getpass()) print('{} {}'.format(pam.code, pam.reason))
Upload File
Create Folder