Pyro4.utils.flame — Foreign Location Automatic Module Exposer

Pyro FLAME: Foreign Location Automatic Module Exposer. Easy but potentially very dangerous way of exposing remote modules and builtins. Flame requires the pickle serializer to be used.

Pyro4.utils.flame.connect(location, hmac_key=None)

Connect to a Flame server on the given location, for instance localhost:9999 or ./u:unixsock This is just a convenience function to creates an appropriate Pyro proxy.

Pyro4.utils.flame.start(daemon)

Create and register a Flame server in the given daemon. Be very cautious before starting this: it allows the clients full access to everything on your system.

Pyro4.utils.flame.createModule(name, source, filename='<dynamic-module>', namespace=None)

Utility function to create a new module with the given name (dotted notation allowed), directly from the source string. Adds it to sys.modules, and returns the new module object. If you provide a namespace dict (such as globals()), it will import the module into that namespace too.

class Pyro4.utils.flame.Flame

The actual FLAME server logic. Usually created by using core.Daemon.startFlame(). Be very cautious before starting this: it allows the clients full access to everything on your system.

builtin(name)

returns a proxy to the given builtin on the server

console()

get a proxy for a remote interactive console session

evaluate(expression)

evaluate an expression and return its result

execute(code)

execute a piece of code

getfile(filename)

read any accessible file from the server

getmodule(modulename)

obtain the source code from a module on the server

module(name)

Import a module on the server given by the module name and returns a proxy to it. The returned proxy does not support direct attribute access, if you want that, you should use the evaluate method instead.

sendfile(filename, filedata)

store a new file on the server

sendmodule(modulename, modulesource)

Send the source of a module to the server and make the server load it. Note that you still have to actually import it on the server to access it. Sending a module again will replace the previous one with the new.