def setup_channel_set(channel_set): """Configures an amfast.remoting.channel.ChannelSet object.""" # Setup database schema = persistent.Schema() schema.createSchema() schema.createMappers() # Setup DB based connection_manager and subscription_manager channel_set.connection_manager = SaConnectionManager( persistent.engine, persistent.metadata) channel_set.connection_manager.createTables() channel_set.subscription_manager = SaSubscriptionManager( persistent.engine, persistent.metadata) channel_set.subscription_manager.createTables() # Send log messages to STDOUT handler = logging.StreamHandler(sys.stdout) handler.setLevel(logging.DEBUG) amfast.logger.addHandler(handler) # Map class aliases # These same aliases must be # registered in the client # with the registClassAlias function, # or the RemoteClass metadata tag. class_mapper = ClassDefMapper() class_mapper.mapClass(SaClassDef(models.User, 'models.User')) class_mapper.mapClass(SaClassDef(models.Email, 'models.Email')) class_mapper.mapClass(SaClassDef(models.PhoneNumber, 'models.PhoneNumber')) # Expose class_mapper to our controller sa_obj = controller.SAObject() sa_obj.class_def_mapper = class_mapper # Set Channel options # We're going to use the same # Encoder and Decoder for all channels encoder = Encoder(use_collections=True, use_proxies=True, class_def_mapper=class_mapper, use_legacy_xml=True) decoder = Decoder(class_def_mapper=class_mapper) for channel in channel_set: channel.endpoint.encoder = encoder channel.endpoint.decoder = decoder # Map service targets to controller methods service = Service('ExampleService') service.mapTarget(SaCallableTarget(sa_obj.load, 'load')) service.mapTarget(SaCallableTarget(sa_obj.loadAttr, 'loadAttr')) service.mapTarget(SaCallableTarget(sa_obj.loadAll, 'loadAll')) service.mapTarget(SaCallableTarget(sa_obj.saveList, 'saveList')) service.mapTarget(SaCallableTarget(sa_obj.save, 'save')) service.mapTarget(SaCallableTarget(sa_obj.remove, 'remove')) service.mapTarget(SaCallableTarget(sa_obj.removeList, 'removeList')) service.mapTarget( SaCallableTarget(sa_obj.insertDefaultData, 'insertDefaultData')) channel_set.service_mapper.mapService(service)
def bind_amfast_service(klass, channel_set, class_mapper, args=[], srcpath=None): codegen.register_service(klass, srcpath) instance = klass(*args) service = Service(klass.__name__) for method_name in klass.__amf_methods__: service.mapTarget(CallableTarget(getattr(instance, method_name), method_name)) channel_set.service_mapper.mapService(service) for as3import in klass.__amf_imports__: pytype = find_pytype(as3import) assert pytype is not None register_type(pytype, class_mapper, srcpath=srcpath)
def setup_channel_set(channel_set): """Configures an amfast.remoting.channel.ChannelSet object.""" # Send log messages to STDOUT handler = logging.StreamHandler(sys.stdout) handler.setLevel(logging.DEBUG) amfast.logger.addHandler(handler) # Map service targets to controller methods cont_obj = controller.Controller() service = Service('ExampleService') service.mapTarget(CallableTarget(cont_obj.echo, 'echo')) service.mapTarget(CallableTarget(cont_obj.raiseException, 'raiseException')) channel_set.service_mapper.mapService(service)
def setup_channel_set(channel_set): """Configures an amfast.remoting.channel.ChannelSet object.""" # Send log messages to STDOUT handler = logging.StreamHandler(sys.stdout) handler.setLevel(logging.DEBUG) amfast.logger.addHandler(handler) # These classes are for interacting with the Red5 echo test client. class_mapper = ClassDefMapper() class_mapper.mapClass( DynamicClassDef(RemoteClass, 'org.red5.server.webapp.echo.RemoteClass', amf3=False)) class_mapper.mapClass( ExternClassDef(ExternClass, 'org.red5.server.webapp.echo.ExternalizableClass')) # Set Channel options # We're going to use the same # Encoder and Decoder for all channels encoder = Encoder(use_collections=True, use_proxies=True, class_def_mapper=class_mapper, use_legacy_xml=True) decoder = Decoder(class_def_mapper=class_mapper) for channel in channel_set: channel.endpoint.encoder = encoder channel.endpoint.decoder = decoder # Map service targets to controller methods channel_set.service_mapper.default_service.mapTarget( CallableTarget(echo, 'echo')) service = Service('Red5Echo') service.mapTarget(CallableTarget(echo, 'echo')) channel_set.service_mapper.mapService(service)
def setup_channel_set(channel_set): """Configures an amfast.remoting.channel.ChannelSet object.""" # Send log messages to STDOUT handler = logging.StreamHandler(sys.stdout) handler.setLevel(logging.DEBUG) amfast.logger.addHandler(handler) # Map service targets to controller methods cont_obj = controller.Controller() service = Service('ExampleService') # Set secure=True to raise an exception # when an un-authenticated user attempts # to access the target. service.mapTarget(CallableTarget(cont_obj.echo, 'echo', secure=True)) channel_set.service_mapper.mapService(service) # Set the ChannelSet's 'checkCredentials' attribute # to enable authentication. # # In this example, we're using a method from the # controller to check credentials. channel_set.checkCredentials = cont_obj.checkCredentials
''' Created on 2009-10-12 Melee 项目的网页访问站点 @author: hanbing ''' from amfast.remoting import Service, CallableTarget, ExtCallableTarget from amfast.remoting.channel import SecurityError from amfast.remoting.twisted_channel import TwistedChannelSet, TwistedChannel from twisted.web import static, vhost from twisted.web.server import Site import amfast import logging import sys service = Service('MeleeService') def checkCredentials(user, password): if user != 'correct': raise SecurityError(u'用户名错.') if password != 'correct': raise SecurityError(u'密码错.') return True def ServiceFunction(fn): service.mapTarget(ExtCallableTarget(fn, fn.__name__, secure=True))