Parse aguments
This commit is contained in:
parent
cc8c546054
commit
7c50328c4f
48
kishib.py
48
kishib.py
|
@ -1,12 +1,14 @@
|
||||||
import base64
|
import base64
|
||||||
import binascii
|
import binascii
|
||||||
|
import getopt
|
||||||
import hashlib
|
import hashlib
|
||||||
|
import os.path
|
||||||
import secrets
|
import secrets
|
||||||
import socket
|
import socket
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
def error(*args):
|
def error(*args):
|
||||||
print('%s: Error:' % sys.argv[0], *args, file = sys.stderr)
|
print('%s: Error:' % os.path.basename(sys.argv[0]), *args, file = sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
def enc_len(length):
|
def enc_len(length):
|
||||||
|
@ -195,30 +197,54 @@ def verify(client_pubkey, server_pubkey):
|
||||||
else:
|
else:
|
||||||
error('Could not transfer the keys')
|
error('Could not transfer the keys')
|
||||||
|
|
||||||
|
def usage(part = None):
|
||||||
|
if part == 'client' or part is None:
|
||||||
|
print('Usage: %s client [-p <port>] <host>' % os.path.basename(sys.argv[0]), file = sys.stderr)
|
||||||
|
if part =='server' or part is None:
|
||||||
|
print('Usage: %s server [-p <port>]' % os.path.basename(sys.argv[0]), file = sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
# TODO: Actual agument parsing
|
|
||||||
# TODO: Read pubkeys from files
|
# TODO: Read pubkeys from files
|
||||||
# TODO: Write pubkeys to files
|
# TODO: Write pubkeys to files
|
||||||
if sys.argv[1] == 'server':
|
if len(sys.argv) < 2:
|
||||||
port = int(sys.argv[2])
|
usage()
|
||||||
server_pubkey = b'server\n'
|
|
||||||
|
command = sys.argv[1]
|
||||||
|
opts, fixed = getopt.gnu_getopt(sys.argv[2:], 'p:')
|
||||||
|
|
||||||
|
# TODO: Select an actual port
|
||||||
|
port = 1234
|
||||||
|
for switch, arg in opts:
|
||||||
|
if switch == '-p':
|
||||||
|
try:
|
||||||
|
port = int(arg)
|
||||||
|
except ValueError:
|
||||||
|
error('Port needs to be a number')
|
||||||
|
|
||||||
|
if command == 'server':
|
||||||
|
if len(fixed) != 0:
|
||||||
|
usage('server')
|
||||||
|
|
||||||
|
server_pubkey = b'server'
|
||||||
|
|
||||||
client_pubkey = server(server_pubkey, port)
|
client_pubkey = server(server_pubkey, port)
|
||||||
|
|
||||||
verify(client_pubkey, server_pubkey)
|
verify(client_pubkey, server_pubkey)
|
||||||
|
|
||||||
elif sys.argv[1] == 'client':
|
elif command == 'client':
|
||||||
host = sys.argv[2]
|
if len(fixed) != 1:
|
||||||
port = int(sys.argv[3])
|
usage('client')
|
||||||
client_pubkey = b'client\n'
|
|
||||||
|
host, = fixed
|
||||||
|
client_pubkey = b'client'
|
||||||
|
|
||||||
server_pubkey = client(client_pubkey, host, port)
|
server_pubkey = client(client_pubkey, host, port)
|
||||||
|
|
||||||
verify(client_pubkey, server_pubkey)
|
verify(client_pubkey, server_pubkey)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
print('Usage: %s server PORT')
|
usage()
|
||||||
print('Usage: %s client HOST PORT')
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
|
Loading…
Reference in New Issue