Compare commits
3
Commits
main
..
415c16b4ef
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
415c16b4ef | ||
|
|
0dffc6bdd8 | ||
|
|
5d3d6a0247 |
@@ -1,6 +1,5 @@
|
|||||||
import argparse
|
import argparse
|
||||||
import asyncio
|
import asyncio
|
||||||
from concurrent.futures import ThreadPoolExecutor as Executor
|
|
||||||
|
|
||||||
from shadowssh.app import Application
|
from shadowssh.app import Application
|
||||||
|
|
||||||
@@ -13,19 +12,13 @@ def parse_args():
|
|||||||
parser.add_argument("--host-service", type=str, required=False, default="127.0.0.1")
|
parser.add_argument("--host-service", type=str, required=False, default="127.0.0.1")
|
||||||
parser.add_argument("--port-service", type=int, required=False, default=4433)
|
parser.add_argument("--port-service", type=int, required=False, default=4433)
|
||||||
parser.add_argument("--host-ssh", type=str, required=False, default="127.0.0.1")
|
parser.add_argument("--host-ssh", type=str, required=False, default="127.0.0.1")
|
||||||
parser.add_argument("--port-ssh", type=int, required=False, default=222)
|
parser.add_argument("--port-ssh", type=int, required=False, default=22)
|
||||||
return parser.parse_args()
|
return parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
def serve():
|
def serve():
|
||||||
args = parse_args()
|
args = parse_args()
|
||||||
app = Application()
|
app = Application()
|
||||||
|
|
||||||
executor = Executor(max_workers=500)
|
|
||||||
|
|
||||||
loop = asyncio.get_event_loop()
|
|
||||||
loop.set_default_executor(executor)
|
|
||||||
|
|
||||||
asyncio.run(
|
asyncio.run(
|
||||||
app.serve(
|
app.serve(
|
||||||
args.host,
|
args.host,
|
||||||
|
|||||||
@@ -4,8 +4,6 @@ from app.app import Application as BaseApplication
|
|||||||
|
|
||||||
from shadowssh import log
|
from shadowssh import log
|
||||||
|
|
||||||
BUFFER_SIZE = 4096
|
|
||||||
|
|
||||||
|
|
||||||
class Application(BaseApplication):
|
class Application(BaseApplication):
|
||||||
|
|
||||||
@@ -25,16 +23,16 @@ class Application(BaseApplication):
|
|||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
async def connect(self, host, port):
|
async def connect(self, host, port):
|
||||||
log.info(f"Forwarding to {host}:{port}.")
|
log.info(f"Connected to {host}:{port}.")
|
||||||
reader, writer = await asyncio.open_connection(host, port)
|
reader, writer = await asyncio.open_connection(host, port)
|
||||||
return reader, writer
|
return reader, writer
|
||||||
|
|
||||||
async def stream(self, reader, writer, port):
|
async def stream(self, reader, writer, port):
|
||||||
while True:
|
while True:
|
||||||
chunk = await reader.read(BUFFER_SIZE)
|
chunk = await reader.read(4096)
|
||||||
if not chunk:
|
if not chunk:
|
||||||
writer.close()
|
writer.close()
|
||||||
log.debug("Forward connection closed.")
|
log.info("Forward connection closed.")
|
||||||
return
|
return
|
||||||
writer.write(chunk)
|
writer.write(chunk)
|
||||||
await writer.drain()
|
await writer.drain()
|
||||||
|
|||||||
Reference in New Issue
Block a user