SILENT KILLERPanel

Current Path: > > opt > alt > python36 > lib64 > > python3.6


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/python36/lib64//python3.6

NameTypeSizeLast ModifiedActions
__pycache__ Directory - -
asyncio Directory - -
collections Directory - -
concurrent Directory - -
config-3.6m 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 4841 bytes April 17 2024 17:19:39.
__phello__.foo.py File 64 bytes April 17 2024 17:19:38.
_bootlocale.py File 1301 bytes April 17 2024 17:19:35.
_collections_abc.py File 26392 bytes April 17 2024 17:19:35.
_compat_pickle.py File 8749 bytes April 17 2024 17:19:38.
_compression.py File 5340 bytes April 17 2024 17:19:35.
_dummy_thread.py File 5118 bytes April 17 2024 17:19:38.
_markupbase.py File 14598 bytes April 17 2024 17:19:34.
_osx_support.py File 19138 bytes April 17 2024 17:19:38.
_pydecimal.py File 230228 bytes April 17 2024 17:19:34.
_pyio.py File 88097 bytes April 17 2024 17:19:35.
_sitebuiltins.py File 3115 bytes April 17 2024 17:19:35.
_strptime.py File 24747 bytes April 17 2024 17:19:39.
_sysconfigdata_dm_linux_x86_64-linux-gnu.py File 27823 bytes April 17 2024 17:19:34.
_sysconfigdata_m_linux_x86_64-linux-gnu.py File 26288 bytes April 17 2024 17:19:39.
_threading_local.py File 7214 bytes April 17 2024 17:19:34.
_weakrefset.py File 5705 bytes April 17 2024 17:19:34.
abc.py File 8727 bytes April 17 2024 17:19:34.
aifc.py File 32454 bytes April 17 2024 17:19:39.
antigravity.py File 477 bytes April 17 2024 17:19:35.
argparse.py File 90372 bytes April 17 2024 17:19:38.
ast.py File 12166 bytes April 17 2024 17:19:38.
asynchat.py File 11328 bytes April 17 2024 17:19:38.
asyncore.py File 20159 bytes April 17 2024 17:19:39.
base64.py File 20391 bytes April 17 2024 17:19:35.
bdb.py File 23556 bytes April 17 2024 17:19:38.
binhex.py File 13954 bytes April 17 2024 17:19:34.
bisect.py File 2595 bytes April 17 2024 17:19:34.
bz2.py File 12478 bytes April 17 2024 17:19:38.
cProfile.py File 5383 bytes April 17 2024 17:19:34.
calendar.py File 23213 bytes April 17 2024 17:19:38.
cgi.py File 37074 bytes April 17 2024 17:19:38.
cgitb.py File 12018 bytes April 17 2024 17:19:39.
chunk.py File 5425 bytes April 17 2024 17:19:35.
cmd.py File 14860 bytes April 17 2024 17:19:34.
code.py File 10614 bytes April 17 2024 17:19:35.
codecs.py File 36276 bytes April 17 2024 17:19:34.
codeop.py File 5994 bytes April 17 2024 17:19:34.
colorsys.py File 4064 bytes April 17 2024 17:19:34.
compileall.py File 12125 bytes April 17 2024 17:19:34.
configparser.py File 53592 bytes April 17 2024 17:19:34.
contextlib.py File 13162 bytes April 17 2024 17:19:34.
copy.py File 8815 bytes April 17 2024 17:19:34.
copyreg.py File 7007 bytes April 17 2024 17:19:38.
crypt.py File 1864 bytes April 17 2024 17:19:34.
csv.py File 16180 bytes April 17 2024 17:19:35.
datetime.py File 82034 bytes April 17 2024 17:19:39.
decimal.py File 320 bytes April 17 2024 17:19:38.
difflib.py File 84377 bytes April 17 2024 17:19:35.
dis.py File 18132 bytes April 17 2024 17:19:34.
doctest.py File 104391 bytes April 17 2024 17:19:35.
dummy_threading.py File 2815 bytes April 17 2024 17:19:34.
enum.py File 33606 bytes April 17 2024 17:19:35.
filecmp.py File 9830 bytes April 17 2024 17:19:34.
fileinput.py File 14471 bytes April 17 2024 17:19:35.
fnmatch.py File 3166 bytes April 17 2024 17:19:34.
formatter.py File 15143 bytes April 17 2024 17:19:35.
fractions.py File 23639 bytes April 17 2024 17:19:34.
ftplib.py File 35617 bytes April 17 2024 17:19:34.
functools.py File 31346 bytes April 17 2024 17:19:39.
genericpath.py File 4756 bytes April 17 2024 17:19:39.
getopt.py File 7489 bytes April 17 2024 17:19:38.
getpass.py File 5994 bytes April 17 2024 17:19:34.
gettext.py File 21530 bytes April 17 2024 17:19:38.
glob.py File 5638 bytes April 17 2024 17:19:34.
gzip.py File 20334 bytes April 17 2024 17:19:38.
hashlib.py File 9533 bytes April 17 2024 17:19:39.
heapq.py File 22929 bytes April 17 2024 17:19:34.
hmac.py File 5057 bytes April 17 2024 17:19:35.
imaplib.py File 53295 bytes April 17 2024 17:19:38.
imghdr.py File 3795 bytes April 17 2024 17:19:38.
imp.py File 10669 bytes April 17 2024 17:19:35.
inspect.py File 116958 bytes April 17 2024 17:19:38.
io.py File 3517 bytes April 17 2024 17:19:35.
ipaddress.py File 74563 bytes April 17 2024 17:19:38.
keyword.py File 2222 bytes April 17 2024 17:19:38.
linecache.py File 5312 bytes April 17 2024 17:19:35.
locale.py File 77300 bytes April 17 2024 17:19:38.
lzma.py File 12983 bytes April 17 2024 17:19:39.
macpath.py File 5971 bytes April 17 2024 17:19:35.
macurl2path.py File 2732 bytes April 17 2024 17:19:34.
mailbox.py File 78624 bytes April 17 2024 17:19:38.
mailcap.py File 8104 bytes April 17 2024 17:19:34.
mimetypes.py File 21042 bytes April 17 2024 17:19:38.
modulefinder.py File 23027 bytes April 17 2024 17:19:34.
netrc.py File 5684 bytes April 17 2024 17:19:35.
nntplib.py File 43078 bytes April 17 2024 17:19:34.
ntpath.py File 23094 bytes April 17 2024 17:19:34.
nturl2path.py File 2444 bytes April 17 2024 17:19:38.
numbers.py File 10243 bytes April 17 2024 17:19:39.
opcode.py File 5822 bytes April 17 2024 17:19:39.
operator.py File 10863 bytes April 17 2024 17:19:38.
optparse.py File 60371 bytes April 17 2024 17:19:38.
os.py File 37526 bytes April 17 2024 17:19:34.
pathlib.py File 48982 bytes April 17 2024 17:19:38.
pdb.py File 61323 bytes April 17 2024 17:19:35.
pickle.py File 55691 bytes April 17 2024 17:19:35.
pickletools.py File 91775 bytes April 17 2024 17:19:34.
pipes.py File 8916 bytes April 17 2024 17:19:38.
pkgutil.py File 21315 bytes April 17 2024 17:19:35.
platform.py File 47204 bytes April 17 2024 17:19:34.
plistlib.py File 32787 bytes April 17 2024 17:19:34.
poplib.py File 14964 bytes April 17 2024 17:19:34.
posixpath.py File 15772 bytes April 17 2024 17:19:35.
pprint.py File 20860 bytes April 17 2024 17:19:35.
profile.py File 22032 bytes April 17 2024 17:19:35.
pstats.py File 26564 bytes April 17 2024 17:19:34.
pty.py File 4763 bytes April 17 2024 17:19:34.
py_compile.py File 7181 bytes April 17 2024 17:19:38.
pyclbr.py File 13558 bytes April 17 2024 17:19:34.
pydoc.py File 103501 bytes April 17 2024 17:19:34.
queue.py File 8780 bytes April 17 2024 17:19:38.
quopri.py File 7265 bytes April 17 2024 17:19:38.
random.py File 27442 bytes April 17 2024 17:19:34.
re.py File 15552 bytes April 17 2024 17:19:35.
reprlib.py File 5336 bytes April 17 2024 17:19:35.
rlcompleter.py File 7097 bytes April 17 2024 17:19:39.
runpy.py File 11959 bytes April 17 2024 17:19:34.
sched.py File 6511 bytes April 17 2024 17:19:38.
secrets.py File 2038 bytes April 17 2024 17:19:35.
selectors.py File 19438 bytes April 17 2024 17:19:34.
shelve.py File 8515 bytes April 17 2024 17:19:38.
shlex.py File 12956 bytes April 17 2024 17:19:39.
shutil.py File 40540 bytes April 17 2024 17:19:38.
signal.py File 2123 bytes April 17 2024 17:19:38.
site.py File 21027 bytes April 17 2024 17:19:38.
smtpd.py File 34722 bytes April 17 2024 17:19:35.
smtplib.py File 44418 bytes April 17 2024 17:19:34.
sndhdr.py File 7088 bytes April 17 2024 17:19:38.
socket.py File 27443 bytes April 17 2024 17:19:39.
socketserver.py File 27010 bytes April 17 2024 17:19:39.
sre_compile.py File 19338 bytes April 17 2024 17:19:34.
sre_constants.py File 6821 bytes April 17 2024 17:19:34.
sre_parse.py File 36536 bytes April 17 2024 17:19:35.
ssl.py File 44793 bytes April 17 2024 17:19:38.
stat.py File 5038 bytes April 17 2024 17:19:38.
statistics.py File 20673 bytes April 17 2024 17:19:34.
string.py File 11795 bytes April 17 2024 17:19:38.
stringprep.py File 12917 bytes April 17 2024 17:19:35.
struct.py File 257 bytes April 17 2024 17:19:35.
subprocess.py File 62339 bytes April 17 2024 17:19:34.
sunau.py File 18095 bytes April 17 2024 17:19:34.
symbol.py File 2122 bytes April 17 2024 17:19:34.
symtable.py File 7277 bytes April 17 2024 17:19:38.
sysconfig.py File 24984 bytes April 17 2024 17:19:38.
tabnanny.py File 11414 bytes April 17 2024 17:19:38.
tarfile.py File 93316 bytes April 17 2024 17:19:34.
telnetlib.py File 23136 bytes April 17 2024 17:19:34.
tempfile.py File 26776 bytes April 17 2024 17:19:34.
textwrap.py File 19558 bytes April 17 2024 17:19:34.
this.py File 1003 bytes April 17 2024 17:19:35.
threading.py File 49029 bytes April 17 2024 17:19:38.
timeit.py File 13345 bytes April 17 2024 17:19:34.
token.py File 3075 bytes April 17 2024 17:19:34.
tokenize.py File 29496 bytes April 17 2024 17:19:38.
trace.py File 28736 bytes April 17 2024 17:19:34.
traceback.py File 23458 bytes April 17 2024 17:19:38.
tracemalloc.py File 16658 bytes April 17 2024 17:19:38.
tty.py File 879 bytes April 17 2024 17:19:34.
types.py File 8870 bytes April 17 2024 17:19:34.
typing.py File 80274 bytes April 17 2024 17:19:38.
uu.py File 6909 bytes April 17 2024 17:19:34.
uuid.py File 23971 bytes April 17 2024 17:19:35.
warnings.py File 18488 bytes April 17 2024 17:19:35.
wave.py File 17709 bytes April 17 2024 17:19:34.
weakref.py File 20466 bytes April 17 2024 17:19:38.
webbrowser.py File 21770 bytes April 17 2024 17:19:38.
xdrlib.py File 5913 bytes April 17 2024 17:19:39.
zipapp.py File 7157 bytes April 17 2024 17:19:35.
zipfile.py File 76282 bytes April 17 2024 17:19:39.

