def __init__(self, opts): super(OpenNebulaBaseProvider, self).__init__(opts) try: import defusedxml.ElementTree from defusedxml import xmlrpc import xmlrpclib # nosec # Protect the XMLRPC parser from various XML-based threats xmlrpc.monkey_patch() except ImportError: msg = 'Cannot import defusedxml ElementTree and/or xmlrpc.' raise exceptions.OpenNebulaProviderException(msg) self.opts = opts self.on_auth = opts.on_auth self.on_rpcxml_endpoint = opts.on_rpcxml_endpoint self.cloudkeeper_images = opts.cloudkeeper_images if not self.on_auth: msg = ('ERROR, You must provide a on_auth ' 'via either --on-auth or env[ON_AUTH]') raise exceptions.OpenNebulaProviderException(msg) if not self.on_rpcxml_endpoint: msg = ('You must provide an OpenNebula RPC-XML ' 'endpoint via either --on-rpcxml-endpoint or' ' env[ON_RPCXML_ENDPOINT]') raise exceptions.OpenNebulaProviderException(msg) self.static = providers.static.StaticProvider(opts) self.xml_parser = defusedxml.ElementTree self.server_proxy = xmlrpclib.ServerProxy(self.on_rpcxml_endpoint)
def get_package_list(): """ Load the list of packages from `PyPi`. """ monkey_patch() client = xmlrpc_client.ServerProxy("https://pypi.python.org/pypi") packages = client.list_packages() unmonkey_patch() return packages
def test_monkeypatch(self): try: xmlrpc.monkey_patch() finally: xmlrpc.unmonkey_patch()
except ImportError: from django.utils.importlib import import_module from django.core.urlresolvers import get_mod_func try: # Python2.x from xmlrpclib import Fault except ImportError: # Python3 from xmlrpc.client import Fault from defusedxml import xmlrpc # This method makes the XMLRPC parser (used by loads) safe # from various XML based attacks xmlrpc.monkey_patch() # this error code is taken from xmlrpc-epi # http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php APPLICATION_ERROR = -32500 class RPCMethod(object): ''' A method available to be called via the rpc dispatcher **Attributes** ``method`` The underlying Python method to call when this method is invoked ``help``
## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program. If not, see <http://www.gnu.org/licenses/>. import sys, os, optparse, subprocess, time, tempfile, shutil, json import random, string, signal, traceback, time, hmac, hashlib from datetime import datetime try: from defusedxml.xmlrpc import monkey_patch monkey_patch() del monkey_patch XML_DEFUSED = True except ImportError: XML_DEFUSED = False try: # python 2 from SimpleXMLRPCServer import SimpleXMLRPCServer except ImportError: from xmlrpc.server import SimpleXMLRPCServer # Nicked from the subprocess module -- for closing open file descriptors try: MAXFD = os.sysconf("SC_OPEN_MAX") except:
import re import errno import pybitcoin import subprocess import shutil from keylib import ECPrivateKey from socket import error as socket_error from time import sleep from getpass import getpass from binascii import hexlify, unhexlify from xmlrpclib import ServerProxy from defusedxml import xmlrpc # prevent the usual XML attacks xmlrpc.monkey_patch() import logging logging.disable(logging.CRITICAL) import requests requests.packages.urllib3.disable_warnings() from keychain import PrivateKeychain from pybitcoin import make_send_to_address_tx from pybitcoin import BlockcypherClient from pybitcoin.rpc.bitcoind_client import BitcoindClient # Hack around absolute paths current_dir = os.path.abspath(os.path.dirname(__file__))
from defusedxml.xmlrpc import monkey_patch from SimpleXMLRPCServer import SimpleXMLRPCServer from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler monkey_patch() # Restrict to a particular path. class RequestHandler(SimpleXMLRPCRequestHandler): rpc_paths = ('/RPC2',) # Create server server = SimpleXMLRPCServer(("localhost", 8000), requestHandler=RequestHandler) server.register_introspection_functions() # Register pow() function; this will use the value of # pow.__name__ as the name, which is just 'pow'. server.register_function(pow) # Run the server's main loop server.serve_forever()