import configparser import json import sys import comms import menus import auth import datetime config = configparser.ConfigParser() config.read(sys.argv[1]) userDb = config.get("Auth","userDb") msgDB = config.get("Main","msgDb") date_format_string = "%Y-%m-%d HH:MM:SS" def printProfile(conn, userId, node, lastMenu): comms.sendString(conn, "\u001B[2JProfile:\r\n") with open(userDb) as userdb: users = json.loads(userdb.read()) for user in users['users']: if user['id'] == userId: name = "Name: " + user["name"] description = "Description: " + user['description'] profile = name + "\r\n" + description + "\r\n" comms.sendString(conn, profile) comms.sendString(conn, "Press Enter to go back to the Menu... ") comms.getChar(conn) menus.printMenu(conn, lastMenu, node, userId) def editProfile(conn, userID, node, lastMenu): comms.sendString(conn, "\u001B[2JProfile:\r\n") with open(userDb) as userdb: users = json.loads(userdb.read()) for user in users['users']: if user['id'] == userID: name = "Name: " + user["name"] description = "Description: " + user['description'] profile = name + "\r\n" + description + "\r\n" comms.sendString(conn, profile) comms.sendString(conn, "What would you like to edit?\r\n") comms.sendString(conn, "D: Description\tP:Password\r\n? ") response = comms.getString(conn,2) if response.strip('\x00') == "D": description = auth.setProfile(conn) user['description'] = description with open(userDb,'w') as output: json.dump(users, output, indent=4) if response.strip('\x00') == "P": password = auth.setPassword(conn, user['salt']) user['password'] = password with open(userDb,'w') as output: json.dump(users, output, indent=4) menus.printMenu(conn, lastMenu, node, userID) def pubMessages(conn, userID, node, lastMenu): comms.sendString(conn, "\u001B[2JMessages:\r\n") with open(msgDB) as msgdb: messages = json.loads(msgdb.read()) for message in messages['messages']: msgListElement = str(message['id']) + "\t|\t" + message['date'] + "\t|\t" + message['author'] + "\t|\t" + message['subject'] + "\t\t\t" comms.sendString(conn,msgListElement+"\r\n") comms.sendString(conn, "\r\nSend the M and the message number (eg. M0) number to read a message.\r\nPress C to Write a Message \r\nSend B to go back to the Menu: ") response = comms.getString(conn,3) if response.strip('\x00') == "B": menus.printMenu(conn, lastMenu, node, userID) elif response.strip('\x00')[0] == "M": printMessage(conn, int(response.strip('\x00').replace('M',''))) elif response.strip('\x00') == "C": writeMessage(conn, userID) pubMessages(conn, userID, node, lastMenu) def printMessage(conn, messageNum): comms.sendString(conn, "\u001B[2JMessage:\r\n") with open(msgDB) as msgdb: messages = json.loads(msgdb.read()) for message in messages['messages']: if message['id'] == int(messageNum): comms.sendString(conn, "\r\nDate Published: " + message['date']) comms.sendString(conn, "\r\nSubject: " + message['subject']) comms.sendString(conn, "\r\nAuthor: " + message['author']) comms.sendString(conn, "\r\nMessage: " + message['body']) comms.sendString(conn, "\r\nPress any key to go back... ") comms.getString(conn,2) return def writeMessage(conn, userid): comms.sendString(conn, "\u001B[2JCompose Message:\r\n") with open(userDb) as userdb: users = json.load(userdb) for user in users['users']: if user['id'] == userid: username = user['name'] with open(msgDB) as msgdb: messages = json.load(msgdb) message = {} message["id"] = messages['messages'][-1]["id"] + 1 message['date'] = datetime.datetime.now().strftime(date_format_string) comms.sendString(conn,"Subject: ") message['subject'] = comms.getString(conn, 150) message['author'] = username comms.sendString(conn,"Message Body: ") message['body'] = comms.getString(conn, 1500) messages['messages'].append(message) with open(msgDB,'w') as output: json.dump(messages, output, indent=4) comms.sendString(conn, "Message Published!\r\nPress any key to go back... ") comms.getChar(conn)