Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local found = fs.exists("pw.db")
- if found == false then
- local file = fs.open("pw.db","w")
- file.writeLine("// pw database")
- file.close()
- end
- local found = fs.exists("mail.db")
- if found == false then
- local file = fs.open("mail.db","w")
- file.writeLine("// mail database")
- file.close()
- end
- --config--
- local channel = 210
- modem = peripheral.wrap("back")
- --vars--
- local power = true
- local sendBack = 1
- -- func split--
- function split(pString,pPattern)
- local Table = {}
- local fpat = "(.-)"..pPattern
- local last_end = 1
- local s,e,cap = pString:find(fpat,1)
- while s do
- if s ~= 1 or cap ~= "" then
- table.insert(Table,cap)
- end
- last_end = e+1
- s,e,cap = pString:find(fpat,last_end)
- end
- if last_end <= #pString then
- cap = pString:sub(last_end)
- table.insert(Table,cap)
- end
- return Table
- end
- --decode--
- function decode(msg)
- if msg == "shutdown" then
- --shell.run("shutdown")
- else
- data = split(msg,"#")
- if data[1] == "reg" then
- local file = fs.open("pw.db","a")
- file.writeLine(data[2])
- file.close()
- sleep(2)
- modem.transmit(sendBack,channel,"Register OK")
- elseif data[1] == "log" then
- file = fs.open("pw.db","r")
- fileDataX = {}
- local line = file.readLine()
- repeat
- table.insert(fileDataX,line)
- line = file.readLine()
- until line == nil
- file.close()
- local out = "not found"
- for iu=1,#fileDataX do
- dataX = fileDataX[iu]
- if data[2] == dataX then
- out = "ok"
- end
- end
- sleep(2)
- print(out)
- modem.transmit(sendBack,channel,out)
- elseif data[1] == "ask" then
- local mail_out = ""
- file = fs.open("mail.db","r")
- fileDataX = {}
- local line = file.readLine()
- repeat
- table.insert(fileDataX,line)
- line = file.readLine()
- until line == nil
- file.close()
- for iu=1,#fileDataX do
- dataX = fileDataX[iu]
- dataB = split(dataX,"#")
- if dataB[1] == data[2] then
- mail_out = mail_out..dataB[2].."#"
- end
- end
- print(mail_out)
- sleep(2)
- modem.transmit(sendBack,channel,mail_out)
- elseif data[1] == "delete" then
- file = fs.open("mail.db","r")
- local fileDataX = {}
- local line = file.readLine()
- repeat
- table.insert(fileDataX,line)
- line = file.readLine()
- until line == nil
- file.close()
- number = {}
- for iu=1,#fileDataX do
- dataX = fileDataX[iu]
- dataB = split(dataX,"#")
- if dataB[1] == data[2] then
- table.insert(number,tostring(iu))
- end
- end
- local xx = #number
- for ix=1,#number do
- print(number[ix])
- num = tonumber(number[xx])
- table.remove(fileDataX,num)
- xx = xx - 1
- end
- local file = fs.open("mail.db","w")
- for iux=1,#fileDataX do
- file.writeLine(fileDataX[iux])
- end
- file.close()
- sleep(2)
- modem.transmit(sendBack,channel,"deleted")
- elseif data[1] == "send" then
- dataC = split(data[2],"-")
- set_w = dataC[1].."#"..dataC[2]
- local file = fs.open("mail.db","a")
- file.writeLine(set_w)
- file.close()
- sleep(2)
- modem.transmit(sendBack,channel,"mail send")
- end
- end
- end
- --program--
- print("start mail Server")
- print("start modem on channel "..channel)
- modem.open(channel)
- print("mail Server started")
- --open pull event--
- while power == true do
- event, modemside, sendchan, replaychan, message, dist = os.pullEvent("modem_message")
- sendBack = replaychan
- print(message)
- decode(message)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement