Python论坛  - 讨论区

标题:[python-chinese] 远程调用的一个想法

2006年08月08日 星期二 15:57

Gerald Lee leejd80 at gmail.com
Tue Aug 8 15:57:04 HKT 2006

我现在做的程序,逐渐的由C/C++开始转到Python方向,同时软件也由当初的单机版本转为目前的还不完善的网络版本。
由于我们软件的特性,部分功能必须使用自己的客户端完成,浏览器实现起来非常困难。
但是现在业务逻辑部分越来越复杂,虽然使用Python来实现的,但是每次都要更新,实现起来感觉还是不方便,同时因为需要保密等原因,有些业务逻辑不能下载到客户端的硬盘上(防君子不防小人而已)。
我就在想,有没有一种方法,可以实现我在调用的时候,发现本地被调用的对象不存在,自动从指定的服务器上去取,然后直接在本地进行调用,相当于把服务器的目录link到了本地硬盘上。这种方法与RPC不同的地方,方法的执行是在客户端,而一般RPC是在服务器端执行,然后返回结果给客户端。

不知道这个做法实现起来复杂度怎么样?


-- 
My Blog >> http://leejd.cndev.org
My QQ >> 9847243
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060808/e8ac1e8d/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年08月08日 星期二 17:09

jacob jacob at exoweb.net
Tue Aug 8 17:09:27 HKT 2006

Gerald Lee wrote:

> 我现在做的程序,逐渐的由C/C++开始转到Python方向,同时软件也由当初的单
> 机版本转为目前的还不完善的网络版本。
> 由于我们软件的特性,部分功能必须使用自己的客户端完成,浏览器实现起来非
> 常困难。
> 但是现在业务逻辑部分越来越复杂,虽然使用Python来实现的,但是每次都要更
> 新,实现起来感觉还是不方便,同时因为需要保密等原因,有些业务逻辑不能下
> 载到客户端的硬盘上(防君子不防小人而已)。
> 我就在想,有没有一种方法,可以实现我在调用的时候,发现本地被调用的对象
> 不存在,自动从指定的服务器上去取,然后直接在本地进行调用,相当于把服务
> 器的目录link到了本地硬盘上。这种方法与RPC不同的地方,方法的执行是在客
> 户端,而一般RPC是在服务器端执行,然后返回结果给客户端。
>
> 不知道这个做法实现起来复杂度怎么样?
>
你要实现的好象和RPC没有关系.
你只是想源代码不放在本地, 每次执行时从远程载入模块. 这个只要写一个import
hook就可以了.
http://www.python.org/doc/2.3/whatsnew/section-pep302.html#section-pep302

可以对传输过来的代码加密. 然后用一个extension module来实现这个import
hook, 在其中可以先解密,再载入.

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年08月08日 星期二 17:19

郭丹 mark.guo at gmail.com
Tue Aug 8 17:19:36 HKT 2006

不太明白,把业务逻辑放在服务器端不可以吗?在客户端可以只放UI的部分.

On 8/8/06, Gerald Lee <leejd80 at gmail.com> wrote:
> 我现在做的程序,逐渐的由C/C++开始转到Python方向,同时软件也由当初的单机版本转为目前的还不完善的网络版本。
> 由于我们软件的特性,部分功能必须使用自己的客户端完成,浏览器实现起来非常困难。
> 但是现在业务逻辑部分越来越复杂,虽然使用Python来实现的,但是每次都要更新,实现起来感觉还是不方便,同时因为需要保密等原因,有些业务逻辑不能下载到客户端的硬盘上(防君子不防小人而已)。
> 我就在想,有没有一种方法,可以实现我在调用的时候,发现本地被调用的对象不存在,自动从指定的服务器上去取,然后直接在本地进行调用,相当于把服务器的目录link到了本地硬盘上。这种方法与RPC不同的地方,方法的执行是在客户端,而一般RPC是在服务器端执行,然后返回结果给客户端。
>
> 不知道这个做法实现起来复杂度怎么样?
>
>
> --
> My Blog >> http://leejd.cndev.org
> My QQ >> 9847243
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to
> python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to
> python-chinese-request at lists.python.cn
> Detail Info:
> http://python.cn/mailman/listinfo/python-chinese
>
>


-- 
"No More"
Mark's Blog  @ www.throughworks.com

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年08月08日 星期二 17:29

Gerald Lee leejd80 at gmail.com
Tue Aug 8 17:29:59 HKT 2006

业务逻辑放在服务器端没问题,可是俺的业务逻辑处理的数据,动不动就是M级别的,网络传输是一个很大的问题,所以才会说可否将远端的对象搞到本地来调用。同时,在本地处理的话,客户端可以帮服务器节省资源:)


在06-8-8,郭丹 <mark.guo at gmail.com> 写道:
>
> 不太明白,把业务逻辑放在服务器端不可以吗?在客户端可以只放UI的部分.
>
> On 8/8/06, Gerald Lee <leejd80 at gmail.com> wrote:
> > 我现在做的程序,逐渐的由C/C++开始转到Python方向,同时软件也由当初的单机版本转为目前的还不完善的网络版本。
> > 由于我们软件的特性,部分功能必须使用自己的客户端完成,浏览器实现起来非常困难。
> >
> 但是现在业务逻辑部分越来越复杂,虽然使用Python来实现的,但是每次都要更新,实现起来感觉还是不方便,同时因为需要保密等原因,有些业务逻辑不能下载到客户端的硬盘上(防君子不防小人而已)。
> >
> 我就在想,有没有一种方法,可以实现我在调用的时候,发现本地被调用的对象不存在,自动从指定的服务器上去取,然后直接在本地进行调用,相当于把服务器的目录link到了本地硬盘上。这种方法与RPC不同的地方,方法的执行是在客户端,而一般RPC是在服务器端执行,然后返回结果给客户端。
> >
> > 不知道这个做法实现起来复杂度怎么样?
> >
> >
> > --
> > My Blog >> http://leejd.cndev.org
> > My QQ >> 9847243
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese at lists.python.cn
> > Subscribe: send subscribe to
> > python-chinese-request at lists.python.cn
> > Unsubscribe: send unsubscribe to
> > python-chinese-request at lists.python.cn
> > Detail Info:
> > http://python.cn/mailman/listinfo/python-chinese
> >
> >
>
>
> --
> "No More"
> Mark's Blog  @ www.throughworks.com
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>


-- 
My Blog >> http://leejd.cndev.org
My QQ >> 9847243
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060808/61e6b990/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年08月08日 星期二 17:46

jacob jacob at exoweb.net
Tue Aug 8 17:46:41 HKT 2006

Gerald Lee wrote:

> 业务逻辑放在服务器端没问题,可是俺的业务逻辑处理的数据,动不动就是M级
> 别的,网络传输是一个很大的问题,所以才会说可否将远端的对象搞到本地来调
> 用。同时,在本地处理的话,客户端可以帮服务器节省资源:)
>
>
看看我上一封信. 你需要的只是不把Python代码存在本地, 而是每次启动时从远程
载入. 你可以把这个载入过程用C写, 加一加密.

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年08月08日 星期二 19:29

Gerald Lee leejd80 at gmail.com
Tue Aug 8 19:29:58 HKT 2006

多谢多谢!
通过http方式的调用已经成功了,参考代码:

from ihooks import ModuleImporter, ModuleLoader, PY_SOURCE
from urllib2 import urlopen, HTTPError
from urlparse import urljoin

import re, tempfile, shutil, os

pattern = re.compile(r"^(https?://[^ ]+)")
url_path = ["http://eikeon.com/2002/06/16/", "http://eikeon.com/2002/06/15/",
'http://www.gridok.com/']

class HTTPModuleLoader(ModuleLoader):

    def find_module(self, name, path = None):
        stuff = ModuleLoader.find_module(self, name, path)
        if stuff:
            return stuff
        if path:
            return

        if self.verbose: print "looking for: ", name, path
        for base in url_path:
            url = urljoin(base, name + ".py")
            try:
                file = urlopen(url)
                name = tempfile.mktemp()
                stream = open(name, 'wb')
                stream.write(file.read())
                stream.close
                file = open(name, 'r')
                return file, url, ('.py', 'r', 1)
            except HTTPError, he:
                print "Did not find: ", url
                print he
        return None


class HTTPModuleImporter(ModuleImporter):
    def __init__(self):
        hooks, verbose = (None, 1)

        loader = HTTPModuleLoader(hooks, verbose)

        ModuleImporter.__init__(self, loader, verbose)


HTTPModuleImporter().install()

#以上代码参考:http://www.koders.com/python/fid385DFC52BED3B940DA5EE53EBFDF70D388266600.aspx?s=ihooks
#以下代码仅供测试用
import logger

log = logger.initlog()
log.info("hello from http")


在06-8-8,jacob <jacob at exoweb.net> 写道:
>
> Gerald Lee wrote:
>
> > 我现在做的程序,逐渐的由C/C++开始转到Python方向,同时软件也由当初的单
> > 机版本转为目前的还不完善的网络版本。
> > 由于我们软件的特性,部分功能必须使用自己的客户端完成,浏览器实现起来非
> > 常困难。
> > 但是现在业务逻辑部分越来越复杂,虽然使用Python来实现的,但是每次都要更
> > 新,实现起来感觉还是不方便,同时因为需要保密等原因,有些业务逻辑不能下
> > 载到客户端的硬盘上(防君子不防小人而已)。
> > 我就在想,有没有一种方法,可以实现我在调用的时候,发现本地被调用的对象
> > 不存在,自动从指定的服务器上去取,然后直接在本地进行调用,相当于把服务
> > 器的目录link到了本地硬盘上。这种方法与RPC不同的地方,方法的执行是在客
> > 户端,而一般RPC是在服务器端执行,然后返回结果给客户端。
> >
> > 不知道这个做法实现起来复杂度怎么样?
> >
> 你要实现的好象和RPC没有关系.
> 你只是想源代码不放在本地, 每次执行时从远程载入模块. 这个只要写一个import
> hook就可以了.
> http://www.python.org/doc/2.3/whatsnew/section-pep302.html#section-pep302
>
> 可以对传输过来的代码加密. 然后用一个extension module来实现这个import
> hook, 在其中可以先解密,再载入.
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>



-- 
My Blog >> http://leejd.cndev.org
My QQ >> 9847243
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060808/55d10ead/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年08月09日 星期三 10:33

jacob jacob at exoweb.net
Wed Aug 9 10:33:18 HKT 2006

Gerald Lee wrote:

> 多谢多谢!
> 通过http方式的调用已经成功了,参考代码:
>
> from ihooks import ModuleImporter, ModuleLoader, PY_SOURCE
> from urllib2 import urlopen, HTTPError
> from urlparse import urljoin
>
> import re, tempfile, shutil, os
>
> pattern = re.compile(r"^(https?://[^ ]+)")
> url_path = ["http://eikeon.com/2002/06/16/",
> "http://eikeon.com/2002/06/15/ ", 'http://www.gridok.com/'
> <http://www.gridok.com/%27>]
>
> class HTTPModuleLoader(ModuleLoader):
>
> def find_module(self, name, path = None):
> stuff = ModuleLoader.find_module(self, name, path)
> if stuff:
> return stuff
> if path:
> return
>
> if self.verbose: print "looking for: ", name, path
> for base in url_path:
> url = urljoin(base, name + ".py")
> try:
> file = urlopen(url)
> name = tempfile.mktemp()
> stream = open(name, 'wb')
> stream.write(file.read())
> stream.close
> file = open(name, 'r')
> return file, url, ('.py', 'r', 1)
> except HTTPError, he:
> print "Did not find: ", url
> print he
> return None
>
>
> class HTTPModuleImporter(ModuleImporter):
> def __init__(self):
> hooks, verbose = (None, 1)
>
> loader = HTTPModuleLoader(hooks, verbose)
>
> ModuleImporter.__init__(self, loader, verbose)
>
>
> HTTPModuleImporter().install()
>
> #以上代码参考:http:
> //www.koders.com/python/fid385DFC52BED3B940DA5EE53EBFDF70D388266600.aspx?s=ihooks
> #以下代码仅供测试用
> import logger
>
> log = logger.initlog()
> log.info("hello from http")

这样防君子倒是可以, 不过对于小人来说还是弱了点. 中间完全可以截取你的http
通讯, 得到你的业务逻辑.
我前面建议用C来写载入的逻辑并且加密, 就是为了防止这个. 如果再加一层壳就
更保险些了. :)

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年08月09日 星期三 10:37

赵志桐 ops.tong at gmail.com
Wed Aug 9 10:37:31 HKT 2006

是远程打开一个网址获取他的内容么?

-----邮件原件-----
发件人: python-chinese-bounces at lists.python.cn
[mailto:python-chinese-bounces at lists.python.cn] 代表 jacob
发送时间: 2006年8月9日 10:33
收件人: python-chinese at lists.python.cn
主题: Re: [python-chinese] 远程调用的一个想法

Gerald Lee wrote:

> 多谢多谢!
> 通过http方式的调用已经成功了,参考代码:
>
> from ihooks import ModuleImporter, ModuleLoader, PY_SOURCE
> from urllib2 import urlopen, HTTPError
> from urlparse import urljoin
>
> import re, tempfile, shutil, os
>
> pattern = re.compile(r"^(https?://[^ ]+)")
> url_path = ["http://eikeon.com/2002/06/16/",
> "http://eikeon.com/2002/06/15/ ", 'http://www.gridok.com/'
> <http://www.gridok.com/%27>]
>
> class HTTPModuleLoader(ModuleLoader):
>
> def find_module(self, name, path = None):
> stuff = ModuleLoader.find_module(self, name, path)
> if stuff:
> return stuff
> if path:
> return
>
> if self.verbose: print "looking for: ", name, path
> for base in url_path:
> url = urljoin(base, name + ".py")
> try:
> file = urlopen(url)
> name = tempfile.mktemp()
> stream = open(name, 'wb')
> stream.write(file.read())
> stream.close
> file = open(name, 'r')
> return file, url, ('.py', 'r', 1)
> except HTTPError, he:
> print "Did not find: ", url
> print he
> return None
>
>
> class HTTPModuleImporter(ModuleImporter):
> def __init__(self):
> hooks, verbose = (None, 1)
>
> loader = HTTPModuleLoader(hooks, verbose)
>
> ModuleImporter.__init__(self, loader, verbose)
>
>
> HTTPModuleImporter().install()
>
> #以上代码参考:http:
>
//www.koders.com/python/fid385DFC52BED3B940DA5EE53EBFDF70D388266600.aspx?s=i
hooks
> #以下代码仅供测试用
> import logger
>
> log = logger.initlog()
> log.info("hello from http")

这样防君子倒是可以, 不过对于小人来说还是弱了点. 中间完全可以截取你的http
通讯, 得到你的业务逻辑.
我前面建议用C来写载入的逻辑并且加密, 就是为了防止这个. 如果再加一层壳就
更保险些了. :)
_______________________________________________
python-chinese
Post: send python-chinese at lists.python.cn
Subscribe: send subscribe to python-chinese-request at lists.python.cn
Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
Detail Info: http://python.cn/mailman/listinfo/python-chinese


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年08月09日 星期三 10:47

Xiao Lei Wu xiaoleiw at cn.ibm.com
Wed Aug 9 10:47:30 HKT 2006

snort¼àÌý
²»¹ýÊÇ·ñ¿ÉÒÔÓÃhttpsÌæ´ú£¿

Best Regards,

Zachary Wu (Îâ°~ÀÚ)
Software Engineer, Enterprise Content Management FVT, IBM China Software
Development Lab
Tel: +86 10 82782244-3235. Fax: 82782244-2886 Tie Line: 915-2244-3235
Internet: xiaoleiw at cn.ibm.com
Notes ID: Xiao Lei Wu/China/Contr/IBM at IBMCN
Address: 8/F, Block A, Power Creative Building, No.1, East Road, Shang Di,
Beijing 100085, P.R. China

python-chinese-bounces at lists.python.cn дÓÚ 2006-08-09 10:37:31:

> ÊÇÔ¶³Ì´ò¿ªÒ»¸öÍøÖ·»ñÈ¡ËûµÄÄÚÈÝô?
>
> -----ÓʼþÔ­¼þ-----
> ·¢¼þÈË: python-chinese-bounces at lists.python.cn
> [mailto:python-chinese-bounces at lists.python.cn] ´ú±í jacob
> ·¢ËÍʱ¼ä: 2006Äê8ÔÂ9ÈÕ 10:33
> ÊÕ¼þÈË: python-chinese at lists.python.cn
> Ö÷Ìâ: Re: [python-chinese] Ô¶³Ìµ÷ÓõÄÒ»¸öÏë·¨
>
> Gerald Lee wrote:
>
> > ¶àл¶àл£¡
> > ͨ¹ýhttp·½Ê½µÄµ÷ÓÃÒѾ­³É¹¦ÁË£¬²Î¿¼´úÂ룺
> >
> > from ihooks import ModuleImporter, ModuleLoader, PY_SOURCE
> > from urllib2 import urlopen, HTTPError
> > from urlparse import urljoin
> >
> > import re, tempfile, shutil, os
> >
> > pattern = re.compile(r"^(https?://[^ ]+)")
> > url_path = ["http://eikeon.com/2002/06/16/",
> > "http://eikeon.com/2002/06/15/ ", 'http://www.gridok.com/'
> > <http://www.gridok.com/%27>]
> >
> > class HTTPModuleLoader(ModuleLoader):
> >
> > def find_module(self, name, path = None):
> > stuff = ModuleLoader.find_module(self, name, path)
> > if stuff:
> > return stuff
> > if path:
> > return
> >
> > if self.verbose: print "looking for: ", name, path
> > for base in url_path:
> > url = urljoin(base, name + ".py")
> > try:
> > file = urlopen(url)
> > name = tempfile.mktemp()
> > stream = open(name, 'wb')
> > stream.write(file.read())
> > stream.close
> > file = open(name, 'r')
> > return file, url, ('.py', 'r', 1)
> > except HTTPError, he:
> > print "Did not find: ", url
> > print he
> > return None
> >
> >
> > class HTTPModuleImporter(ModuleImporter):
> > def __init__(self):
> > hooks, verbose = (None, 1)
> >
> > loader = HTTPModuleLoader(hooks, verbose)
> >
> > ModuleImporter.__init__(self, loader, verbose)
> >
> >
> > HTTPModuleImporter().install()
> >
> > #ÒÔÉÏ´úÂë²Î¿¼£ºhttp:
> >
>
//www.koders.com/python/fid385DFC52BED3B940DA5EE53EBFDF70D388266600.aspx?s=i

> hooks
> > #ÒÔÏ´úÂë½ö¹©²âÊÔÓÃ
> > import logger
> >
> > log = logger.initlog()
> > log.info("hello from http")
>
> ÕâÑù·À¾ý×Óµ¹ÊÇ¿ÉÒÔ, ²»¹ý¶ÔÓÚСÈËÀ´Ëµ»¹ÊÇÈõÁ˵ã. ÖмäÍêÈ«¿ÉÒÔ½ØÈ¡ÄãµÄhttp
> ͨѶ, µÃµ½ÄãµÄÒµÎñÂß¼­.
> ÎÒÇ°Ã潨ÒéÓÃCÀ´Ð´ÔØÈëµÄÂß¼­²¢ÇÒ¼ÓÃÜ, ¾ÍÊÇΪÁË·ÀÖ¹Õâ¸ö. Èç¹ûÔÙ¼ÓÒ»²ã¿Ç¾Í
> ¸ü±£ÏÕЩÁË. :)
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060809/2a53e41a/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年08月09日 星期三 10:52

jacob jacob at exoweb.net
Wed Aug 9 10:52:02 HKT 2006

Xiao Lei Wu wrote:

> snort监听
> 不过是否可以用https替代?
>
> Best Regards,
>
可以直接得到他存在本地的这段用来载入模块的Python代码(源码或字节码形式).
阅读以后就知道他用什么url去拿, 然后直接去拿就是了.
所以这段载入代码最好不要用Python写, 或者即使是用Python写, 也要用pyrex转
换成extension module的形式.

>
> python-chinese-bounces at lists.python.cn 写于 2006-08-09 10:37:31:
>
> > 是远程打开一个网址获取他的内容么?
> >
> > -----邮件原件-----
> > 发件人: python-chinese-bounces at lists.python.cn
> > [mailto:python-chinese-bounces at lists.python.cn] 代表 jacob
> > 发送时间: 2006年8月9日 10:33
> > 收件人: python-chinese at lists.python.cn
> > 主题: Re: [python-chinese] 远程调用的一个想法
> >
> > Gerald Lee wrote:
> >
> > > 多谢多谢!
> > > 通过http方式的调用已经成功了,参考代码:
> > >
> > > from ihooks import ModuleImporter, ModuleLoader, PY_SOURCE
> > > from urllib2 import urlopen, HTTPError
> > > from urlparse import urljoin
> > >
> > > import re, tempfile, shutil, os
> > >
> > > pattern = re.compile(r"^(https?://[^ ]+)")
> > > url_path = ["http://eikeon.com/2002/06/16/",
> > > "http://eikeon.com/2002/06/15/ ", 'http://www.gridok.com/'
> > > <http://www.gridok.com/%27>]
> > >
> > > class HTTPModuleLoader(ModuleLoader):
> > >
> > > def find_module(self, name, path = None):
> > > stuff = ModuleLoader.find_module(self, name, path)
> > > if stuff:
> > > return stuff
> > > if path:
> > > return
> > >
> > > if self.verbose: print "looking for: ", name, path
> > > for base in url_path:
> > > url = urljoin(base, name + ".py")
> > > try:
> > > file = urlopen(url)
> > > name = tempfile.mktemp()
> > > stream = open(name, 'wb')
> > > stream.write(file.read())
> > > stream.close
> > > file = open(name, 'r')
> > > return file, url, ('.py', 'r', 1)
> > > except HTTPError, he:
> > > print "Did not find: ", url
> > > print he
> > > return None
> > >
> > >
> > > class HTTPModuleImporter(ModuleImporter):
> > > def __init__(self):
> > > hooks, verbose = (None, 1)
> > >
> > > loader = HTTPModuleLoader(hooks, verbose)
> > >
> > > ModuleImporter.__init__(self, loader, verbose)
> > >
> > >
> > > HTTPModuleImporter().install()
> > >
> > > #以上代码参考:http:
> > >
> >
> //www.koders.com/python/fid385DFC52BED3B940DA5EE53EBFDF70D388266600.aspx?s=i
> > hooks
> > > #以下代码仅供测试用
> > > import logger
> > >
> > > log = logger.initlog()
> > > log.info("hello from http")
> >
> > 这样防君子倒是可以, 不过对于小人来说还是弱了点. 中间完全可以截取你的http
> > 通讯, 得到你的业务逻辑.
> > 我前面建议用C来写载入的逻辑并且加密, 就是为了防止这个. 如果再加一层壳就
> > 更保险些了. :)
>


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年08月09日 星期三 11:50

Gerald Lee leejd80 at gmail.com
Wed Aug 9 11:50:58 HKT 2006

但是这样加载就只能加载为模块的方式,如果我在url上面是一个package的话,怎么样在本地载入为一个package呢?

在06-8-9,jacob <jacob at exoweb.net> 写道:
>
> Gerald Lee wrote:
>
> > 多谢多谢!
> > 通过http方式的调用已经成功了,参考代码:
> >
> > from ihooks import ModuleImporter, ModuleLoader, PY_SOURCE
> > from urllib2 import urlopen, HTTPError
> > from urlparse import urljoin
> >
> > import re, tempfile, shutil, os
> >
> > pattern = re.compile(r"^(https?://[^ ]+)")
> > url_path = ["http://eikeon.com/2002/06/16/",
> > "http://eikeon.com/2002/06/15/ ", 'http://www.gridok.com/'
> > <http://www.gridok.com/%27>]
> >
> > class HTTPModuleLoader(ModuleLoader):
> >
> > def find_module(self, name, path = None):
> > stuff = ModuleLoader.find_module(self, name, path)
> > if stuff:
> > return stuff
> > if path:
> > return
> >
> > if self.verbose: print "looking for: ", name, path
> > for base in url_path:
> > url = urljoin(base, name + ".py")
> > try:
> > file = urlopen(url)
> > name = tempfile.mktemp()
> > stream = open(name, 'wb')
> > stream.write(file.read())
> > stream.close
> > file = open(name, 'r')
> > return file, url, ('.py', 'r', 1)
> > except HTTPError, he:
> > print "Did not find: ", url
> > print he
> > return None
> >
> >
> > class HTTPModuleImporter(ModuleImporter):
> > def __init__(self):
> > hooks, verbose = (None, 1)
> >
> > loader = HTTPModuleLoader(hooks, verbose)
> >
> > ModuleImporter.__init__(self, loader, verbose)
> >
> >
> > HTTPModuleImporter().install()
> >
> > #以上代码参考:http:
> >
> //www.koders.com/python/fid385DFC52BED3B940DA5EE53EBFDF70D388266600.aspx?s=ihooks
> > #以下代码仅供测试用
> > import logger
> >
> > log = logger.initlog()
> > log.info("hello from http")
>
> 这样防君子倒是可以, 不过对于小人来说还是弱了点. 中间完全可以截取你的http
> 通讯, 得到你的业务逻辑.
> 我前面建议用C来写载入的逻辑并且加密, 就是为了防止这个. 如果再加一层壳就
> 更保险些了. :)
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>



-- 
My Blog >> http://leejd.cndev.org
My QQ >> 9847243
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060809/f0ef08ed/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年08月09日 星期三 11:58

Gerald Lee leejd80 at gmail.com
Wed Aug 9 11:58:25 HKT 2006

其实url地址可以是一个cgi的,需要通过认证才可以得到py的内容

2006/8/9, jacob <jacob at exoweb.net>:
>
> Xiao Lei Wu wrote:
>
> > snort监听
> > 不过是否可以用https替代?
> >
> > Best Regards,
> >
> 可以直接得到他存在本地的这段用来载入模块的Python代码(源码或字节码形式).
> 阅读以后就知道他用什么url去拿, 然后直接去拿就是了.
> 所以这段载入代码最好不要用Python写, 或者即使是用Python写, 也要用pyrex转
> 换成extension module的形式.
>
> >
> > python-chinese-bounces at lists.python.cn 写于 2006-08-09 10:37:31:
> >
> > > 是远程打开一个网址获取他的内容么?
> > >
> > > -----邮件原件-----
> > > 发件人: python-chinese-bounces at lists.python.cn
> > > [mailto:python-chinese-bounces at lists.python.cn] 代表 jacob
> > > 发送时间: 2006年8月9日 10:33
> > > 收件人: python-chinese at lists.python.cn
> > > 主题: Re: [python-chinese] 远程调用的一个想法
> > >
> > > Gerald Lee wrote:
> > >
> > > > 多谢多谢!
> > > > 通过http方式的调用已经成功了,参考代码:
> > > >
> > > > from ihooks import ModuleImporter, ModuleLoader, PY_SOURCE
> > > > from urllib2 import urlopen, HTTPError
> > > > from urlparse import urljoin
> > > >
> > > > import re, tempfile, shutil, os
> > > >
> > > > pattern = re.compile(r"^(https?://[^ ]+)")
> > > > url_path = ["http://eikeon.com/2002/06/16/",
> > > > "http://eikeon.com/2002/06/15/ ", 'http://www.gridok.com/'
> > > > <http://www.gridok.com/%27>]
> > > >
> > > > class HTTPModuleLoader(ModuleLoader):
> > > >
> > > > def find_module(self, name, path = None):
> > > > stuff = ModuleLoader.find_module(self, name, path)
> > > > if stuff:
> > > > return stuff
> > > > if path:
> > > > return
> > > >
> > > > if self.verbose: print "looking for: ", name, path
> > > > for base in url_path:
> > > > url = urljoin(base, name + ".py")
> > > > try:
> > > > file = urlopen(url)
> > > > name = tempfile.mktemp()
> > > > stream = open(name, 'wb')
> > > > stream.write(file.read())
> > > > stream.close
> > > > file = open(name, 'r')
> > > > return file, url, ('.py', 'r', 1)
> > > > except HTTPError, he:
> > > > print "Did not find: ", url
> > > > print he
> > > > return None
> > > >
> > > >
> > > > class HTTPModuleImporter(ModuleImporter):
> > > > def __init__(self):
> > > > hooks, verbose = (None, 1)
> > > >
> > > > loader = HTTPModuleLoader(hooks, verbose)
> > > >
> > > > ModuleImporter.__init__(self, loader, verbose)
> > > >
> > > >
> > > > HTTPModuleImporter().install()
> > > >
> > > > #以上代码参考:http:
> > > >
> > >
> >
> //www.koders.com/python/fid385DFC52BED3B940DA5EE53EBFDF70D388266600.aspx?s=i
> > > hooks
> > > > #以下代码仅供测试用
> > > > import logger
> > > >
> > > > log = logger.initlog()
> > > > log.info("hello from http")
> > >
> > > 这样防君子倒是可以, 不过对于小人来说还是弱了点. 中间完全可以截取你的http
> > > 通讯, 得到你的业务逻辑.
> > > 我前面建议用C来写载入的逻辑并且加密, 就是为了防止这个. 如果再加一层壳就
> > > 更保险些了. :)
> >
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>



-- 
My Blog >> http://leejd.cndev.org
My QQ >> 9847243
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060809/71ab99ee/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年08月09日 星期三 14:30

jacob jacob at exoweb.net
Wed Aug 9 14:30:45 HKT 2006

Gerald Lee wrote:

> 其实url地址可以是一个cgi的,需要通过认证才可以得到py的内容
>
直接看你本地加载模块的代码, 用户名,密码都能拿到的.

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号