Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
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
Exemplo n.º 3
0
 def test_monkeypatch(self):
     try:
         xmlrpc.monkey_patch()
     finally:
         xmlrpc.unmonkey_patch()
Exemplo n.º 4
0
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``
Exemplo n.º 5
0
## 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:
Exemplo n.º 6
0
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()
Exemplo n.º 8
0
 def test_monkeypatch(self):
     try:
         xmlrpc.monkey_patch()
     finally:
         xmlrpc.unmonkey_patch()