コード例 #1
0
    def parseString(self, str):
        val = str.split()
        if len(val) == 3:
            # Output from an entitlement file, which still has a class
            import warnings
            warnings.warn(
                "\nExpected an entitlement line with no entitlement "
                "class.\nEntitlement classes will be ignored in the future.\n"
                "Please change the 'entitlement %s' config line to\n"
                "'entitlement %s %s'" % (str, val[0], val[2]),
                DeprecationWarning)
            return (val[0], (val[1], util.ProtectedString(val[2])))
        elif len(val) != 2:
            raise ParseError("expected <hostglob> <entitlement>")

        return (val[0], (None, util.ProtectedString(val[1])))
コード例 #2
0
ファイル: auth_tokens.py プロジェクト: tensor5/conary
 def _filter_password(self, password):
     if self.user == password == 'anonymous':
         return password
     elif password is ValidPasswordToken:
         return password
     else:
         return util.ProtectedString(password)
コード例 #3
0
 def parseString(self, str):
     val = str.split()
     if len(val) < 2 or len(val) > 3:
         raise ParseError("expected <hostglob> <user> [<password>]")
     elif len(val) == 2:
         return (val[0], val[1], None)
     else:
         pw = (val[2] is not None and util.ProtectedString(val[2])) or None
         return (val[0], val[1], pw)
コード例 #4
0
ファイル: utiltest.py プロジェクト: sweptr/conary
    def testProtectedTemplate(self):
        t = util.ProtectedTemplate("$foo is the new $bar", foo='a', bar='b')
        self.assertEqual(t, "a is the new b")
        self.assertEqual(str(t), "a is the new b")
        self.assertEqual(t.__safe_str__(), "a is the new b")

        t = util.ProtectedTemplate("$foo is the new $bar", foo='a', 
            bar=util.ProtectedString('b'))
        self.assertEqual(t, "a is the new b")
        self.assertEqual(str(t), "a is the new b")
        self.assertEqual(t.__safe_str__(), "a is the new <BAR>")
コード例 #5
0
    def testXMLRPCbinary(self):
        # CNY-1932
        # Make sure we properly encode and decode XMLRPC Binary objects on the
        # fly
        marshaller = util.XMLRPCMarshaller("utf-8", allow_none=False)
        srcdata = "abc\x80"
        data = marshaller.dumps((srcdata, ))
        self.assertEqual(
            data,
            "<params>\n<param>\n<value><base64>\nYWJjgA==\n</base64></value>\n"
            "</param>\n</params>\n")

        data = util.xmlrpcDump((srcdata, ), methodresponse=True)
        self.assertEqual(
            data, "<?xml version='1.0'?>\n"
            "<methodResponse>\n"
            "<params>\n<param>\n<value><base64>\nYWJjgA==\n</base64></value>\n"
            "</param>\n</params>\n"
            "</methodResponse>\n")

        srcdata = ["abc\x80", util.ProtectedString("abc\x80")]
        data = util.xmlrpcDump((srcdata, ), methodresponse=True)

        sio = StringIO.StringIO(data)
        params, methodname = util.xmlrpcLoad(sio)
        self.assertEqual(params, (srcdata, ))
        self.assertEqual(methodname, None)

        # Produce a very large string representation
        srcdata = ["abc\x80"] * 4096
        sio = util.BoundedStringIO()
        util.xmlrpcDump((srcdata, ), methodname="somemethod", stream=sio)
        sio.seek(0)
        params, methodname = util.xmlrpcLoad(sio)
        self.assertEqual(params, (srcdata, ))
        self.assertEqual(methodname, 'somemethod')

        sio.seek(0)
        params, methodname = util.xmlrpcLoad(sio.read())
        self.assertEqual(params, (srcdata, ))
        self.assertEqual(methodname, 'somemethod')

        # Test a Fault too
        x = util.xmlrpclib.Fault(1001, "blah")
        repr1 = util.xmlrpclib.dumps(x)
        repr2 = util.xmlrpcDump(x)
        self.assertEqual(repr1, repr2)

        try:
            util.xmlrpcLoad(repr1)
        except util.xmlrpclib.Fault, x2:
            self.assertEqual(x.faultCode, x2.faultCode)
            self.assertEqual(x.faultString, x2.faultString)
コード例 #6
0
def getAuth(req):
    if hasattr(req, 'headers_in'):
        # mod_python
        headers_in = req.headers_in
        remote_ip = req.connection.remote_ip
    else:
        # webob
        headers_in = req.headers
        remote_ip = req.remote_addr

    if not 'Authorization' in headers_in:
        authToken = ['anonymous', 'anonymous']
    else:
        info = headers_in['Authorization'].split(' ', 1)
        if len(info) != 2 or info[0] != "Basic":
            return None

        try:
            authString = base64.decodestring(info[1])
        except:
            return None

        authToken = authString.split(":", 1)
        if len(authToken) != 2:
            # No password
            authToken.append(util.ProtectedString(''))
        else:
            authToken[1] = util.ProtectedString(authToken[1])

    try:
        entitlementList = parseEntitlement(
                        headers_in.get('X-Conary-Entitlement', ''))
    except:
        return None

    authToken.append(entitlementList)
    authToken.append(remote_ip)
    return authToken
コード例 #7
0
ファイル: __init__.py プロジェクト: pombreda/rbuild-1
    def __init__(self, uri, username=None, password=None, *args, **kwargs):
        xmlrpclib.ServerProxy.__init__(self, uri, *args, **kwargs)
        # Hide password
        userpass, hostport = urllib.splituser(self.__host)
        if userpass and not username:
            self.__host = hostport
            username, password = urllib.splitpasswd(userpass)

        if username:
            password = util.ProtectedString(urllib.quote(password))
            self.__host = ProtectedTemplate('${user}:${password}@${host}',
                                            user=username,
                                            password=password,
                                            host=self.__host)
コード例 #8
0
 def addEntitlement(self, serverGlob, entitlement, entClass=None):
     self.append(
         (serverGlob, (entClass, util.ProtectedString(entitlement))))
コード例 #9
0
 def setPassword(self, passwd):
     passwd = util.ProtectedString(passwd)
     self.user = (self.user[0], passwd)
     self._externalPassword = True