SHOW:
|
|
- or go back to the newest paste.
| 1 | local users = {}
| |
| 2 | ||
| 3 | local function displayStartupAnimation() | |
| 4 | local width, height = term.getSize() | |
| 5 | for i = 1, 30 do | |
| 6 | - | for line in file.readLine() do |
| 6 | + | term.clear() |
| 7 | term.setCursorPos((width - #("Daedalus OS")) / 2, height / 2)
| |
| 8 | - | users[username] = password |
| 8 | + | write("Daedalus OS")
|
| 9 | sleep(0.05) | |
| 10 | end | |
| 11 | term.clear() | |
| 12 | term.setCursorPos((width - #("Computer ID: " .. os.getComputerID())) / 2, height / 2 + 1)
| |
| 13 | print("Computer ID: " .. os.getComputerID())
| |
| 14 | sleep(2) | |
| 15 | end | |
| 16 | ||
| 17 | local function loadUsers() | |
| 18 | local file = fs.open("users.txt", "r")
| |
| 19 | if file then | |
| 20 | local line = file.readLine() | |
| 21 | while line do | |
| 22 | local username, password = line:match("([^:]+):([^:]+)")
| |
| 23 | if username and password then | |
| 24 | users[username] = password | |
| 25 | end | |
| 26 | line = file.readLine() | |
| 27 | end | |
| 28 | file.close() | |
| 29 | else | |
| 30 | error("Benutzerdatei nicht gefunden.")
| |
| 31 | end | |
| 32 | end | |
| 33 | ||
| 34 | local function authenticate(username, password) | |
| 35 | return users[username] and users[username] == password | |
| 36 | end | |
| 37 | ||
| 38 | local function getModemSide() | |
| 39 | local file = fs.open("modemSide.txt", "r")
| |
| 40 | if file then | |
| 41 | local side = file.readLine() | |
| 42 | file.close() | |
| 43 | return side | |
| 44 | else | |
| 45 | return nil | |
| 46 | end | |
| 47 | end | |
| 48 | ||
| 49 | local function setModemSide(side) | |
| 50 | local file = fs.open("modemSide.txt", "w")
| |
| 51 | file.writeLine(side) | |
| 52 | file.close() | |
| 53 | end | |
| 54 | ||
| 55 | local function askForModemSide() | |
| 56 | print("Bitte wähle die Seite des Modems: ")
| |
| 57 | local sides = {"left", "right", "top", "bottom", "front", "back"}
| |
| 58 | for i, side in ipairs(sides) do | |
| 59 | print(i .. ". " .. side) | |
| 60 | end | |
| 61 | local choice = read() | |
| 62 | return sides[tonumber(choice)] | |
| 63 | end | |
| 64 | ||
| 65 | local function startAuthServer(modemSide) | |
| 66 | - | textutils.slowPrint("Daedalus OS")
|
| 66 | + | |
| 67 | - | sleep(2) |
| 67 | + | |
| 68 | if not rednet.isOpen(modemSide) then | |
| 69 | rednet.open(modemSide) | |
| 70 | end | |
| 71 | ||
| 72 | print("Auth-Server läuft auf der Seite: " .. modemSide)
| |
| 73 | while true do | |
| 74 | local senderId, message, protocol = rednet.receive() | |
| 75 | local username, password = string.match(message, "([^:]+):([^:]+)") | |
| 76 | if authenticate(username, password) then | |
| 77 | rednet.send(senderId, "SUCCESS", protocol) | |
| 78 | else | |
| 79 | rednet.send(senderId, "FAILURE", protocol) | |
| 80 | end | |
| 81 | end | |
| 82 | end | |
| 83 | ||
| 84 | displayStartupAnimation() | |
| 85 | ||
| 86 | local modemSide = getModemSide() | |
| 87 | ||
| 88 | if not modemSide then | |
| 89 | modemSide = askForModemSide() | |
| 90 | setModemSide(modemSide) | |
| 91 | end | |
| 92 | ||
| 93 | startAuthServer(modemSide) | |
| 94 |