コード例 #1
0
 def __init__(self, server, port, ssl=True, tails=True, cache=False):
     self.server = server
     self.port = port
     self.ssl = ssl
     self.tails = tails
     self.cache = cache
     self.dm = DirectoryManager()
コード例 #2
0
 def write(self):
     dm = DirectoryManager()
     f = dm.get_claim_report_path()
     l = dm.get_claim_report_latest_symlink_path()
     print("")
     FileManager.write_text(f, str(self))
     FileManager.symlink(f, l)
     print(REPORT_STR % f)
コード例 #3
0
 def write(self):
     dm = DirectoryManager()
     f = dm.get_direct_query_report_path(self.coin['id'])
     l = dm.get_direct_query_report_latest_symlink_path(self.coin['id'])
     print("")
     FileManager.write_text(f, str(self))
     FileManager.symlink(f, l)
     print(REPORT_STR % (self.name, f))
コード例 #4
0
class ElectrumQuery(object):
    def __init__(self, server, port, ssl=True, tails=True, cache=False):
        self.server = server
        self.port = port
        self.ssl = ssl
        self.tails = tails
        self.cache = cache
        self.dm = DirectoryManager()

    def _create_socket(self):
        s = (socks.create_connection(
            (self.server, self.port),
            proxy_type=socks.SOCKS5,
            proxy_addr="127.0.0.1",
            proxy_port=9050) if self.tails else socket.create_connection(
                (self.server, self.port)))
        self.socket = ssl.wrap_socket(s) if self.ssl else s
        print("opened connection to: %s" %
              chill_yellow_str("%s:%d" % (self.server, self.port)))

    def _destroy_socket(self):
        self.socket.close()
        print("closed connection to: %s" %
              chill_yellow_str("%s:%d" % (self.server, self.port)))

    def _query_id_str(self, msg):
        return "%s:%s/%s" % (self.server, self.port, msg)

    def query(self, method, params):
        params = [params] if type(params) is not list else params
        msg = json.dumps({
            "id": 0,
            "method": method,
            "params": params
        },
                         sort_keys=True)
        qid = self._query_id_str(msg)

        print("Electrum fetch: %s" % chill_yellow_str(qid))

        if self.cache and self.dm.is_query_cached(qid):
            cache_file = self.dm.get_query_cache_path(qid)
            return FileManager.read_json_info(cache_file)

        self._create_socket()
        self.socket.send(msg.encode() + b'\n')
        response = json.loads(self.socket.recv(RECV_MAX)[:-1].decode())
        self._destroy_socket()
        if self.cache:
            cache_file = self.dm.get_query_cache_path(qid)
            FileManager.write_text(cache_file, json.dumps(response))
        return response
コード例 #5
0
ファイル: web_data.py プロジェクト: konqueror1/forkdrop_suite
    def _text_dl(self, url):
        if ".onion" in url:
            print("tor fetch: %s" % chill_green_str(url))
        else:
            print("web fetch: %s" % chill_yellow_str(url))

        dm = DirectoryManager()
        if self.cache and dm.is_query_cached(url):
            cache_file = dm.get_query_cache_path(url)
            return FileManager.read_text(cache_file)

        t = self._request(url)

        if self.cache:
            cache_file = dm.get_query_cache_path(url)
            FileManager.write_text(cache_file, t)

        return t
コード例 #6
0
ファイル: web_data.py プロジェクト: konqueror1/forkdrop_suite
 def _check_captcha(self, r, url):
     if r.status_code != 403:
         print("got status code %d from query to %s" % (r.status_code, url))
         return
     if "captcha" not in r.text:
         print("Got 403 status from %s, but it doesn't seem to be a "
               "captcha issue (which sometimes occurs). "
               "this is unexpected what to do. If you can, please file "
               "an issue on the project github. Text of "
               "response: %s" % (url, r.text))
         return
     dm = DirectoryManager()
     cache_file = dm.get_query_cache_path(url)
     if "blockchainbdgpzk" in url:
         msg = BI_CAPTCHA_MSG % (red_str("ERROR:"), url,
                                 chill_green_str(cache_file))
     else:
         msg = CAPTCHA_MSG % (red_str("ERROR:"), url,
                              chill_green_str(cache_file))
     print(msg)
     sys.exit("*** could not fetch data at url - rejected")
コード例 #7
0
 def __init__(self):
     super().__init__()
     dm = DirectoryManager()
     f = dm.get_forkdrop_file()
     ff = FileManager.read_json_info(f)
     self.update(ff)
コード例 #8
0
class ElectrumQuery(object):
    def __init__(self, server, port, ssl=True, tails=True, cache=False):
        self.server = server
        self.port = port
        self.ssl = ssl
        self.tails = tails
        self.cache = cache
        self.dm = DirectoryManager()

    def _create_socket(self):
        s = (socks.create_connection(
            (self.server, self.port),
            proxy_type=socks.SOCKS5,
            proxy_addr="127.0.0.1",
            proxy_port=9050) if self.tails else socket.create_connection(
                (self.server, self.port)))
        self.socket = ssl.wrap_socket(s) if self.ssl else s
        print("opened connection to: %s" %
              chill_yellow_str("%s:%d" % (self.server, self.port)))

    def _destroy_socket(self):
        self.socket.close()
        print("closed connection to: %s" %
              chill_yellow_str("%s:%d" % (self.server, self.port)))

    def _query_id_str(self, msg):
        return "%s:%s/%s" % (self.server, self.port, msg)

    def _recv_line(self):
        # electrum terminates response with a newline
        data = b''
        while True:
            packet = self.socket.recv(RECV_MAX)
            #print("packet: %s" % packet)
            data += packet
            if int(packet[-1]) == 10:
                return data

    def query(self, method, params):
        params = [params] if type(params) is not list else params
        msg = json.dumps({
            "id": 0,
            "method": method,
            "params": params
        },
                         sort_keys=True)
        qid = self._query_id_str(msg)

        if ".onion" in self.server:
            print("Electrum fetch: %s" % chill_green_str(qid))
        else:
            print("Electrum fetch: %s" % chill_yellow_str(qid))

        if self.cache and self.dm.is_query_cached(qid):
            cache_file = self.dm.get_query_cache_path(qid)
            return FileManager.read_json_info(cache_file)

        self._create_socket()
        self.socket.send(msg.encode() + b'\n')
        msg = self._recv_line()
        response = json.loads(msg.decode())
        self._destroy_socket()
        if 'error' in response.keys():
            sys.exit("*** Error from Electrum server: %s" %
                     json.dumps(response, sort_keys=True))
        if self.cache:
            cache_file = self.dm.get_query_cache_path(qid)
            FileManager.write_text(cache_file, json.dumps(response))
        return response
コード例 #9
0
    def symlink(tgt_path, sym_path):
        dm = DirectoryManager()

        os.symlink(tgt_path, dm.get_tmp_symlink_path())
        os.rename(dm.get_tmp_symlink_path(), sym_path)
        print_chill_green("symlinked %s" % sym_path)