From 63ce54f133be954defa9e9ed6004df512b541c33 Mon Sep 17 00:00:00 2001 From: Viktor Villainov Date: Mon, 31 Dec 2018 05:36:15 -0500 Subject: [PATCH] Remove useless sync api --- docs/examples/http_server.py | 4 +- docs/examples/sync/resolve.py | 19 ---------- docs/examples/sync/wget.py | 41 -------------------- i2plib/sam.py | 70 ----------------------------------- i2plib/utils.py | 9 ----- 5 files changed, 2 insertions(+), 141 deletions(-) delete mode 100644 docs/examples/sync/resolve.py delete mode 100644 docs/examples/sync/wget.py diff --git a/docs/examples/http_server.py b/docs/examples/http_server.py index 6127193..c8db82b 100644 --- a/docs/examples/http_server.py +++ b/docs/examples/http_server.py @@ -20,6 +20,7 @@ def serve_directory(server_address, path): def main(args): sam_address = i2plib.get_sam_address() server_address = ('127.0.0.1', i2plib.utils.get_free_port()) + loop = asyncio.get_event_loop() if not os.path.isdir(args.web_directory): raise OSError("No such directory {}".format(args.web_directory)) @@ -27,7 +28,7 @@ def main(args): if args.key: dest = i2plib.Destination(path=args.key, has_private_key=True) else: - dest = i2plib.utils.get_new_destination(sam_address=sam_address) + dest = loop.run_until_complete(i2plib.new_destination(sam_address=sam_address, loop=loop)) logging.info("Listening: {}.b32.i2p".format(dest.base32)) logging.info("Server: {}:{}".format(server_address[0], server_address[1])) @@ -38,7 +39,6 @@ def main(args): http_server_thread.daemon = True http_server_thread.start() - loop = asyncio.get_event_loop() tunnel = i2plib.ServerTunnel(server_address, loop=loop, destination=dest, sam_address=sam_address) diff --git a/docs/examples/sync/resolve.py b/docs/examples/sync/resolve.py deleted file mode 100644 index c9c10dd..0000000 --- a/docs/examples/sync/resolve.py +++ /dev/null @@ -1,19 +0,0 @@ -import sys - -import i2plib -from i2plib.sam import lookup, get_socket - -if __name__ == "__main__": - if len(sys.argv) == 2: - domain = sys.argv[1] - try: - r = lookup(get_socket(), domain) - print("Domain: \n{}\n".format(domain)) - print("Full destination: \n{}\n".format(r.base64)) - print("B32 address: \n{}.b32.i2p\n".format(r.base32)) - except i2plib.InvalidKey: - print("Domain not found") - else: - print("Usage: resolve.py [.i2p domain]") - exit() - diff --git a/docs/examples/sync/wget.py b/docs/examples/sync/wget.py deleted file mode 100644 index 2b1d32d..0000000 --- a/docs/examples/sync/wget.py +++ /dev/null @@ -1,41 +0,0 @@ -import sys -from urllib.parse import urlparse - -import i2plib -from i2plib.sam import generate_session_id, lookup, get_socket, StreamSession - -def http_get(url, sam_address): - url = urlparse(url) - s_id = generate_session_id() - ss = StreamSession(session_id=s_id, sam_address=sam_address) - - dest = lookup(get_socket(sam_address=sam_address), url.netloc) - - # connect to remote server, returns socket to use - client_sock = ss.connect(dest.base64) - client_sock.send("GET {} HTTP/1.0\nHost: {}\r\n\r\n".format( - url.path, url.netloc).encode()) - - buflen, resp = 4096, b"" - while 1: - data = client_sock.recv(buflen) - if len(data) > 0: - resp += data - else: - break - - resp = resp.decode() - try: - return resp.split("\r\n\r\n", 1)[1] - except IndexError: - return resp - -if __name__ == "__main__": - if len(sys.argv) == 2: - url = sys.argv[1] if sys.argv[1].startswith("http://") else "//"+sys.argv[1] - else: - url = "http://irkvgdnlc6tidoqomre4qr7q4w4qcjfyvbovatgyolk6d4uvcyha.b32.i2p/uploads/BSD" - - r = http_get(url, i2plib.get_sam_address()) - - print(r) diff --git a/i2plib/sam.py b/i2plib/sam.py index 562cc34..3a09076 100644 --- a/i2plib/sam.py +++ b/i2plib/sam.py @@ -1,4 +1,3 @@ -import socket from base64 import b64decode, b64encode, b32encode from hashlib import sha256 import struct @@ -6,7 +5,6 @@ import random import string import re -from .exceptions import SAM_EXCEPTIONS I2P_B64_CHARS = "-~" @@ -51,26 +49,6 @@ class Message(object): def __repr__(self): return self._reply_string -def get_socket(sam_address=None): - """Return new SAM socket""" - sam_address = sam_address or DEFAULT_ADDRESS - sam_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sam_socket.connect(sam_address) - sam_socket.send(hello(DEFAULT_MIN_VER, DEFAULT_MAX_VER)) - a = get_response(sam_socket) - if a.ok: - return sam_socket - else: - raise SAM_EXCEPTIONS[a["RESULT"]]() - -def lookup(sam_socket, name): - """Lookup destination by name""" - sam_socket.send(naming_lookup(name)) - a = get_response(sam_socket) - if a.ok: - return Destination(a["VALUE"]) - else: - raise SAM_EXCEPTIONS[a["RESULT"]]() def generate_session_id(length=6): """Generate random session id""" @@ -78,10 +56,6 @@ def generate_session_id(length=6): sid = [rand.choice(string.ascii_letters) for _ in range(length)] return "i2plib-" + "".join(sid) -def get_response(sam_socket): - """Read message from SAM API""" - return Message(sam_socket.recv(SAM_BUFSIZE)) - # SAM request messages @@ -180,47 +154,3 @@ class PrivateKey(object): #: Base64 encoded private key self.base64 = data if type(data) == str else i2p_b64encode(data) -class StreamSession(object): - - def __init__(self, sam_address=DEFAULT_ADDRESS, \ - session_id=None, destination=TRANSIENT_DESTINATION, options="", \ - min_ver=DEFAULT_MIN_VER, max_ver=DEFAULT_MAX_VER): - self.sam_address = sam_address - self.min_ver = min_ver - self.max_ver = max_ver - self.session_id = session_id or generate_session_id() - self._session_socket = get_socket(self.sam_address) - self._session_socket.send( - session_create("STREAM", self.session_id, destination, options)) - a = get_response(self._session_socket) - - if a.ok: - self.destination = a["DESTINATION"] - else: - raise SAM_EXCEPTIONS[a["RESULT"]]() - - def _get_socket(self): - """New socket for this session""" - return get_socket(self.sam_address) - - def connect(self, dest): - """Return new I2P stream to destination""" - sam_socket = self._get_socket() - sam_socket.send(stream_connect(self.session_id, dest, silent="false")) - a = get_response(sam_socket) - if a.ok: - return sam_socket - else: - raise SAM_EXCEPTIONS[a["RESULT"]]() - - def accept(self): - """Return new accepting socket""" - sam_socket = self._get_socket() - sam_socket.send(stream_accept(self.session_id, silent="false")) - return sam_socket - - def forward(self, session_id, port, options=""): - sam_socket = self._get_socket() - sam_socket.send(stream_forward(self.session_id, port, options)) - return sam_socket - diff --git a/i2plib/utils.py b/i2plib/utils.py index 6ddd04f..a5f86f8 100644 --- a/i2plib/utils.py +++ b/i2plib/utils.py @@ -31,12 +31,3 @@ def get_sam_address(): value = os.getenv("I2P_SAM_ADDRESS") return address_from_string(value) if value else i2plib.sam.DEFAULT_ADDRESS -def get_new_destination(sam_address=i2plib.sam.DEFAULT_ADDRESS, - sig_type=i2plib.sam.Destination.default_sig_type): - """Generates new I2P destination of a chosen signature type""" - sam_socket = i2plib.sam.get_socket(sam_address) - sam_socket.send(i2plib.sam.dest_generate(sig_type)) - a = i2plib.sam.get_response(sam_socket) - sam_socket.close() - return i2plib.sam.Destination(a['PRIV'], has_private_key=True) -