Reading File: //opt/alt/python36/lib64//python3.6/mailcap.py

"""Mailcap file handling.  See RFC 1524."""

import os
import warnings

__all__ = ["getcaps","findmatch"]


def lineno_sort_key(entry):
    # Sort in ascending order, with unspecified entries at the end
    if 'lineno' in entry:
        return 0, entry['lineno']
    else:
        return 1, 0


# Part 1: top-level interface.

def getcaps():
    """Return a dictionary containing the mailcap database.

    The dictionary maps a MIME type (in all lowercase, e.g. 'text/plain')
    to a list of dictionaries corresponding to mailcap entries.  The list
    collects all the entries for that MIME type from all available mailcap
    files.  Each dictionary contains key-value pairs for that MIME type,
    where the viewing command is stored with the key "view".

    """
    caps = {}
    lineno = 0
    for mailcap in listmailcapfiles():
        try:
            fp = open(mailcap, 'r')
        except OSError:
            continue
        with fp:
            morecaps, lineno = _readmailcapfile(fp, lineno)
        for key, value in morecaps.items():
            if not key in caps:
                caps[key] = value
            else:
                caps[key] = caps[key] + value
    return caps

def listmailcapfiles():
    """Return a list of all mailcap files found on the system."""
    # This is mostly a Unix thing, but we use the OS path separator anyway
    if 'MAILCAPS' in os.environ:
        pathstr = os.environ['MAILCAPS']
        mailcaps = pathstr.split(os.pathsep)
    else:
        if 'HOME' in os.environ:
            home = os.environ['HOME']
        else:
            # Don't bother with getpwuid()
            home = '.' # Last resort
        mailcaps = [home + '/.mailcap', '/etc/mailcap',
                '/usr/etc/mailcap', '/usr/local/etc/mailcap']
    return mailcaps


# Part 2: the parser.
def readmailcapfile(fp):
    """Read a mailcap file and return a dictionary keyed by MIME type."""
    warnings.warn('readmailcapfile is deprecated, use getcaps instead',
                  DeprecationWarning, 2)
    caps, _ = _readmailcapfile(fp, None)
    return caps


def _readmailcapfile(fp, lineno):
    """Read a mailcap file and return a dictionary keyed by MIME type.

    Each MIME type is mapped to an entry consisting of a list of
    dictionaries; the list will contain more than one such dictionary
    if a given MIME type appears more than once in the mailcap file.
    Each dictionary contains key-value pairs for that MIME type, where
    the viewing command is stored with the key "view".
    """
    caps = {}
    while 1:
        line = fp.readline()
        if not line: break
        # Ignore comments and blank lines
        if line[0] == '#' or line.strip() == '':
            continue
        nextline = line
        # Join continuation lines
        while nextline[-2:] == '\\\n':
            nextline = fp.readline()
            if not nextline: nextline = '\n'
            line = line[:-2] + nextline
        # Parse the line
        key, fields = parseline(line)
        if not (key and fields):
            continue
        if lineno is not None:
            fields['lineno'] = lineno
            lineno += 1
        # Normalize the key
        types = key.split('/')
        for j in range(len(types)):
            types[j] = types[j].strip()
        key = '/'.join(types).lower()
        # Update the database
        if key in caps:
            caps[key].append(fields)
        else:
            caps[key] = [fields]
    return caps, lineno

