diff --git a/pinerepo.lua b/pinerepo.lua new file mode 100644 index 0000000..b79ec1a --- /dev/null +++ b/pinerepo.lua @@ -0,0 +1,58 @@ +peripheral.find("modem",rednet.open) +if not fs.exist("hostname") then + local file = fs.open("hostname","w") + term.write("\nhostname: ") + file.write(read()) + file.close() +end +local file = fs.open("hostname","r") +rednet.host("getpkg",file.readAll()) +file.close() +while true do + local id,msg = rednet.receive("getpkg") + local data = textutils.unserialiseJSON(http.get("https://pinestore.cc/api/projects").readAll()) + for c,i in ipairs(data.projects) do + if i.name == msg then + local blacklist = fs.list("/") + shell.run(i.install_command) + local function scan(dir) + local ls = fs.list(dir) + local out = {} + for _,i in ipairs(ls) do + if fs.isDir(fs.combine(dir,i)) then + out[i] = scan(fs.combine(dir,i)) + else + local file = fs.open(fs.combine(dir,i),"r") + out[i] = file.readAll() + file.close() + end + end + return out + end + for _,i in ipairs(fs.list("/")) do + local can = true + for _,v in ipairs(blacklist) do + if i == v then + can = false + break + end + end + if can then + fs.move("/"..i,"/pakage/"..i) + end + end + local out = {} + out.files = scan("/pakage") + out.name = i.name + out.aliases = {{i.name,i.target_file}} + local send = textutils.serialise(out) + fs.delete("/pakage") + rednet.send(id,send,"sendpkg") + break + end + if c == #data.projects then + print("package not found") + rednet.send(id,nil,"refusal") + end + end +end diff --git a/repo.lua b/repo.lua new file mode 100644 index 0000000..7c7d4e5 --- /dev/null +++ b/repo.lua @@ -0,0 +1,25 @@ +peripheral.find("modem",rednet.open) +if not fs.exist("hostname") then + local file = fs.open("hostname","w") + term.write("\nhostname: ") + file.write(read()) + file.close() +end +local file = fs.open("hostname","r") +rednet.host("getpkg",file.readAll()) +file.close() +if not fs.exists("/pakages") then + fs.makeDir("/pakages") +end +while true do + local id,msg = rednet.receive("getpkg") + if fs.exists("/pakages/"..msg..".pkg") then + local file = fs.open("/pakages/"..msg..".pkg","r") + local pak = file.readAll() + print(id,msg) + rednet.send(id,pak,"sendpkg") + file.close() + else + rednet.send(id,nil,"refusal") + end +end