Parse aguments

This commit is contained in:
Juhani Krekelä 2020-01-05 14:29:42 +02:00
parent cc8c546054
commit 7c50328c4f
1 changed files with 37 additions and 11 deletions

View File

@ -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()