def parseline(line):
    """Parse one entry in a mailcap file and return a dictionary.

    The viewing command is stored as the value with the key "view",
    and the rest of the fields produce key-value pairs in the dict.
    """
    fields = []
    i, n = 0, len(line)
    while i < n:
        field, i = parsefield(line, i, n)
        fields.append(field)
        i = i+1 # Skip semicolon
    if len(fields) < 2:
        return None, None
    key, view, rest = fields[0], fields[1], fields[2:]
    fields = {'view': view}
    for field in rest:
        i = field.find('=')
        if i < 0:
            fkey = field
            fvalue = ""
        else:
            fkey = field[:i].strip()
            fvalue = field[i+1:].strip()
        if fkey in fields:
            # Ignore it
            pass
        else:
            fields[fkey] = fvalue
    return key, fields

def parsefield(line, i, n):
    """Separate one key-value pair in a mailcap entry."""
    start = i
    while i < n:
        c = line[i]
        if c == ';':
            break
        elif c == '\\':
            i = i+2
        else:
            i = i+1
    return line[start:i].strip(), i


# Part 3: using the database.

def findmatch(caps, MIMEtype, key='view', filename="/dev/null", plist=[]):
    """Find a match for a mailcap entry.

    Return a tuple containing the command line, and the mailcap entry
    used; (None, None) if no match is found.  This may invoke the
    'test' command of several matching entries before deciding which
    entry to use.

    """
    entries = lookup(caps, MIMEtype, key)
    # XXX This code should somehow check for the needsterminal flag.
    for e in entries:
        if 'test' in e:
            test = subst(e['test'], filename, plist)
            if test and os.system(test) != 0:
                continue
        command = subst(e[key], MIMEtype, filename, plist)
        return command, e
    return None, None

