Advertisement
Darking560

SecuritySensorServeur

Aug 4th, 2015
29
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.97 KB | None | 0 0
  1. --Zone editable du programme--
  2.  
  3. local blacklist = {PseudoExemple=true}
  4. local whitelist = {}
  5. local channel1 = 200
  6. local channel2 = 201
  7.  
  8. --Ne pas toucher au programme apres cette ligne--
  9.  
  10.  
  11. local sensor = {}
  12. local prevsensor = {}
  13. local recent = {"","",""}
  14.  
  15. function myperipheral(name)
  16.     local function inlist(item,list)
  17.         for n,m in pairs(list)  do
  18.             if m == item then
  19.                 return true
  20.             end
  21.         end
  22.         return false
  23.     end
  24.    
  25.     local side
  26.     for k,v in pairs(peripheral.getNames()) do
  27.         if string.find(v,name) then
  28.             side = v
  29.         elseif inlist(v,rs.getSides()) then
  30.             if peripheral.getType(v) == name then
  31.                 side = v
  32.             end
  33.         end
  34.     end
  35.    
  36.     if side ~= nil then
  37.         print("Found "..name.." as "..side)
  38.         return side
  39.     else   
  40.         print("ERROR:"..name.." don't found")
  41.         return nil
  42.     end
  43. end
  44.    
  45. function screen()
  46.     x,y = m.getSize()
  47.    
  48.     local function enter()
  49.         posx,posy = m.getCursorPos()
  50.         m.setCursorPos(2,posy+1)
  51.     end
  52.    
  53.  
  54.     while true do
  55.         m.setBackgroundColor(0x8000)
  56.         m.clear()
  57.        
  58.         m.setCursorPos(2,2)
  59.         for i,j in pairs(sensor) do
  60.             m.setBackgroundColor(0x100)
  61.             m.write(i.." :")
  62.             enter()
  63.             m.setBackgroundColor(0x8000)
  64.             for o,p in pairs(j) do
  65.                 if blacklist[p] then
  66.                     m.setTextColor(0x4000)
  67.                 end
  68.                 m.write("  - "..p)
  69.                 enter()
  70.                 m.setTextColor(0x1)
  71.             end
  72.         end
  73.        
  74.         m.setCursorPos(2,y-3)
  75.         m.setBackgroundColor(0x100)
  76.         m.write("Intrusion recente :")
  77.         m.setBackgroundColor(0x8000)
  78.         enter()
  79.         m.write("  - "..recent[1])
  80.         enter()
  81.         m.write("  - "..recent[2])
  82.         enter()
  83.         m.write("  - "..recent[3])
  84.        
  85.         sleep(2)
  86.     end
  87. end
  88.  
  89. function mylog(text)
  90.     mydate = http.get("http://philipperydin.com/time2.php").readAll()
  91.     mytime = http.get("http://philipperydin.com/time.php").readAll()
  92.    
  93.     if not fs.isDir("log") then
  94.         fs.makeDir("log")
  95.     end
  96.    
  97.     file = fs.open("log/"..mydate,"a")
  98.     file.writeLine("["..mytime.."] "..text)
  99.     file.close()
  100. end
  101.  
  102. function event()
  103.     while true do
  104.         e, side, sender, reply, msg = os.pullEvent("modem_message")
  105.         message = textutils.unserialize(msg)
  106.         sensor[message.name] = message.players
  107.     end
  108. end    
  109.  
  110. function check()
  111.     while true do
  112.         for sensorname,players in pairs(sensor) do
  113.         if prevsensor[sensorname] then
  114.             for nb,name in pairs(players) do
  115.                 if not whitelist[name] then
  116.                     local ok = false
  117.                     for o,prevname in pairs(prevsensor[sensorname]) do
  118.                         if name == prevname then
  119.                             ok = true
  120.                         end
  121.                     end
  122.                     if not ok then
  123.                         print(name.." entre dans la zone de "..sensorname)
  124.                         mylog(name.." entre dans la zone de "..sensorname)
  125.                         table.insert(recent,1,name)
  126.                         table.remove(recent,4)
  127.                     end
  128.                 end
  129.             end
  130.         end
  131.         prevsensor[sensorname]=players
  132.         end
  133.         sleep(4)
  134.     end
  135. end
  136.  
  137. print("-------Check Peripheral-------")
  138. r = peripheral.wrap(myperipheral("modem"))
  139. m = peripheral.wrap(myperipheral("monitor"))
  140. print("-------End Check Peripheral-------")
  141.  
  142. r.open(channel2)
  143.  
  144. print("Wait for information")
  145.  
  146. parallel.waitForAny(screen,event,check)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement