(fwd) Re: Problem with 0.9.3
John Berninger <[email protected]>
| Newsgroups | gmane.network.up2date.current.devel |
|---|---|
| Message-ID | <[email protected]> |
After looking at a diff between 0.9.2 and 0.9.3, I /think/ I spotted the bug causing this. In the header verification section, 0.9.2 checks the type of the header object to ensure it is a list of lists, 0.9.3 does not. I've created the atached patch against the base 0.9.3 tree to re-add this functionality; let me know if it works the way it should... On Fri, 25 Jan 2002, Rob Hagopian wrote: > You're not the only one, I have the same problem - Hunter & I are trying to > track it down, somehow the channel info is getting messed up so it's > miscalculating the checksum... > > The solution is to use 0.9.2 for right now if 0.9.3 doesn't work for you (it > works for Hunter :-) ) > -Rob > > -----Original Message----- > From: Patrick Zwahlen [mailto:[email protected]] > Sent: Friday, January 25, 2002 10:05 AM > To: '[email protected]' > Subject: [Current-server] Problem with 0.9.3 > > > Hi everybody, > > This is my first attempt to have CURRENT working, but I have to say that I'm > *very* interested in this server. > > I'm trying to run it on one of my 20 servers (redhat 7.2) in order to > upgrade the 19 remaining ones (and myself...) > > All my servers are currently running stock redhat 7.2 (unpatched). I have > just upgraded up2date and rhn_register. This means: > > current 0.9.3 (RPM) > up2date 2.7.11 > rhn_register 2.7.11 > > I ran the create certificate file, and put the client certificate on every > machine. > > rhn_register works perfectly ! > > When I try to do an 'up2date --showall' I have the following message on the > client side: > > ================================================== > Traceback (innermost last): > File "/usr/sbin/up2date", line 1014, in ? > main() > File "/usr/sbin/up2date", line 271, in main > printList(up2date.getAvailablePackageList()) > File "/usr/share/rhn/up2date_client/up2date.py", line 690, in > getAvailablePackageList > progressCallback = progressCallback ) > File "/usr/share/rhn/up2date_client/up2date.py", line 313, in doCall > raise CommunicationError(e.errmsg) > up2date_client.up2date.CommunicationError: Error communicating with server. > The message was: > 400: "Client not authorized" while attempting to get > $RHN/redhat/listPackages/20020125162424 > ================================================== > > And on the server side: > > ================================================== > /usr/share/current/standalone.py:do_POST(None) > Requesting: up2date.login > (/usr/share/current/standalone.py, do_POST(), 71): with params = > [{'client_address': ('127.0.0.1', > 38421), > 'command': 'POST', > 'headers': <mimetools.Message instance at 81f4c60>, > 'path': 'https://libra.onspirix.ch:8081/XMLRPC', > 'version': ''}, > '<?xml > version="1.0"?>\012<params>\012<param>\012<value><struct>\012<member>\012<na > me>type</name>\0 > 12<value><string>REAL</string></value>\012</member>\012<member>\012<name>arc > hitecture</name>\012<val > ue><string>i686</string></value>\012</member>\012<member>\012<name>checksum< > /name>\012<value><string > >9849e0ed1ae6ef8c68014c04c2f413756be7d252</string></value>\012</member>\012< > member>\012<name>os_rele > ase</name>\012<value><string>7.2</string></value>\012</member>\012<member>\0 > 12<name>description</nam > e>\012<value><string>7.2 running on > i686</string></value>\012</member>\012<member>\012<name>system_i > d</name>\012<value><string>Current-ANONYMOUS</string></value>\012</member>\0 > 12<member>\012<name>oper > ating_system</name>\012<value><string>Red Hat > Linux</string></value>\012</member>\012<member>\012<na > me>profile_name</name>\012<value><string>libra.onspirix.ch</string></value>\ > 012</member>\012<member> > \012<name>fields</name>\012<value><array><data>\012<value><string>type</stri > ng></value>\012<value><s > tring>operating_system</string></value>\012<value><string>checksum</string>< > /value>\012<value><strin > g>description</string></value>\012<value><string>os_release</string></value> > \012<value><string>archi > tecture</string></value>\012<value><string>system_id</string></value>\012<va > lue><string>profile_name > </string></value>\012<value><string>username</string></value>\012</data></ar > ray></value>\012</member > >\012<member>\012<name>username</name>\012<value><string>libra</string></val > ue>\012</member>\012</st > ruct></value>\012</param>\012</params>\012'] > module = up2date > function = login > (/usr/share/current/standalone.py, callAPIMethod(), 271): params = > [{'client_address': ('127.0.0.1', > 38421), > 'command': 'POST', > 'headers': <mimetools.Message instance at 81f4c60>, > 'path': 'https://libra.onspirix.ch:8081/XMLRPC', > 'version': ''}, > '<?xml > version="1.0"?>\012<params>\012<param>\012<value><struct>\012<member>\012<na > me>type</name>\0 > 12<value><string>REAL</string></value>\012</member>\012<member>\012<name>arc > hitecture</name>\012<val > ue><string>i686</string></value>\012</member>\012<member>\012<name>checksum< > /name>\012<value><string > >9849e0ed1ae6ef8c68014c04c2f413756be7d252</string></value>\012</member>\012< > member>\012<name>os_rele > ase</name>\012<value><string>7.2</string></value>\012</member>\012<member>\0 > 12<name>description</nam > e>\012<value><string>7.2 running on > i686</string></value>\012</member>\012<member>\012<name>system_i > d</name>\012<value><string>Current-ANONYMOUS</string></value>\012</member>\0 > 12<member>\012<name>oper > ating_system</name>\012<value><string>Red Hat > Linux</string></value>\012</member>\012<member>\012<na > me>profile_name</name>\012<value><string>libra.onspirix.ch</string></value>\ > 012</member>\012<member> > \012<name>fields</name>\012<value><array><data>\012<value><string>type</stri > ng></value>\012<value><s > tring>operating_system</string></value>\012<value><string>checksum</string>< > /value>\012<value><strin > g>description</string></value>\012<value><string>os_release</string></value> > \012<value><string>archi > tecture</string></value>\012<value><string>system_id</string></value>\012<va > lue><string>profile_name > </string></value>\012<value><string>username</string></value>\012</data></ar > ray></value>\012</member > >\012<member>\012<name>username</name>\012<value><string>libra</string></val > ue>\012</member>\012</st > ruct></value>\012</param>\012</params>\012'] > Dispatching: up2date.login > /usr/share/current/up2date.py:login({'connInfo': {'client_address': > ('127.0.0.1', 38421), 'command': > 'POST', 'version': '', 'headers': <mimetools.Message instance at 81f4c60>, > 'path': 'https://libra.o > nspirix.ch:8081/XMLRPC'}, 'sysid_string': '<?xml > version="1.0"?>\012<params>\012<param>\012<value><s > truct>\012<member>\012<name>type</name>\012<value><string>REAL</string></val > ue>\012</member>\012<mem > ber>\012<name>architecture</name>\012<value><string>i686</string></value>\01 > 2</member>\012<member>\0 > 12<name>checksum</name>\012<value><string>9849e0ed1ae6ef8c68014c04c2f413756b > e7d252</string></value>\ > 012</member>\012<member>\012<name>os_release</name>\012<value><string>7.2</s > tring></value>\012</memb > er>\012<member>\012<name>description</name>\012<value><string>7.2 running on > i686</string></value>\0 > 12</member>\012<member>\012<name>system_id</name>\012<value><string>Current- > ANONYMOUS</string></valu > e>\012</member>\012<member>\012<name>operating_system</name>\012<value><stri > ng>Red Hat Linux</string > ></value>\012</member>\012<member>\012<name>profile_name</name>\012<value><s > tring>libra.onspirix.ch< > /string></value>\012</member>\012<member>\012<name>fields</name>\012<value>< > array><data>\012<value>< > string>type</string></value>\012<value><string>operating_system</string></va > lue>\012<value><string>c > hecksum</string></value>\012<value><string>description</string></value>\012< > value><string>os_release > </string></value>\012<value><string>architecture</string></value>\012<value> > <string>system_id</strin > g></value>\012<value><string>profile_name</string></value>\012<value><string > >username</string></valu > e>\012</data></array></value>\012</member>\012<member>\012<name>username</na > me>\012<value><string>li > bra</string></value>\012</member>\012</struct></value>\012</param>\012</para > ms>\012'}) > /usr/share/current/packagedb.py:getCompatibleChannels({'client_arch': > 'i686', 'client_release': '7.2 > '}) > /usr/share/current/packagedb.py:_getCannonArch({'arch': 'i686'}) > Result was normal > (/usr/share/current/standalone.py, sendClientResult(), 202): Result = > {'data': {'X-RHN-Auth': '683c6 > 8b1d8b23c25b663c8b1a1b28854eb3e2500', 'X-RHN-Server-Id': 'libra', > 'X-RHN-Auth-Expiration': '10119818 > 45', 'X-RHN-Auth-Channels': [['redhat', '20020125165827']], > 'X-RHN-Auth-User-Id': 'libra'}, 'type': > 'xml'} > (/usr/share/current/standalone.py, sendClientResult(), 228): POST > sendClientResult() finished > /usr/share/current/standalone.py:do_GET(None) > connInfo = {'client_address': ('127.0.0.1', 38423), > 'command': 'GET', > 'headers': <mimetools.Message instance at 81fa588>, > 'path': > 'https://libra.onspirix.ch:8081/XMLRPC/$RHN/redhat/listPackages/200201251658 > 27', > 'version': ''} > headers = {'host': 'libra.onspirix.ch:8081', > 'user-agent': 'rhnHTTPlib.py/1.25', > 'x-info': 'Red Hat Network Update Agent (C) Red Hat, Inc ($Revision: 1.25 > $)', > 'x-rhn-auth': '683c68b1d8b23c25b663c8b1a1b28854eb3e2500', > 'x-rhn-auth-channels': "['redhat', '20020125165827']", > 'x-rhn-auth-expiration': '1011981845', > 'x-rhn-auth-user-id': 'libra', > 'x-rhn-client-version': '2', > 'x-rhn-server-id': 'libra'} > /usr/share/current/standalone.py:parseGetPath({'path': > 'https://libra.onspirix.ch:8081/XMLRPC/$RHN/r > edhat/listPackages/20020125165827'}) > Requesting: up2date.listPackages > (/usr/share/current/standalone.py, do_GET(), 104): with params = > [{'client_address': ('127.0.0.1', > 38423), > 'command': 'GET', > 'headers': <mimetools.Message instance at 81fa588>, > 'path': > 'https://libra.onspirix.ch:8081/XMLRPC/$RHN/redhat/listPackages/200201251658 > 27', > 'version': ''}, > 'redhat', > '20020125165827'] > module = up2date > function = listPackages > (/usr/share/current/standalone.py, callAPIMethod(), 271): params = > [{'client_address': ('127.0.0.1', > 38423), > 'command': 'GET', > 'headers': <mimetools.Message instance at 81fa588>, > 'path': > 'https://libra.onspirix.ch:8081/XMLRPC/$RHN/redhat/listPackages/200201251658 > 27', > 'version': ''}, > 'redhat', > '20020125165827'] > Dispatching: up2date.listPackages > /usr/share/current/up2date.py:_getFile({'filename': '20020125165827', > 'chan_label': 'redhat', 'metho > d': <method PackageDB.getPackageList of PackageDB instance at 8128f80>, > 'connInfo': {'client_address > ': ('127.0.0.1', 38423), 'command': 'GET', 'version': '', 'headers': > <mimetools.Message instance at > 81fa588>, 'path': > 'https://libra.onspirix.ch:8081/XMLRPC/$RHN/redhat/listPackages/200201251658 > 27'}}) > /usr/share/current/auth.py:isValid({}) > calculated checksum ac2e24c0cf4f250ba8b5cba2030673bbb6b6e994 didn't match > client 683c68b1d8b23c25b66 > 3c8b1a1b28854eb3e2500 > Result is a Fault > (/usr/share/current/standalone.py, sendClientResult(), 228): GET > sendClientResult() finished > ================================================== > > Any clue about the problem ? > > Many thanks for your precious help, and your wonderful application... > -- > Patrick Zwahlen Mail: [email protected] > ISP/ASP Engineer Phone: +41 (0)22-363-6823 > onSpirix Fax: +41 (0)22-363-6801 > Ch. de la Vuarpilliere 31 Mobile: +41 (0)79-257-9884 > CH-1260 NYON Web: http://www.onspirix.ch > _______________________________________________ > Current-server mailing list > [email protected] > http://lists.dulug.duke.edu/mailman/listinfo/current-server > _______________________________________________ > Current-server mailing list > [email protected] > http://lists.dulug.duke.edu/mailman/listinfo/current-server -- Thank you, John Berninger Systems Administrator [email protected] Department of Mathematics Box 8205, Harrelson Hall NC State University Raleigh, NC 27695 Phone: (919)515-6315 Fax: (919)515-3798 GPG Key ID: A8C1D45C Fingerprint: B1BB 90CB 5314 3113 CF22 66AE 822D 42A8 A8C1 D45C --
header.patch
(text/plain, 905 B)
diff -bru current-0.9.3/auth.py current-devel/auth.py
--- current-0.9.3/auth.py Tue Jan 8 23:54:39 2002
+++ current-devel/auth.py Fri Jan 25 14:34:29 2002
@@ -177,9 +177,15 @@
else:
cp = ConstructParser.ConstructParser(headers[header_attr])
try:
- self.data['X-RHN-Auth-Channels'] = cp.parseIt()
+ cp.parseIt()
+ tmpHdr = cp.getObject()
except:
- self.data['X-RHN-Auth-Channels'] = ''
+ tmpHdr = ''
+ if not type(tmpHdr) == type([]):
+ self.data['X-RHN-Auth-Channels'] = [tmpHdr]
+ else:
+ self.data['X-RHN-Auth-Channels'] = tmpHdr
+
# we can't print errors from here effectively, so just making
# part of the auth data be empty will ensure a neg auth.
Only in current-devel: auth.py~