View difference between Paste ID: EifKhaSW and P0bTTph7
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