Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- DNS Server Software - Version 1.0.0 --
- -- Part of Interweb; Created for ComputerCraft --
- -- Written by Amarite1 --
- -- http://t3kbau5.tk/ --
- -- Liscense: http://creativecommons.org/licenses/by-sa/3.0/ --
- --------------------------------------------------------------
- rednet.open('back') --change this to whatever side the internet cable/wireless modem is on. Copy/paste as many times as you need. Valid sides: back, front, top, bottom, left, right
- --previously in the api
- function resolve(domain)
- returnString = "ERROR"
- if fs.exists("records/" .. domain) then
- print("Domain exists")
- dnsRecord = fs.open("records/" .. domain, "r")
- recordType = dnsRecord.readLine()
- pointsTo = dnsRecord.readLine()
- if recordType == "A" then
- print(domain .. " has an A record!")
- elseif recordType == "C" then
- print("CNAME POINTS TO:" .. pointsTo)
- cnameRecord = fs.open("records/" .. pointsTo, "r")
- cnameType = cnameRecord.readLine()
- pointsTo = cnameRecord.readLine()
- cnameRecord.close()
- end
- dnsRecord.close()
- print(pointsTo)
- returnString = pointsTo
- else
- returnString = "Domain not registered"
- end
- print("Return String: " .. returnString)
- return returnString
- end
- function registerDomain(domain, recordType, pointsTo, password)
- if fs.exists("records/" .. domain) then
- return "Domain already registered"
- else
- if recordType ~= nil and pointsTo ~= nil then
- newRecord = fs.open("records/" .. domain, "w")
- newRecord.writeLine(recordType)
- newRecord.writeLine(pointsTo)
- newRecord.close()
- recordAdmin = fs.open("admin/" .. domain, "w")
- recordAdmin.writeLine(password)
- recordAdmin.close()
- return "Domain " .. domain .. " now has a/an " .. recordType .. " pointing to " .. pointsTo
- else
- return "Insufficient data provided"
- end
- end
- end
- --new functions, not in api
- function modifyDomain(domain, password, recordType, pointsTo)
- if fs.exists("records/" .. domain) then
- recordAdmin = fs.open("admin/" .. domain, "r")
- if recordAdmin.readLine() == password then
- recordAdmin.close()
- record = fs.open("records/" .. domain, "w")
- record.writeLine(recordType)
- record.writeLine(pointsTo)
- record.close()
- return "Modified"
- else
- return "Incorrect password"
- end
- else
- return "Domain does not exist"
- end
- end
- function deleteDomain(domain, password)
- if fs.exists("records/" .. domain) then
- recordAdmin = fs.open("admin/" .. domain, "r")
- if recordAdmin.readLine() == password then
- recordAdmin.close()
- sleep(0.1)
- print(fs.isReadOnly("records/" .. domain))
- fs.delete("records/" .. domain)
- fs.delete("admin/" .. domain)
- return "Deleted"
- else
- return "Incorrect password"
- end
- else
- return "Domain does not exist"
- end
- end
- --split string function
- function split(str, pat)
- local t = {}
- local fpat = "(.-)" .. pat
- local last_end = 1
- local s, e, cap = str:find(fpat, 1)
- while s do
- if s ~= 1 or cap ~= "" then
- table.insert(t,cap)
- end
- last_end = e+1
- s, e, cap = str:find(fpat, last_end)
- end
- if last_end <= #str then
- cap = str:sub(last_end)
- table.insert(t, cap)
- end
- return t
- end
- while true do
- sender, request, distance = rednet.receive(10)
- if request ~= nil then
- print(request)
- packetArray = {}
- packetArray = split(request, "<#>")
- end
- if request ~= nil and packetArray[1] == tostring(os.getComputerID()) then
- print("Message received")
- requestArray = split(packetArray[2], "+")
- print("Array created: " .. requestArray[1] .. " " .. requestArray[2])
- if requestArray[1] == "resolve" then
- print("Resolve " .. requestArray[2])
- resolveResult = resolve(requestArray[2])
- print("Resolve Result: " .. resolveResult)
- --rednet.send(sender, sender .. "<#>" .. resolveResult)
- sleep(0.1)
- rednet.send(sender, sender .. "<#>" .. resolveResult)
- elseif requestArray[1] == "register" then
- print("Register " .. requestArray[2] .. " " .. requestArray[3] .. " " .. requestArray[4])
- registerResult = registerDomain(requestArray[2], requestArray[3], requestArray[4], requestArray[5])
- print("Register Result: " .. registerResult)
- sleep(0.1)
- rednet.send(sender, sender .. "<#>" .. registerResult)
- elseif requestArray[1] == "modify" then
- result = modifyDomain(requestArray[2], requestArray[3], requestArray[4], requestArray[5])
- sleep(0.1)
- rednet.send(sender, sender .. "<#>" .. result)
- elseif requestArray[1] == "delete" then
- result = deleteDomain(requestArray[2], requestArray[3])
- sleep(0.1)
- rednet.send(sender, sender .. "<#>" .. result)
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment