jQueue Client Server Queueing
The purpose is to create a Queue managed by a professor or student running office hours.
Users can create a password and sign in, alert the server when they need help, and their request is added into the queue. The professor can then view the queue, assist the student, and when finished serve them off the queue. If this is their first time being helped in that session, their username is written to a file for logging purposes.
This project is made of two main programs, client.py and jServer.py.
jServer hosts a server listening for TCP connections from clients. It maintains a file called users.txt that stores user info in the format username hashedPassword
It handles checking if a connected user is new or returning, password management, adding help requests to the queue, is able to serve off which would add the user's name to the logfile or remove which would not (in case the entry was from offsite or somehow malicious).
P - Prints the queue S - Serves R - Removes Q - Shuts down the server
The client's username is read from the linux os, it then checks it against the server's username "database" and if its new, prompts to make a password, otherwise prompts for existing password. User can submit a help request and can view the current queue to see their place in line.
Beta v 0.21
Outstanding Issues: -User connections are handled in seperate threads thus the myQueue class may need locks. Minimal testing thusfar has not indicated as such. -Change Server Keyboard thread to make changes to the Queue through a connection instead of directly accessing the data structure. This could help prevent some access issues which may arise due to threading. -File Authentication: In order to assure modified versions of the client are not connecting to the server, I plan to take two precautions. First, assure that the program running is client.py (based on sys.argv[0]). Second, read the client.py file (on the client side), hash the contents and compare it to the hashed contents of client.py on the server side.