View difference between Paste ID: Nr4SKB8q and i4N7RETP
SHOW: | | - or go back to the newest paste.
1
local function init_server()
2
  rednet.open("back")
3
  rednet.host("123", "server")
4
  write("Server is "..rednet.lookup("123").."\n")
5
end
6
7
local function get_id_list()
8
  local file = fs.open("server/info", "r")
9
  local data = file.readAll()
10
  file.close()
11
  return textutils.unserialise(data)
12
end
13
14
local function check_field(id_list, id, field)
15
  for i=1,#id_list do
16
    if id==id_list[i][field] then
17
      return i
18
    end
19
  end
20
  return 0
21
end
22
23
local function check_id(id_list)
24
  local sender, message, protocol
25
  local offset
26
27
  sender, message, protocol = rednet.receive()
28
  write("Received Login\n")
29
  i = check_field(id_list, message, 1)
30
  if i~=0 then
31
    rednet.send(sender, "OK")
32
    sender, message = rednet.receive()
33
    write("Received Pass\n")
34
    if id_list[i][2]==message then
35
      write(id_list[i][1].." connected!\n")
36
      rednet.send(sender, "OK")
37
      message = ""
38
      while message ~= "Received" do
39
        sender, message = rednet.receive()
40
      end  
41
      rednet.send(sender, id_list[i][3])
42
      return true
43
    else
44
      write("Pass incorrect\n")
45
    end
46
  else
47
    write("Login incorrect\n")
48
  end
49
  rednet.send(sender, "KO")
50
  return false
51
end
52
53
local function loop(id_list)
54
  while true do
55
    if check_id(id_list) then
56
      break
57
    end
58
  end
59
end
60
61
local function end_server()
62
  rednet.close("back")
63
  rednet.unhost("123", "server")
64
  write("Stopped the server\n")
65
end
66
67
local function main()
68
  local id_list
69
  
70
  init_server()
71
  id_list = get_id_list()
72
  loop(id_list)
73
  end_server()  
74
end
75
76
main()