iteration
This commit is contained in:
		
							
								
								
									
										65
									
								
								name_sever/lns.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								name_sever/lns.lua
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,65 @@
 | 
			
		||||
 | 
			
		||||
modem_location = "back"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
rednet.host("lns", "default")
 | 
			
		||||
rednet.open(modem_location)
 | 
			
		||||
 | 
			
		||||
local data = {}
 | 
			
		||||
 | 
			
		||||
function save_data()
 | 
			
		||||
    db = fs.open("lns.db", "w")
 | 
			
		||||
    db.write(textutils.serialize(data))
 | 
			
		||||
    db.close()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function load_data()
 | 
			
		||||
    if fs.exists("lns.db") then
 | 
			
		||||
        db = fs.open("lns.db", "r")
 | 
			
		||||
        db_contents = db.readAll()
 | 
			
		||||
        db.close()
 | 
			
		||||
 | 
			
		||||
        data = textutils.unserialize(db_contents)
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function split (inputstr, sep)
 | 
			
		||||
    if sep == nil then
 | 
			
		||||
       sep = "%s"
 | 
			
		||||
    end
 | 
			
		||||
    local t={}
 | 
			
		||||
    for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
 | 
			
		||||
       table.insert(t, str)
 | 
			
		||||
    end
 | 
			
		||||
    return t
 | 
			
		||||
 end
 | 
			
		||||
 | 
			
		||||
load_data()
 | 
			
		||||
 | 
			
		||||
while true do
 | 
			
		||||
    client_id, msg = rednet.receive()
 | 
			
		||||
 | 
			
		||||
    -- split string msg into action and hostname with ':' as a delimiter using string.unpack
 | 
			
		||||
    local action, hostname = split(msg, ":")
 | 
			
		||||
 | 
			
		||||
    if action == "lookup" then
 | 
			
		||||
 | 
			
		||||
        -- check if hostname in data
 | 
			
		||||
        if data[hostname] == nil then
 | 
			
		||||
            rednet.send(client_id, "not found")
 | 
			
		||||
        else
 | 
			
		||||
            rednet.send(client_id, data[hostname])
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
    
 | 
			
		||||
    if action == "reload" then
 | 
			
		||||
        load_data()
 | 
			
		||||
        rednet.send(client_id, "ok")
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    if action == "register" then
 | 
			
		||||
        data[hostname] = client_id
 | 
			
		||||
        save_data()
 | 
			
		||||
        rednet.send(client_id, "ok")
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										34
									
								
								name_sever/register_lns.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								name_sever/register_lns.lua
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
 | 
			
		||||
io.write("Enter the hostname: ")
 | 
			
		||||
hostname = io.read()
 | 
			
		||||
 | 
			
		||||
io.write("Enter the modem location: ")
 | 
			
		||||
modem_location = io.read()
 | 
			
		||||
 | 
			
		||||
io.write("Use default LNS Server? (y/n): ")
 | 
			
		||||
use_default = io.read()
 | 
			
		||||
 | 
			
		||||
lns_server = "default"
 | 
			
		||||
if use_default == "n" then
 | 
			
		||||
    io.write("Enter the LNS Server Rednet Hostname: ")
 | 
			
		||||
    lns_server = io.read()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
rednet.open(modem_location)
 | 
			
		||||
receiverID = rednet.lookup("lns", lns_server)
 | 
			
		||||
current_time = os.time()
 | 
			
		||||
rednet.send(receiverID, "register:" .. hostname)
 | 
			
		||||
 | 
			
		||||
while true do
 | 
			
		||||
    id, msg = rednet.receive()
 | 
			
		||||
    if msg == "ok" then
 | 
			
		||||
        print("Registered with LNS Server Successfully!")
 | 
			
		||||
        break
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    -- timeout after 5 seconds
 | 
			
		||||
    if os.time() - current_time > 5 then
 | 
			
		||||
        print("Failed to register with LNS Server! Timeout!")
 | 
			
		||||
        break
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
		Reference in New Issue
	
	Block a user