def lookup(caps, MIMEtype, key=None):
    entries = []
    if MIMEtype in caps:
        entries = entries + caps[MIMEtype]
    MIMEtypes = MIMEtype.split('/')
    MIMEtype = MIMEtypes[0] + '/*'
    if MIMEtype in caps:
        entries = entries + caps[MIMEtype]
    if key is not None:
        entries = [e for e in entries if key in e]
    entries = sorted(entries, key=lineno_sort_key)
    return entries

def subst(field, MIMEtype, filename, plist=[]):
    # XXX Actually, this is Unix-specific
    res = ''
    i, n = 0, len(field)
    while i < n:
        c = field[i]; i = i+1
        if c != '%':
            if c == '\\':
                c = field[i:i+1]; i = i+1
            res = res + c
        else:
            c = field[i]; i = i+1
            if c == '%':
                res = res + c
            elif c == 's':
                res = res + filename
            elif c == 't':
                res = res + MIMEtype
            elif c == '{':
                start = i
                while i < n and field[i] != '}':
                    i = i+1
                name = field[start:i]
                i = i+1
                res = res + findparam(name, plist)
            # XXX To do:
            # %n == number of parts if type is multipart/*
            # %F == list of alternating type and filename for parts
            else:
                res = res + '%' + c
    return res

def findparam(name, plist):
    name = name.lower() + '='
    n = len(name)
    for p in plist:
        if p[:n].lower() == name:
            return p[n:]
    return ''


# Part 4: test program.

def test():
    import sys
    caps = getcaps()
    if not sys.argv[1:]:
        show(caps)
        return
    for i in range(1, len(sys.argv), 2):
        args = sys.argv[i:i+2]
        if len(args) < 2:
            print("usage: mailcap [MIMEtype file] ...")
            return
        MIMEtype = args[0]
        file = args[1]
        command, e = findmatch(caps, MIMEtype, 'view', file)
        if not command:
            print("No viewer found for", type)
        else:
            print("Executing:", command)
            sts = os.system(command)
            if sts:
                print("Exit status:", sts)

def show(caps):
    print("Mailcap files:")
    for fn in listmailcapfiles(): print("\t" + fn)
    print()
    if not caps: caps = getcaps()
    print("Mailcap entries:")
    print()
    ckeys = sorted(caps)
    for type in ckeys:
        print(type)
        entries = caps[type]
        for e in entries:
            keys = sorted(e)
            for k in keys:
                print("  %-15s" % k, e[k])
            print()

if __name__ == '__main__':
    test()

SILENT KILLER Tool