Esempio n. 1
0
    def init_my_peer(cls, config, mongo, network):
        import socket
        from miniupnpc import UPnP
        # deploy as an eventlet WSGI server
        try:
            raise ValueError('test')
            sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            sock.bind((config.serve_host, 0))
            server_port = sock.getsockname()[1]
            sock.close()
            eport = server_port
            u = UPnP(None, None, 200, 0)
            u.discover()
            u.selectigd()
            r = u.getspecificportmapping(eport, 'TCP')
            while r is not None and eport < 65536:
                eport = eport + 1
                r = u.getspecificportmapping(eport, 'TCP')
            b = u.addportmapping(eport, 'TCP', u.lanaddr, server_port,
                                 'UPnP YadaCoin Serve port %u' % eport, '')
            config.serve_host = '0.0.0.0'
            config.serve_port = server_port
            config.peer_host = u.externalipaddress()
            config.peer_port = server_port
        except Exception as e:
            print(e)
            config.serve_host = config.serve_host
            config.serve_port = config.serve_port
            config.peer_host = config.peer_host
            config.peer_port = config.peer_port
            print('UPnP failed: you must forward and/or whitelist port',
                  config.peer_port)

        cls.save_my_peer(config, mongo, network)
        return cls(config, mongo, config.peer_host, config.peer_port)
Esempio n. 2
0
    def create_upnp_mapping(cls, config):
        from miniupnpc import UPnP
        config = get_config()
        try:
            u = UPnP(None, None, 200, 0)
            u.discover()
            config.igd = u.selectigd()
        except:
            config.igd = ""
        if config.use_pnp:
            import socket
            # deploy as an eventlet WSGI server
            try:
                server_port = config.peer_port
                eport = server_port
                r = u.getspecificportmapping(eport, 'TCP')
                if r:
                    u.deleteportmapping(eport, 'TCP')
                u.addportmapping(eport, 'TCP', u.lanaddr, server_port,
                                 'UPnP YadaCoin Serve port %u' % eport, '')
                config.peer_host = u.externalipaddress()

                if 'web' in config.modes:
                    server_port = config.serve_port
                    eport = server_port
                    r = u.getspecificportmapping(eport, 'TCP')
                    if r:
                        u.deleteportmapping(eport, 'TCP')
                    u.addportmapping(eport, 'TCP', u.lanaddr, server_port,
                                     'UPnP YadaCoin Serve port %u' % eport, '')
            except Exception as e:
                print(e)
                config.serve_host = config.serve_host
                config.serve_port = config.serve_port
                config.peer_host = config.peer_host
                config.peer_port = config.peer_port
                print('UPnP failed: you must forward and/or whitelist port',
                      config.peer_port)
Esempio n. 3
0
from yaml import load, FullLoader
from miniupnpc import UPnP
import requests

# load the configuration file
with open('config.yaml') as f:
    config = load(f, Loader=FullLoader)

# use UPnP to get the external IP address
upnp = UPnP()

upnp.discoverdelay = 200
upnp.discover()
upnp.selectigd()
ip = upnp.externalipaddress()

# set up variables needed for api access
api_url = 'https://api.cloudflare.com/client/v4'
headers = {
    'Authorization': 'Bearer ' + config['api_token'],
    'Content-Type': 'application/json'
}

# get the DNS record so we can save the ID and check the IP
url = '{}/zones/{}/dns_records?name={}'.format(api_url, config['zone_id'],
                                               config['hostname'])
response = requests.get(url, headers=headers).json()

if response['result'][0]['content'] == ip:
    exit
Esempio n. 4
0
            sock.bind((Config.serve_host, 0))
            server_port = sock.getsockname()[1]
            sock.close()
            eport = server_port
            u = UPnP(None, None, 200, 0)
            u.discover()
            u.selectigd()
            r = u.getspecificportmapping(eport, 'TCP')
            while r != None and eport < 65536:
                eport = eport + 1
                r = u.getspecificportmapping(eport, 'TCP')
            b = u.addportmapping(eport, 'TCP', u.lanaddr, server_port,
                                 'UPnP YadaCoin Serve port %u' % eport, '')
            Config.serve_host = '0.0.0.0'
            Config.serve_port = server_port
            Config.peer_host = u.externalipaddress()
            Config.peer_port = server_port
            print "http://{}:{}/".format(u.externalipaddress(), server_port)
        except:
            Config.serve_host = Config.serve_host
            Config.serve_port = Config.serve_port
            Config.peer_host = Config.peer_host
            Config.peer_port = Config.peer_port

        try:
            res = requests.post('https://yadacoin.io/peers',
                                json.dumps({
                                    'host': Config.peer_host,
                                    'port': Config.peer_port
                                }),
                                headers={"Content-Type": "application/json"})