static void Login(string keyIn) { Draw.Prompt("Authenticating. . ."); AuthenticationResult newUser; try { newUser = controller.Authenticate(keyIn); } catch (Exception ex) { Log.Exception(ex); if (ex.Message.Contains("403 (Forbidden)") || ex.Message.Contains("Invalid key")) { Draw.Prompt("Invalid key"); } else { Connect(); } return; } if (!newUser.AccessGranted) { Draw.Prompt("Expired membership"); return; } inputCleared = true; key = keyIn; user = newUser; if (cabinetMode) { EnterCabinetMenu(); } else { expiration = DateTime.Now + new TimeSpan(0, 0, config.Timeout); Draw.Status(config.Timeout, false); Draw.User(user); ReaderHardware.Login(); } }
static void EnterServiceMenu() { UpdateStatus(); var draw = true; var trigger = false; while (true) { if (draw) { Draw.MenuOverride = true; Draw.Service($@"Version: {status.Version} Uptime: {status.Uptime} Hardware: {status.Hardware} IP Address: {status.Ip} Reader Id: {status.Id} Server: {status.Server} Controller: {status.Controller} Snapshot: {status.LocalSnapshot} [1] Set Reader Id [2] Set Server [3] Test Cabinet [4] Toggle Trigger [5] Update Reader [6] Reboot Reader [7] Shutdown Reader [8] Exit App [9] Download Snapshot"); draw = false; } var input = ReaderHardware.Read(); if (input.Length != 1) { continue; } switch (input[0]) { case 'A': Draw.MenuOverride = false; Draw.Loading("Reconnecting"); return; case '1': EnterReaderId(); break; case '2': EnterServer(); break; case '3': EnterCabinetMenu(); break; case '4': if (trigger) { trigger = false; ReaderHardware.Logout(); } else { trigger = true; ReaderHardware.Login(); } break; case '5': switch (ReaderHardware.Platform) { case HardwareType.OrangePi: Process.Start("bash", "-c \"cd /tmp; rm -f installOPi.sh; wget https://raw.githubusercontent.com/DanDude0/MilwaukeeMakerspacePiFobReader/master/installOPi.sh; chmod +x installOPi.sh; sudo ./installOPi.sh\""); break; case HardwareType.RaspberryPi: Process.Start("bash", "-c \"cd /tmp; rm -f installRPi.sh; wget https://raw.githubusercontent.com/DanDude0/MilwaukeeMakerspacePiFobReader/master/installRPi.sh; chmod +x installRPi.sh; sudo ./installRPi.sh\""); break; } Process.Start("systemctl", "stop MmsPiW26Interface"); Process.Start("systemctl", "stop MmsPiFobReader"); Environment.Exit(0); break; case '6': Process.Start("reboot"); Process.Start("systemctl", "stop MmsPiW26Interface"); Process.Start("systemctl", "stop MmsPiFobReader"); Environment.Exit(0); break; case '7': Process.Start("shutdown", "-hP 0"); Process.Start("systemctl", "stop MmsPiW26Interface"); Process.Start("systemctl", "stop MmsPiFobReader"); Environment.Exit(0); break; case '8': Process.Start("systemctl", "stop MmsPiFobReader"); Environment.Exit(0); break; case '9': Draw.Loading("Downloading Database Snapshot"); //TODO: If we can talk to the server, push attempt history back up BEFORE we overwrite it. try { server.DownloadSnapshot(); Draw.Service("Snapshot updated"); Thread.Sleep(2000); } catch { Draw.Service("Could not download snapshot"); Thread.Sleep(2000); } UpdateStatus(); break; } draw = true; } }