实现端口转发功能,经测试,ssh、http可以正常使用
This commit is contained in:
57
target.py
Normal file
57
target.py
Normal file
@@ -0,0 +1,57 @@
|
||||
|
||||
|
||||
import os
|
||||
import sys
|
||||
import json
|
||||
import socket
|
||||
|
||||
|
||||
import prot_codec as pc
|
||||
|
||||
|
||||
|
||||
# 定义服务器和客户端
|
||||
# device:
|
||||
# server
|
||||
# client
|
||||
# 定义操作类型
|
||||
# option:
|
||||
# connect
|
||||
# disconnect
|
||||
# data
|
||||
# login
|
||||
|
||||
|
||||
_tcp_server=None
|
||||
_tcp_client=None
|
||||
|
||||
|
||||
|
||||
class tcp_target(object):
|
||||
def __init__(self,tcp_handler:socket):
|
||||
self.handler=tcp_handler
|
||||
self.state="idle"
|
||||
def recv_handler(self,recv_data:bytearray):
|
||||
global _tcp_client
|
||||
global _tcp_server
|
||||
cmd,data=pc.decode(recv_data)
|
||||
print(cmd.decode('utf-8'))
|
||||
j=json.loads(cmd)
|
||||
if(j["device"]=="client"):
|
||||
if(j["option"]=="login"):
|
||||
if(_tcp_client is not None):
|
||||
_tcp_client.close()
|
||||
_tcp_client=self.handler
|
||||
else:
|
||||
if(_tcp_server is not None):
|
||||
_tcp_server.send(recv_data)
|
||||
if(j["device"]=="server"):
|
||||
if(j["option"]=="login"):
|
||||
if(_tcp_server is not None):
|
||||
_tcp_server.close()
|
||||
_tcp_server=self.handler
|
||||
else:
|
||||
if(_tcp_client is not None):
|
||||
_tcp_client.send(recv_data)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user