import socket
import select
import sys
import datetime
start_time = datetime.datetime.strptime(str(datetime.datetime.now().date()) + '7:30','%Y-%m-%d%H:%M')
end_time = datetime.datetime.strptime(str(datetime.datetime.now().date()) + '23:00','%Y-%m-%d%H:%M')
now_time = datetime.datetime.now()
if now_time >= start_time and now_time <= end_time:
to_addr = ('192.168.43.189', 6000)
class Proxy:
def __init__(self, addr):
self.proxy = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.proxy.bind(addr)
self.proxy.listen(10)
self.inputs = [self.proxy]
self.route = {}
def proxy_serve(self):
print('--------------- FTP 代理监听开始 ---------------')
while True:
readable, _, _ = select.select(self.inputs, [], [])
for self.sock in readable:
if self.sock == self.proxy:
self.connect_on()
else:
data = self.sock.recv(100000)
if not data:
self.quit_on()
else:
self.route[self.sock].send(data)
def connect_on(self):
client, addr = self.proxy.accept()
print('--客户端与服务端连接成功--')
forward = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
forward.connect(to_addr)
self.inputs += [client, forward]
self.route[client] = forward
self.route[forward] = client
def quit_on(self):
for s in self.sock, self.route[self.sock]:
self.inputs.remove(s)
del self.route[s]
s.close()
if __name__ == '__main__':
try:
Proxy(('192.168.43.197',4500)).proxy_serve()
except KeyboardInterrupt:
sys.exit(1)
else:
print("您好,FTP 每天的连接时间为上午7:30 - 23:00")