1
0
Fork 0

Add class Config

This commit is contained in:
Alex Kotov 2020-04-17 20:24:40 +05:00
parent c91299ae3b
commit 7d0195eadd
Signed by: kotovalexarian
GPG Key ID: 553C0EBBEB5D5F08
1 changed files with 30 additions and 13 deletions

43
main.py
View File

@ -7,6 +7,24 @@ import ipaddress
import json import json
import socket import socket
class Config:
def __init__(self, data):
if data['mode'] == 'server':
self.is_server = True
elif data['mode'] == 'client':
self.is_server = False
else:
raise RuntimeError('invalid mode "%s"' % data['mode'])
self.address = data['address']
self.port = data['port']
self.iface_name = data['iface_name']
self.iface_addr = data['iface_addr']
self.iface_dstaddr = data['iface_dstaddr']
self.iface_netmask = data['iface_netmask']
self.iface_mtu = data['iface_mtu']
class IpPacket: class IpPacket:
def __init__(self, header, body): def __init__(self, header, body):
self.header = header self.header = header
@ -35,27 +53,22 @@ def main():
config_filename = sys.argv[1] config_filename = sys.argv[1]
with open(config_filename) as config_file: with open(config_filename) as config_file:
config = json.load(config_file) config = Config(json.load(config_file))
tun_iface = pytun.TunTapDevice() tun_iface = pytun.TunTapDevice()
print(tun_iface.name) print(tun_iface.name)
tun_iface.addr = config['iface_addr'] tun_iface.addr = config.iface_addr
tun_iface.dstaddr = config['iface_dstaddr'] tun_iface.dstaddr = config.iface_dstaddr
tun_iface.netmask = config['iface_netmask'] tun_iface.netmask = config.iface_netmask
tun_iface.mtu = config['iface_mtu'] tun_iface.mtu = config.iface_mtu
tun_iface.up() tun_iface.up()
addr_and_port = (config['address'], config['port']) addr_and_port = (config.address, config.port)
if config['mode'] == 'client': if config.is_server:
conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print('connecting to %s, port %s' % addr_and_port)
conn.connect(addr_and_port)
print('connected!')
elif config['mode'] == 'server':
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print('binding to %s, port %s' % addr_and_port) print('binding to %s, port %s' % addr_and_port)
sock.bind(addr_and_port) sock.bind(addr_and_port)
@ -63,8 +76,12 @@ def main():
print('waiting for incoming connection') print('waiting for incoming connection')
conn, client_addr = sock.accept() conn, client_addr = sock.accept()
print('accepted incoming connection from %s' % client_addr[0]) print('accepted incoming connection from %s' % client_addr[0])
else: else:
raise RuntimeError('invalid mode "%s"' % config['mode']) conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print('connecting to %s, port %s' % addr_and_port)
conn.connect(addr_and_port)
print('connected!')
while True: while True:
buf = tun_iface.read(tun_iface.mtu) buf = tun_iface.read(tun_iface.mtu)