I think the problem is here:

"http://david.wald...@gmail.com:x...@127.0.0.1:8000/svctest/default/
call/xmlrpc"

there are two @. the username and password must be encoded using
urllib.quote



On Oct 25, 11:04 am, "David Waldrop" <david.wald...@gmail.com> wrote:
> Massimo,
>
> The webfaction server is Linux based and uses Apache as the web server.
> Additionally, below are the commands I used to test via a python console:
>
> --------------------------------------
> The original app (from which the test was derived)
>
> import xmlrpclib
> rserver =
> xmlrpclib.Server("http://david.wald...@gmail.com:x...@www.meetingmonkey.net/i
> nit/default/call/xmlrpc")
> rserver.getmeetings()
>
> lserver =
> xmlrpclib.Server("http://david.wald...@gmail.com:x...@127.0.0.1:8000/mm_beta_
> 1/default/call/xmlrpc")
> lserver.getmeetings()
>
> ------------------------------------
> The test app I sent last evening
>
> tserver =
> xmlrpclib.Server("http://david.wald...@gmail.com:x...@127.0.0.1:8000/svctest/
> default/call/xmlrpc")
> tserver.getmeetings()
>
> rserver =
> xmlrpclib.Server("http://david.wald...@gmail.com:x...@www.meetingmonkey.net/w
> elcome/default/call/xmlrpc")
> rserver.getmeetings()
>
> -----Original Message-----
> From: David Waldrop [mailto:david.wald...@gmail.com]
> Sent: Sunday, October 24, 2010 5:35 PM
> To: web2py@googlegroups.com
> Subject: RE: [web2py] Re: confused about services and authorization
>
> It’s the standard webfaction config, web2py and python installed using their
> scripts.
>
> -----Original Message-----
> From: web2py@googlegroups.com [mailto:web...@googlegroups.com] On Behalf Of
> mdipierro
> Sent: Sunday, October 24, 2010 5:15 PM
> To: web2py-users
> Subject: [web2py] Re: confused about services and authorization
>
> Can you also tell us more about the production server? What web server? Os?
>
> On Oct 24, 3:52 pm, "David Waldrop" <david.wald...@gmail.com> wrote:
> > Massimo,  Thanks. This is absolutely maddening.  Attached is simple
> > app.  It exposes 1 service "getmeetings" located in the mm_services
> > model.  The db.py file includes the statement:
>
> > auth.settings.allow_basic_login = True
>
> > and the default/call function is decorated to require login.
>
> > The app behaves correctly when running on my local machine, but always
> > returns 303 when invoked on the production server.
>
> > -----Original Message-----
> > From: web2py@googlegroups.com [mailto:web...@googlegroups.com] On
> > Behalf Of
>
> > mdipierro
> > Sent: Sunday, October 24, 2010 4:17 PM
> > To: web2py-users
> > Subject: [web2py] Re: confused about services and authorization
>
> > please email me a minimalist program to reproduce the problem and I
> > will debug it.
>
> > On Oct 24, 2:32 pm, David Waldrop <david.wald...@gmail.com> wrote:
> > > Even more confusion.  I can get it to work on dev environment by
> > > reverting to the original decorator on call
>
> > > #...<http://groups.google.com/groups/unlock?_done=/group/web2py/brow
> > > se
> > > _thr...>
> > > @auth.requires(auth.user)
> > > @auth.requires_login()
> > > def call():
> > >     """
> > >     exposes services. for example:
> > >    
> > >http://..../<http://www.google.com/url?sa=D&q=http://..../&usg=AFQjCN
> > >H
> > > TjjhgMOeO9jl...>
> > > [app]/default/call/jsonrpc
> > >     decorate with @services.jsonrpc the functions to expose
> > >     supports xml, json, xmlrpc, jsonrpc, amfrpc, rss, csv
> > >     """
> > >     session.forget()
> > >     return service()
>
> > > This works on the local/dev machine.  By work I meant i get the
> > > expected result when valid credentials are passed, and a 303 when
> > > invalid is passed!!!  I cannot get it to work on the production
> > > system.  If I comment out the authorization decorator all together
> > > the service is invoked thereby isolating the problem to the way the
> > > credentials are passed/handled.   The code is Identical so it must
> > > be something in the environmental setup. Any ideas?
>
> > > On Sun, Oct 24, 2010 at 2:57 PM, david.waldrop
> > <david.wald...@gmail.com>wrote:
>
> > > > Cancel that it DOES NOT work on local either.  In the previous
> > > > post it worked I believe because I still had the old controller.
> > > > Now that I have deleted the controller puttilng the call function
> > > > back in the default controller, and moving the getmeeting function
> > > > to a model file, i am not able to access in the dev server or the
> > > > productiontion server.  I am 100% sure the credentials are
> > > > correct, but cannot figure out why the authentication is not
> happening.
>
> > > > On Oct 24, 2:13 pm, "David Waldrop" <david.wald...@gmail.com> wrote:
> > > > > Massimo, moving the function out of the controller enabled me to
> > > > > successfully invoke the function via xmlrpc on my development
> > > > > machine,
> > > > but
> > > > > not on the production version.  In the forum I see that this
> > > > > (303) supposedly indicates invalid authorization, but the
> > > > > testing credentials
> > > > are
> > > > > valid on both sites.  I did so by issuing the following at the
> > > > > python
> > > > > console:
>
> > > > > Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32
> > > > > bit
> > > > (Intel)]
> > > > > on
> > > > > win32
> > > > > Type "help", "copyright", "credits" or "license" for more
> information.
>
> > > > > >>> import xmlrpclib
> > > > > >>> server =
>
> > > > > xmlrpclib.Server("http://david.wald...@gmail.com:x...@www.meetin
> > > > > gm
> > > > > on
> > > > > key.net/init/default/call/xmlrpc")
>
> > > > > >>> server2 =
>
> > > > > xmlrpclib.Server("http://david.wald...@gmail.com:x...@127.0.0.1:
> > > > > 80
> > > > > 0
> > > > > 0/mm_beta_1/default/call/xmlrpc")
>
> > > > > >>> server.getmeetings()
>
> > > > > Traceback (most recent call last):
> > > > >   File "<stdin>", line 1, in <module>
> > > > >   File "C:\Python26\lib\xmlrpclib.py", line 1199, in __call__
> > > > >     return self.__send(self.__name, args)
> > > > >   File "C:\Python26\lib\xmlrpclib.py", line 1489, in __request
> > > > >     verbose=self.__verbose
> > > > >   File "C:\Python26\lib\xmlrpclib.py", line 1243, in request
> > > > >     headers
> > > > > xmlrpclib.ProtocolError: <ProtocolError for
> > > > > david.wald...@gmail.com:x...@www.meet
> > > > > ingmonkey.net/init/default/call/xmlrpc: 303 SEE OTHER>
>
> > > > > >>> server2.getmeetings()
>
> > > > > 'you are logged in!'
>
> > > > > Do I need to enables something special in the environment other
> > > > > than auth.settings.allow_basic_login = True, which is already set.
> > > > > Alos, is
> > > > this
> > > > > a recommended way of passing credentials to a web2py services,
> > > > > it seems
> > > > as
> > > > > if they may be exposed in the clear during transport???
>
> > > > > /david
>
> > > > > -----Original Message-----
> > > > > From: web2py@googlegroups.com [mailto:web...@googlegroups.com]
> > > > > On Behalf
> > > > Of
>
> > > > > mdipierro
> > > > > Sent: Sunday, October 24, 2010 1:38 PM
> > > > > To: web2py-users
> > > > > Subject: [web2py] Re: confused about services and authorization
>
> > > > > I am not sure you should register services in controller, unless
> > > > > you also want to expose them as actions. I normally put them in
> > > > > a
> > model.
> > > > > Anyway...
>
> > > > > @service.xmlrpc
> > > > > @service.jsonrpc
> > > > > @service.whetever
>
> > > > > register a function as a service
>
> > > > > def call(): return service()
>
> > > > > simply exposes all services.
>
> > > > > You can do
>
> > > > > @auth.requires(auth.user)
> > > > > def call(): return service()
>
> > > > > and you will get an unauthorized error
>
> > > > > On Oct 24, 11:19 am, "david.waldrop" <david.wald...@gmail.com>
> wrote:
> > > > > > I have spent the bulk of last evening and this morning trying
> > > > > > to test web2py services and authorization.  In addition to
> > > > > > setting auth.settings.allow_basic_login = True I have deleted
> > > > > > the "call function" in the default controller, created a
> > > > > > seperate controller "mmservices",and and populated with the
> following code:
>
> > > > > > @auth.requires_login()
> > > > > > def call():
> > > > > >     """
> > > > > >     exposes services. for example:
> > > > > >    http://..../[app]/default/call/jsonrpc
> > > > > >     decorate with @services.jsonrpc the functions to expose
> > > > > >     supports xml, json, xmlrpc, jsonrpc, amfrpc, rss, csv
> > > > > >     """
> > > > > >     session.forget()
> > > > > >     return service()
>
> > > > > > @service.xmlrpc
> > > > > > def getmeetings():
> > > > > >     if auth.is_logged_in():
> > > > > >         return 'you are logged in!'
> > > > > >     else:
> > > > > >         return 'NO DICE'
>
> > > > > > @service.xmlrpc
> > > > > > def test(insink):
> > > > > >     if auth.is_logged_in():
> > > > > >         return 'test: you are logged in!'
> > > > > >     else:
> > > > > >         return 'test: NO DICE'
>
> > > > > > My questions are:
>
> > > > > > 1) what is the purpose of the "call" function?  I see that it
> > > > > > is part of the proxy when invoking, but am not sure where it
> > > > > > gets invoked or what it does.  Does there need to be a
> > > > > > separate call for each web- service function (as I saw in a forum
> post)?
>
> > > > > > 2) when i
> > > > > > enterhttp://www.meetingmonkey.net/init/mmservices/getmeetings
> > > > > > without logging in I get "no dice". I suspect this is due to
> > > > > > the fact that I am accessing the function because it is in a
> > > > > > controller.  This is not the desired behavior as I want to
> > > > > > ensure the user has logged in before getting access to the
> > > > > > function.  Is there a complete example of the best practice
> > > > > > for implementing web-services including where to put various
> > > > > > parts of
> > code?
>
> > > > > > 3) when I
> > > > > > enterhttp://www.meetingmonkey.net/init/mmservices/call/xmlrpc/
> > > > > > ge tmeeti ngs without logging 8in I am redirected to the login
> > > > > > page.  I would rather just return an unauthorized error, but
> > > > > > do not know how to do?
>
> > > --
> > > david.wald...@gmail.com | 301.526.9500
>
> >  web2py.app.svctest.w2p
> > 1006KViewDownload
>
>

Reply via email to