diff --git a/server/src/uds/__init__.py b/server/src/uds/__init__.py index 6d00da342..c79c49d90 100644 --- a/server/src/uds/__init__.py +++ b/server/src/uds/__init__.py @@ -79,8 +79,6 @@ class UDSAppConfig(AppConfig): from . import plugins # To make sure plugins are loaded on memory from . import REST # To make sure REST initializes all what it needs - import uds.xmlrpc # To make actor live - default_app_config = 'uds.UDSAppConfig' diff --git a/server/src/uds/xmlrpc/__init__.py b/server/src/uds/xmlrpc/__init__.py deleted file mode 100644 index a61f8980f..000000000 --- a/server/src/uds/xmlrpc/__init__.py +++ /dev/null @@ -1,46 +0,0 @@ -# -*- coding: utf-8 -*- - -# -# Copyright (c) 2012 Virtual Cable S.L. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without modification, -# are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# * Neither the name of Virtual Cable S.L. nor the names of its contributors -# may be used to endorse or promote products derived from this software -# without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -''' -XMLRCP processing part -This package contains all xmlrpc related stuff -@author: Adolfo Gómez, dkmaster at dkmon dot com -''' -from __future__ import unicode_literals - -# from django.utils.translation import ugettext_noop as _ - -# from uds.core.managers.DownloadsManager import DownloadsManager -# import os.path -# import sys - -# DownloadsManager.manager().registerDownloadable('UDSAdminSetup.exe', -# _('UDS Client Administration Interface (Important!! Requires .net framework 3.5 sp1)'), -# os.path.dirname(sys.modules[__package__].__file__) + '/files/UDSAdminSetup.exe', -# 'application/x-msdownload') diff --git a/server/src/uds/xmlrpc/actor/Actor.py b/server/src/uds/xmlrpc/actor/Actor.py deleted file mode 100644 index cb7c84714..000000000 --- a/server/src/uds/xmlrpc/actor/Actor.py +++ /dev/null @@ -1,93 +0,0 @@ -# -*- coding: utf-8 -*- - -# -# Copyright (c) 2012 Virtual Cable S.L. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without modification, -# are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# * Neither the name of Virtual Cable S.L. nor the names of its contributors -# may be used to endorse or promote products derived from this software -# without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -''' -@author: Adolfo Gómez, dkmaster at dkmon dot com -''' - -from uds.models import UserService -from uds.core.util.State import State -from uds.core.util import log - -import logging - -logger = logging.getLogger(__name__) - - -def test(): - ''' - Simple test function called by actors to test communication. - ''' - logger.debug("Test called") - return True - - -def message_fnc(id_, message, data): - ''' - Process a message from the actor. - @param _id: Ids used by actors to identify themself and locate services to witch they belongs - @param message: Mesagge received from actor - @param data: Extra data - ''' - ids = id_.split(",")[:5] # Limit ids received to five... - logger.debug("Called message for id_ {0}, message \"{1}\" and data \"{2}\"".format(ids, message, data)) - - # Fix: Log used to send "INFO", "DEBUG", .. as level instead of numeric - # Now, we use levels, so for "legacy" actors we can do logs correctly - if message == 'log': - try: - msg, level = data.split('\t') - logger.debug('Msg: {}, level: "{}"'.format(msg, level)) - level = "{}".format(log.logLevelFromStr(level)) - logger.debug('Level: "{}"'.format(level)) - data = '\t'.join([msg, level]) - except Exception: - logger.exception("Exception at log") - data = data.replace('\t', ' ') + '\t10000' # Other - - res = "" - try: - services = UserService.objects.filter(unique_id__in=ids, state__in=[State.USABLE, State.PREPARING]) - if services.count() == 0: - res = "" - else: - res = services[0].getInstance().osmanager().process(services[0], message, data, None) - except Exception as e: - logger.error("Exception at message (client): {0}".format(e)) - res = "" - logger.debug("Returning {0}".format(res)) - return res - - -def registerActorFunctions(dispatcher): - ''' - Utility function to register methods at xmlrpc server for actor - ''' - dispatcher.register_function(test, 'test') - dispatcher.register_function(message_fnc, 'message') diff --git a/server/src/uds/xmlrpc/actor/__init__.py b/server/src/uds/xmlrpc/actor/__init__.py deleted file mode 100644 index 1cdfdb93e..000000000 --- a/server/src/uds/xmlrpc/actor/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -''' -This module is responsible of the communication between actors and OS Managers -''' \ No newline at end of file diff --git a/server/src/uds/xmlrpc/views.py b/server/src/uds/xmlrpc/views.py deleted file mode 100644 index 98b40a0d8..000000000 --- a/server/src/uds/xmlrpc/views.py +++ /dev/null @@ -1,99 +0,0 @@ -# -*- coding: utf-8 -*- - -# -# Copyright (c) 2012 Virtual Cable S.L. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without modification, -# are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# * Neither the name of Virtual Cable S.L. nor the names of its contributors -# may be used to endorse or promote products derived from this software -# without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -''' -@author: Adolfo Gómez, dkmaster at dkmon dot com -''' - -from django.http import HttpResponse -from SimpleXMLRPCServer import SimpleXMLRPCDispatcher -from django.views.decorators.csrf import csrf_exempt - -from uds.xmlrpc.actor.Actor import registerActorFunctions - -import logging - -logger = logging.getLogger(__name__) - - -class XMLRPCDispatcher(SimpleXMLRPCDispatcher): - ''' - Own dispatchers, to allow the pass of the request to the methods. - - Request will be, in most cases, removed from params at @needs_credentials decorator - This means that all xmlrpc methods that needs_credentials, will have the request at - the Credentials object. - - If no request is needed, normal method invocation will be done - ''' - - def __init__(self): - SimpleXMLRPCDispatcher.__init__(self, allow_none=False, encoding=None) - - def dispatch(self, request, **kwargs): - import xmlrpclib - xml = request.body - try: - params, method = xmlrpclib.loads(xml) - try: - response = self._dispatch(method, params + (request,)) - except TypeError: - response = self._dispatch(method, params) - - response = (response,) - response = xmlrpclib.dumps(response, methodresponse=1) - except xmlrpclib.Fault as fault: - response = xmlrpclib.dumps(fault) - except Exception as e: - response = xmlrpclib.dumps( - xmlrpclib.Fault(1, "Exception caught!: {0}".format(e)) - ) - logger.exception('Excaption processing xmlrpc message') - - return HttpResponse(response, content_type='text/xml') - - -dispatcher = XMLRPCDispatcher() - - -# csrf_exempt is needed because we don't expect xmlrcp to be called from a web form -@csrf_exempt -def xmlrpc(request): - if request.method == "POST": - response = dispatcher.dispatch(request) - else: - logger.error('XMLRPC invocation with GET method {0}'.format(request.path)) - response = HttpResponse() - response.write("This is an XML-RPC Service.
") - response.write("You need to invoke it using an XML-RPC Client!
") - - response['Content-length'] = str(len(response.content)) - return response - -registerActorFunctions(dispatcher)