[ Avaa Bypassed ]




Upload:

Command:

www-data@18.224.33.135: ~ $
#!/usr/bin/python3

## system-config-printer

## Copyright (C) 2006, 2007, 2008, 2009, 2011, 2012 Red Hat, Inc.
## Copyright (C) 2006, 2007 Florian Festi <ffesti@redhat.com>
## Copyright (C) 2006, 2007, 2008, 2009 Tim Waugh <twaugh@redhat.com>

## 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; either version 2 of the License, or
## (at your option) any later version.

## 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 urllib.parse

def urlquote (x):
    q = urllib.parse.quote (x)
    for c in ["/", "@", ":"]:
        q = q.replace (c, "%%%02X" % ord (c))

    return q

class SMBURI:
    def __init__ (self,
                  uri=None,
                  group='', host='', share='', user='', password=''):
        if uri:
            if group or host or share or user or password:
                raise RuntimeError

            if uri.startswith ("smb://"):
                uri = uri[6:]

            self.uri = uri
        else:
            self.uri = self._construct (group, host, share,
                                        user=user, password=password)

    def _construct (self, group, host, share, user='', password=''):
        uri_password = ''
        if password:
            uri_password = ':' + urlquote (password)
        if user:
            uri_password += '@'
        uri = "%s%s%s" % (urlquote (user),
                          uri_password,
                          urlquote (group))
        if len (group) > 0:
            uri += '/'
        uri += urlquote (host)
        if len (share) > 0:
            uri += "/" + urlquote (share)
        return uri

    def get_uri (self):
        return self.uri

    def sanitize_uri (self):
        group, host, share, user, password = self.separate ()
        return self._construct (group, host, share)

    def separate (self):
        uri = self.get_uri ()
        user = ''
        password = ''
        auth = uri.find ('@')
        if auth != -1:
            u = uri[:auth].find(':')
            if u != -1:
                user = uri[:u]
                password = uri[u + 1:auth]
            else:
                user = uri[:auth]
            uri = uri[auth + 1:]
        sep = uri.count ('/')
        group = ''
        if sep == 2:
            g = uri.find('/')
            group = uri[:g]
            uri = uri[g + 1:]
        if sep < 1:
            host = ''
        else:
            h = uri.find('/')
            host = uri[:h]
            uri = uri[h + 1:]
            p = host.find(':')
            if p != -1:
                host = host[:p]
        share = uri
        return (urllib.parse.unquote (group), urllib.parse.unquote (host),
                urllib.parse.unquote (share),
                urllib.parse.unquote (user), urllib.parse.unquote (password))

Filemanager

Name Type Size Permission Actions
__pycache__ Folder 0755
__init__.py File 1.79 KB 0644
config.py File 940 B 0644
cupshelpers.py File 30.05 KB 0644
debug.py File 1.62 KB 0644
installdriver.py File 2.66 KB 0644
openprinting.py File 18.74 KB 0644
ppds.py File 43.13 KB 0644
smburi.py File 3.22 KB 0644
xmldriverprefs.py File 19.72 KB 0644