SILENT KILLERPanel

Current Path: > > opt > alt > python37 > > lib64 > python3.7


Operation   : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
Software     : Apache
Server IP    : 162.0.232.56 | Your IP: 216.73.216.111
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: //opt/alt/python37//lib64/python3.7

NameTypeSizeLast ModifiedActions
__pycache__ Directory - -
asyncio Directory - -
collections Directory - -
concurrent Directory - -
config-3.7m Directory - -
ctypes Directory - -
curses Directory - -
dbm Directory - -
distutils Directory - -
email Directory - -
encodings Directory - -
ensurepip Directory - -
html Directory - -
http Directory - -
idlelib Directory - -
importlib Directory - -
json Directory - -
lib-dynload Directory - -
lib2to3 Directory - -
logging Directory - -
multiprocessing Directory - -
pydoc_data Directory - -
site-packages Directory - -
sqlite3 Directory - -
test Directory - -
unittest Directory - -
urllib Directory - -
venv Directory - -
wsgiref Directory - -
xml Directory - -
xmlrpc Directory - -
__future__.py File 5101 bytes April 17 2024 17:36:08.
__phello__.foo.py File 64 bytes April 17 2024 17:36:07.
_bootlocale.py File 1801 bytes April 17 2024 17:36:03.
_collections_abc.py File 26424 bytes April 17 2024 17:36:03.
_compat_pickle.py File 8749 bytes April 17 2024 17:36:07.
_compression.py File 5340 bytes April 17 2024 17:36:04.
_dummy_thread.py File 6027 bytes April 17 2024 17:36:07.
_markupbase.py File 14598 bytes April 17 2024 17:36:03.
_osx_support.py File 19600 bytes April 17 2024 17:36:07.
_py_abc.py File 6186 bytes April 17 2024 17:36:08.
_pydecimal.py File 228690 bytes April 17 2024 17:36:03.
_pyio.py File 91616 bytes April 17 2024 17:36:04.
_sitebuiltins.py File 3115 bytes April 17 2024 17:36:04.
_strptime.py File 25504 bytes April 17 2024 17:36:08.
_sysconfigdata_dm_linux_x86_64-linux-gnu.py File 31329 bytes April 17 2024 17:36:03.
_sysconfigdata_m_linux_x86_64-linux-gnu.py File 28600 bytes April 17 2024 17:36:08.
_threading_local.py File 7214 bytes April 17 2024 17:36:03.
_weakrefset.py File 5679 bytes April 17 2024 17:36:03.
abc.py File 5580 bytes April 17 2024 17:36:03.
aifc.py File 32814 bytes April 17 2024 17:36:08.
antigravity.py File 477 bytes April 17 2024 17:36:04.
argparse.py File 95372 bytes April 17 2024 17:36:07.
ast.py File 12842 bytes April 17 2024 17:36:07.
asynchat.py File 11328 bytes April 17 2024 17:36:07.
asyncore.py File 20118 bytes April 17 2024 17:36:08.
base64.py File 20393 bytes April 17 2024 17:36:04.
bdb.py File 31730 bytes April 17 2024 17:36:07.
binhex.py File 13954 bytes April 17 2024 17:36:03.
bisect.py File 2557 bytes April 17 2024 17:36:03.
bz2.py File 12410 bytes April 17 2024 17:36:07.
cProfile.py File 6253 bytes April 17 2024 17:36:03.
calendar.py File 24826 bytes April 17 2024 17:36:07.
cgi.py File 35050 bytes April 17 2024 17:36:07.
cgitb.py File 12018 bytes April 17 2024 17:36:08.
chunk.py File 5435 bytes April 17 2024 17:36:04.
cmd.py File 14860 bytes April 17 2024 17:36:03.
code.py File 10622 bytes April 17 2024 17:36:04.
codecs.py File 36615 bytes April 17 2024 17:36:03.
codeop.py File 6275 bytes April 17 2024 17:36:03.
colorsys.py File 4064 bytes April 17 2024 17:36:03.
compileall.py File 13788 bytes April 17 2024 17:36:03.
configparser.py File 54283 bytes April 17 2024 17:36:03.
contextlib.py File 24763 bytes April 17 2024 17:36:03.
contextvars.py File 129 bytes April 17 2024 17:36:07.
copy.py File 8856 bytes April 17 2024 17:36:03.
copyreg.py File 7017 bytes April 17 2024 17:36:07.
crypt.py File 3346 bytes April 17 2024 17:36:03.
csv.py File 16180 bytes April 17 2024 17:36:03.
dataclasses.py File 49520 bytes April 17 2024 17:36:07.
datetime.py File 86544 bytes April 17 2024 17:36:08.
decimal.py File 320 bytes April 17 2024 17:36:07.
difflib.py File 84393 bytes April 17 2024 17:36:04.
dis.py File 19888 bytes April 17 2024 17:36:03.
doctest.py File 104560 bytes April 17 2024 17:36:03.
dummy_threading.py File 2815 bytes April 17 2024 17:36:03.
enum.py File 35043 bytes April 17 2024 17:36:04.
filecmp.py File 9830 bytes April 17 2024 17:36:03.
fileinput.py File 14625 bytes April 17 2024 17:36:04.
fnmatch.py File 4056 bytes April 17 2024 17:36:03.
formatter.py File 15143 bytes April 17 2024 17:36:03.
fractions.py File 23752 bytes April 17 2024 17:36:03.
ftplib.py File 35618 bytes April 17 2024 17:36:03.
functools.py File 32932 bytes April 17 2024 17:36:08.
genericpath.py File 4912 bytes April 17 2024 17:36:08.
getopt.py File 7489 bytes April 17 2024 17:36:07.
getpass.py File 5994 bytes April 17 2024 17:36:03.
gettext.py File 21967 bytes April 17 2024 17:36:07.
glob.py File 5638 bytes April 17 2024 17:36:03.
gzip.py File 20637 bytes April 17 2024 17:36:07.
hashlib.py File 9534 bytes April 17 2024 17:36:08.
heapq.py File 23017 bytes April 17 2024 17:36:03.
hmac.py File 6517 bytes April 17 2024 17:36:04.
imaplib.py File 53292 bytes April 17 2024 17:36:07.
imghdr.py File 3795 bytes April 17 2024 17:36:07.
imp.py File 10536 bytes April 17 2024 17:36:03.
inspect.py File 117635 bytes April 17 2024 17:36:07.
io.py File 3517 bytes April 17 2024 17:36:03.
ipaddress.py File 73578 bytes April 17 2024 17:36:07.
keyword.py File 2256 bytes April 17 2024 17:36:07.
linecache.py File 5330 bytes April 17 2024 17:36:04.
locale.py File 78191 bytes April 17 2024 17:36:07.
lzma.py File 12983 bytes April 17 2024 17:36:08.
macpath.py File 6123 bytes April 17 2024 17:36:03.
mailbox.py File 78654 bytes April 17 2024 17:36:07.
mailcap.py File 9067 bytes April 17 2024 17:36:03.
mimetypes.py File 21496 bytes April 17 2024 17:36:07.
modulefinder.py File 23035 bytes April 17 2024 17:36:03.
netrc.py File 5566 bytes April 17 2024 17:36:04.
nntplib.py File 43087 bytes April 17 2024 17:36:03.
ntpath.py File 22340 bytes April 17 2024 17:36:03.
nturl2path.py File 2584 bytes April 17 2024 17:36:07.
numbers.py File 10244 bytes April 17 2024 17:36:08.
opcode.py File 5824 bytes April 17 2024 17:36:08.
operator.py File 10863 bytes April 17 2024 17:36:07.
optparse.py File 60371 bytes April 17 2024 17:36:07.
os.py File 37901 bytes April 17 2024 17:36:03.
pathlib.py File 50329 bytes April 17 2024 17:36:07.
pdb.py File 62505 bytes April 17 2024 17:36:04.
pickle.py File 57994 bytes April 17 2024 17:36:04.
pickletools.py File 91220 bytes April 17 2024 17:36:03.
pipes.py File 8916 bytes April 17 2024 17:36:07.
pkgutil.py File 21461 bytes April 17 2024 17:36:03.
platform.py File 46994 bytes April 17 2024 17:36:03.
plistlib.py File 30709 bytes April 17 2024 17:36:03.
poplib.py File 14964 bytes April 17 2024 17:36:03.
posixpath.py File 15771 bytes April 17 2024 17:36:04.
pprint.py File 20884 bytes April 17 2024 17:36:03.
profile.py File 22494 bytes April 17 2024 17:36:04.
pstats.py File 27315 bytes April 17 2024 17:36:03.
pty.py File 4763 bytes April 17 2024 17:36:03.
py_compile.py File 8001 bytes April 17 2024 17:36:07.
pyclbr.py File 15137 bytes April 17 2024 17:36:03.
pydoc.py File 105876 bytes April 17 2024 17:36:03.
queue.py File 11359 bytes April 17 2024 17:36:07.
quopri.py File 7265 bytes April 17 2024 17:36:07.
random.py File 27557 bytes April 17 2024 17:36:03.
re.py File 15306 bytes April 17 2024 17:36:04.
reprlib.py File 5267 bytes April 17 2024 17:36:03.
rlcompleter.py File 7097 bytes April 17 2024 17:36:08.
runpy.py File 11959 bytes April 17 2024 17:36:03.
sched.py File 6442 bytes April 17 2024 17:36:07.
secrets.py File 2038 bytes April 17 2024 17:36:04.
selectors.py File 18561 bytes April 17 2024 17:36:03.
shelve.py File 8527 bytes April 17 2024 17:36:07.
shlex.py File 13100 bytes April 17 2024 17:36:08.
shutil.py File 41950 bytes April 17 2024 17:36:07.
signal.py File 2123 bytes April 17 2024 17:36:07.
site.py File 21575 bytes April 17 2024 17:36:07.
smtpd.py File 34722 bytes April 17 2024 17:36:04.
smtplib.py File 44443 bytes April 17 2024 17:36:03.
sndhdr.py File 7086 bytes April 17 2024 17:36:07.
socket.py File 27469 bytes April 17 2024 17:36:08.
socketserver.py File 26923 bytes April 17 2024 17:36:08.
sre_compile.py File 26872 bytes April 17 2024 17:36:03.
sre_constants.py File 7177 bytes April 17 2024 17:36:03.
sre_parse.py File 39156 bytes April 17 2024 17:36:04.
ssl.py File 45495 bytes April 17 2024 17:36:07.
stat.py File 5391 bytes April 17 2024 17:36:07.
statistics.py File 20651 bytes April 17 2024 17:36:03.
string.py File 11564 bytes April 17 2024 17:36:07.
stringprep.py File 12917 bytes April 17 2024 17:36:04.
struct.py File 257 bytes April 17 2024 17:36:04.
subprocess.py File 72649 bytes April 17 2024 17:36:03.
sunau.py File 18375 bytes April 17 2024 17:36:03.
symbol.py File 2142 bytes April 17 2024 17:36:03.
symtable.py File 7279 bytes April 17 2024 17:36:07.
sysconfig.py File 24440 bytes April 17 2024 17:36:07.
tabnanny.py File 11419 bytes April 17 2024 17:36:07.
tarfile.py File 92675 bytes April 17 2024 17:36:03.
telnetlib.py File 23135 bytes April 17 2024 17:36:03.
tempfile.py File 26730 bytes April 17 2024 17:36:03.
textwrap.py File 19407 bytes April 17 2024 17:36:03.
this.py File 1003 bytes April 17 2024 17:36:04.
threading.py File 49284 bytes April 17 2024 17:36:07.
timeit.py File 13493 bytes April 17 2024 17:36:03.
token.py File 3763 bytes April 17 2024 17:36:03.
tokenize.py File 27031 bytes April 17 2024 17:36:07.
trace.py File 28903 bytes April 17 2024 17:36:03.
traceback.py File 23437 bytes April 17 2024 17:36:07.
tracemalloc.py File 17076 bytes April 17 2024 17:36:07.
tty.py File 879 bytes April 17 2024 17:36:03.
types.py File 9897 bytes April 17 2024 17:36:03.
typing.py File 56438 bytes April 17 2024 17:36:07.
uu.py File 7277 bytes April 17 2024 17:36:03.
uuid.py File 29518 bytes April 17 2024 17:36:03.
warnings.py File 20080 bytes April 17 2024 17:36:03.
wave.py File 18230 bytes April 17 2024 17:36:03.
weakref.py File 21508 bytes April 17 2024 17:36:07.
webbrowser.py File 23715 bytes April 17 2024 17:36:07.
xdrlib.py File 5913 bytes April 17 2024 17:36:08.
zipapp.py File 7535 bytes April 17 2024 17:36:03.
zipfile.py File 81094 bytes April 17 2024 17:36:08.

Reading File: //opt/alt/python37//lib64/python3.7/asynchat.py

# -*- Mode: Python; tab-width: 4 -*-
#       Id: asynchat.py,v 2.26 2000/09/07 22:29:26 rushing Exp
#       Author: Sam Rushing <rushing@nightmare.com>

# ======================================================================
# Copyright 1996 by Sam Rushing
#
#                         All Rights Reserved
#
# Permission to use, copy, modify, and distribute this software and
# its documentation for any purpose and without fee is hereby
# granted, provided that the above copyright notice appear in all
# copies and that both that copyright notice and this permission
# notice appear in supporting documentation, and that the name of Sam
# Rushing not be used in advertising or publicity pertaining to
# distribution of the software without specific, written prior
# permission.
#
# SAM RUSHING DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
# NO EVENT SHALL SAM RUSHING BE LIABLE FOR ANY SPECIAL, 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.
# ======================================================================

r"""A class supporting chat-style (command/response) protocols.

This class adds support for 'chat' style protocols - where one side
sends a 'command', and the other sends a response (examples would be
the common internet protocols - smtp, nntp, ftp, etc..).

The handle_read() method looks at the input stream for the current
'terminator' (usually '\r\n' for single-line responses, '\r\n.\r\n'
for multi-line output), calling self.found_terminator() on its
receipt.

for example:
Say you build an async nntp client using this class.  At the start
of the connection, you'll have self.terminator set to '\r\n', in
order to process the single-line greeting.  Just before issuing a
'LIST' command you'll set it to '\r\n.\r\n'.  The output of the LIST
command will be accumulated (using your own 'collect_incoming_data'
method) up to the terminator, and then control will be returned to
you - by calling your self.found_terminator() method.
"""
import asyncore
from collections import deque


class async_chat(asyncore.dispatcher):
    """This is an abstract class.  You must derive from this class, and add
    the two methods collect_incoming_data() and found_terminator()"""

    # these are overridable defaults

    ac_in_buffer_size = 65536
    ac_out_buffer_size = 65536

    # we don't want to enable the use of encoding by default, because that is a
    # sign of an application bug that we don't want to pass silently

    use_encoding = 0
    encoding = 'latin-1'

    def __init__(self, sock=None, map=None):
        # for string terminator matching
        self.ac_in_buffer = b''

        # we use a list here rather than io.BytesIO for a few reasons...
        # del lst[:] is faster than bio.truncate(0)
        # lst = [] is faster than bio.truncate(0)
        self.incoming = []

        # we toss the use of the "simple producer" and replace it with
        # a pure deque, which the original fifo was a wrapping of
        self.producer_fifo = deque()
        asyncore.dispatcher.__init__(self, sock, map)

    def collect_incoming_data(self, data):
        raise NotImplementedError("must be implemented in subclass")

    def _collect_incoming_data(self, data):
        self.incoming.append(data)

    def _get_data(self):
        d = b''.join(self.incoming)
        del self.incoming[:]
        return d

    def found_terminator(self):
        raise NotImplementedError("must be implemented in subclass")

    def set_terminator(self, term):
        """Set the input delimiter.

        Can be a fixed string of any length, an integer, or None.
        """
        if isinstance(term, str) and self.use_encoding:
            term = bytes(term, self.encoding)
        elif isinstance(term, int) and term < 0:
            raise ValueError('the number of received bytes must be positive')
        self.terminator = term

    def get_terminator(self):
        return self.terminator

    # grab some more data from the socket,
    # throw it to the collector method,
    # check for the terminator,
    # if found, transition to the next state.

    def handle_read(self):

        try:
            data = self.recv(self.ac_in_buffer_size)
        except BlockingIOError:
            return
        except OSError as why:
            self.handle_error()
            return

        if isinstance(data, str) and self.use_encoding:
            data = bytes(str, self.encoding)
        self.ac_in_buffer = self.ac_in_buffer + data

        # Continue to search for self.terminator in self.ac_in_buffer,
        # while calling self.collect_incoming_data.  The while loop
        # is necessary because we might read several data+terminator
        # combos with a single recv(4096).

        while self.ac_in_buffer:
            lb = len(self.ac_in_buffer)
            terminator = self.get_terminator()
            if not terminator:
                # no terminator, collect it all
                self.collect_incoming_data(self.ac_in_buffer)
                self.ac_in_buffer = b''
            elif isinstance(terminator, int):
                # numeric terminator
                n = terminator
                if lb < n:
                    self.collect_incoming_data(self.ac_in_buffer)
                    self.ac_in_buffer = b''
                    self.terminator = self.terminator - lb
                else:
                    self.collect_incoming_data(self.ac_in_buffer[:n])
                    self.ac_in_buffer = self.ac_in_buffer[n:]
                    self.terminator = 0
                    self.found_terminator()
            else:
                # 3 cases:
                # 1) end of buffer matches terminator exactly:
                #    collect data, transition
                # 2) end of buffer matches some prefix:
                #    collect data to the prefix
                # 3) end of buffer does not match any prefix:
                #    collect data
                terminator_len = len(terminator)
                index = self.ac_in_buffer.find(terminator)
                if index != -1:
                    # we found the terminator
                    if index > 0:
                        # don't bother reporting the empty string
                        # (source of subtle bugs)
                        self.collect_incoming_data(self.ac_in_buffer[:index])
                    self.ac_in_buffer = self.ac_in_buffer[index+terminator_len:]
                    # This does the Right Thing if the terminator
                    # is changed here.
                    self.found_terminator()
                else:
                    # check for a prefix of the terminator
                    index = find_prefix_at_end(self.ac_in_buffer, terminator)
                    if index:
                        if index != lb:
                            # we found a prefix, collect up to the prefix
                            self.collect_incoming_data(self.ac_in_buffer[:-index])
                            self.ac_in_buffer = self.ac_in_buffer[-index:]
                        break
                    else:
                        # no prefix, collect it all
                        self.collect_incoming_data(self.ac_in_buffer)
                        self.ac_in_buffer = b''

    def handle_write(self):
        self.initiate_send()

    def handle_close(self):
        self.close()

    def push(self, data):
        if not isinstance(data, (bytes, bytearray, memoryview)):
            raise TypeError('data argument must be byte-ish (%r)',
                            type(data))
        sabs = self.ac_out_buffer_size
        if len(data) > sabs:
            for i in range(0, len(data), sabs):
                self.producer_fifo.append(data[i:i+sabs])
        else:
            self.producer_fifo.append(data)
        self.initiate_send()

    def push_with_producer(self, producer):
        self.producer_fifo.append(producer)
        self.initiate_send()

    def readable(self):
        "predicate for inclusion in the readable for select()"
        # cannot use the old predicate, it violates the claim of the
        # set_terminator method.

        # return (len(self.ac_in_buffer) <= self.ac_in_buffer_size)
        return 1

    def writable(self):
        "predicate for inclusion in the writable for select()"
        return self.producer_fifo or (not self.connected)

    def close_when_done(self):
        "automatically close this channel once the outgoing queue is empty"
        self.producer_fifo.append(None)

    def initiate_send(self):
        while self.producer_fifo and self.connected:
            first = self.producer_fifo[0]
            # handle empty string/buffer or None entry
            if not first:
                del self.producer_fifo[0]
                if first is None:
                    self.handle_close()
                    return

            # handle classic producer behavior
            obs = self.ac_out_buffer_size
            try:
                data = first[:obs]
            except TypeError:
                data = first.more()
                if data:
                    self.producer_fifo.appendleft(data)
                else:
                    del self.producer_fifo[0]
                continue

            if isinstance(data, str) and self.use_encoding:
                data = bytes(data, self.encoding)

            # send the data
            try:
                num_sent = self.send(data)
            except OSError:
                self.handle_error()
                return

            if num_sent:
                if num_sent < len(data) or obs < len(first):
                    self.producer_fifo[0] = first[num_sent:]
                else:
                    del self.producer_fifo[0]
            # we tried to send some actual data
            return

    def discard_buffers(self):
        # Emergencies only!
        self.ac_in_buffer = b''
        del self.incoming[:]
        self.producer_fifo.clear()


class simple_producer:

    def __init__(self, data, buffer_size=512):
        self.data = data
        self.buffer_size = buffer_size

    def more(self):
        if len(self.data) > self.buffer_size:
            result = self.data[:self.buffer_size]
            self.data = self.data[self.buffer_size:]
            return result
        else:
            result = self.data
            self.data = b''
            return result


# Given 'haystack', see if any prefix of 'needle' is at its end.  This
# assumes an exact match has already been checked.  Return the number of
# characters matched.
# for example:
# f_p_a_e("qwerty\r", "\r\n") => 1
# f_p_a_e("qwertydkjf", "\r\n") => 0
# f_p_a_e("qwerty\r\n", "\r\n") => <undefined>

# this could maybe be made faster with a computed regex?
# [answer: no; circa Python-2.0, Jan 2001]
# new python:   28961/s
# old python:   18307/s
# re:        12820/s
# regex:     14035/s

def find_prefix_at_end(haystack, needle):
    l = len(needle) - 1
    while l and not haystack.endswith(needle[:l]):
        l -= 1
    return l

SILENT KILLER Tool