pepeknamornik

ServerAD

Mar 11th, 2020 (edited)
747
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 13.30 KB | None | 0 0
  1. verze = "21.0628.R2"
  2. logs = false
  3. term.clear()
  4. term.setCursorPos(1,1)
  5. local idPC = os.getComputerID()
  6. cReg= 1 --count of synchronize Register, mno?ství synchronizovaných registr?
  7.  
  8. if fs.exists("/C/system/.core/defmodem") then
  9.         local data = fs.open ("/C/system/.core/defmodem","r")
  10.         modemPos = data.readLine()
  11.         data.close()
  12.         if not modemPos then
  13.         modemPos = "offline"
  14.         end
  15.     else
  16.         modemPos = "offline"
  17.     end
  18.    
  19. if not (modemPos == "offline") then
  20. modem = peripheral.wrap(modemPos)
  21. modem.open(idPC)
  22. print("Active Directory Connector, ID serveru: "..idPC)
  23. else
  24. term.setTextColor(colors.red)
  25. print("Error, you must configure the modem first")
  26. modem.open("Error")
  27. end
  28.  
  29. function logy(Zlog)
  30.     cas = (textutils.formatTime(os.time(), true))
  31.     local l = fs.open("/C/system/server/rules/AD/log","a")
  32.     l.writeLine(cas..": "..Zlog)
  33.     l.close()
  34. end
  35.  
  36. function bar(styl, text)
  37.     if (styl == "OK") then                  -- Uspech
  38.         term.setTextColor(colors.green)
  39.     elseif (styl == "FAIL") then            -- Neuspesne
  40.         term.setTextColor(colors.red)
  41.     elseif (styl == "INFO") then            -- Informativni
  42.         term.setTextColor(colors.lightBlue)
  43.     elseif (styl == "def") then             -- defaultni
  44.         term.setTextColor(colors.white)
  45.     elseif (styl == "PRO") then             -- Progress
  46.         term.setTextColor(colors.yellow)
  47.     else
  48.         styl = "def"
  49.         term.setTextColor(colors.white)
  50.     end
  51.    
  52.     if not (styl == "def") then
  53.         zprava = ("["..textutils.formatTime(os.time(), true).."] ["..styl.."] "..text)
  54.         else
  55.         zprava = text
  56.     end
  57.    
  58.     if logs then
  59.     logy(zprava)
  60.     end
  61.     print (zprava)
  62. end
  63.  
  64.     if fs.exists("/C/system/server/rules/Update/") and fs.exists("/C/service/updateAD.lua") then
  65.         UpdateServer = true
  66.         bar("INFO", "Pepdroll Update service is available!")
  67.         if fs.exists ("/C/system/server/rules/Update/startup.lua") then
  68.         local data = fs.open("/C/system/server/rules/Update/startup.lua", "r")
  69.         bar("INFO", "Startup "..data.readLine())
  70.         data.close()
  71.         end
  72.         if fs.exists ("/C/system/server/rules/Update/desktop.lua") then
  73.         data = fs.open("/C/system/server/rules/Update/desktop.lua", "r")
  74.         bar("INFO", "Desktop "..data.readLine())
  75.         data.close()
  76.         end
  77.         if fs.exists ("/C/system/server/rules/Update/setting.lua") then
  78.         data = fs.open("/C/system/server/rules/Update/setting.lua", "r")
  79.         bar("INFO", "SettingApp "..data.readLine())
  80.         data.close()
  81.         end
  82.     else
  83.         UpdateServer = false
  84.         bar("INFO", "Pepdroll Internal Update service is not available.")
  85.     end
  86.  
  87. local function defaultV()
  88.     Lpass = ""
  89.     idComp = ""
  90.     Luser = ""
  91.     pridat = false
  92.     Fuser = ""
  93.     idCompL = ""
  94.     IsAdmin = false
  95.     disAD = false
  96.     registr = ""
  97.     registrstatus = ""
  98. end
  99.  
  100. function overeni ()
  101.     bar("PRO", "Verification,")
  102.     local _, side, freq, rfreq, message = os.pullEvent('modem_message')
  103.    
  104.     if (rfreq == 552) then
  105.     bar("PRO", "Password accepted,")
  106.         Lpass = message
  107.     end
  108.    
  109.     if fs.exists ("/C/system/server/rules/AD/Users/"..Luser.."/.data") then
  110.     bar("OK", "User exists")
  111.         local f = fs.open("/C/system/server/rules/AD/Users/"..Luser.."/.data", "r")
  112.             user=f.readLine()
  113.             pass=f.readLine()
  114.             Fname=f.readLine()
  115.             Lname=f.readLine()
  116.             perm=f.readLine()
  117.         if (perm == "t") then IsAdmin = true end
  118.         f.close()
  119.     else
  120.     bar("FAIL", "User does not exist!")
  121.     modem.transmit(tonumber(idComp),552,"false")
  122.     bar("PRO", "Response sent to "..idComp)
  123.     defaultV()
  124.     prijmout()
  125.     end
  126.    
  127.     sleep(0.1)
  128.     if IsAdmin then
  129.         if (Lpass == pass) then
  130.             modem.transmit(tonumber(idComp),552,"true")
  131.             bar("PRO", "Response sent to "..idComp)
  132.             bar("OK", "Password accepted,")
  133.             rozdeleni()
  134.             else
  135.             modem.transmit(tonumber(idComp),552,"false")
  136.             bar("PRO", "Response sent to "..idComp)
  137.             bar("FAIL", "Bad password!")
  138.         end
  139.     else
  140.     modem.transmit(tonumber(idComp),552,"false")
  141.     bar("PRO", "Password accepted, "..idComp)
  142.     bar("FAIL", "Insufficient permissions!")
  143.     end
  144.     defaultV()
  145. end
  146.  
  147. function FindUser(Fuser)
  148.     if idCompL == "" then
  149.     modem.transmit(tonumber(idCompL),556,"false")
  150.     bar("FAIL", "Failed to verify computer ID!")
  151.     bar("PRO", "Response sent to "..idCompL)
  152.     defaultV()
  153.     prijmout ()
  154.     end
  155.    
  156.     if fs.exists("/C/system/server/rules/AD/Computers/"..idCompL) then
  157.         bar("OK", "PC ID: \""..idCompL.."\" find")
  158.     else
  159.         bar("FAIL", "PC ID: \""..idCompL.."\" cant find in ADPD!")
  160.         if fs.exists ("/C/system/server/rules/AD/Users/"..Fuser.."/.data") then
  161.         modem.transmit(tonumber(idCompL),556,"block")
  162.         bar("FAIL", "The user has been blocked on the given computer!")
  163.         bar("PRO", "Response sent to "..idCompL)
  164.         defaultV()
  165.         prijmout ()
  166.         end
  167.     end
  168.    
  169. if fs.exists ("/C/system/server/rules/AD/Users/"..Fuser.."/.data") then
  170.     bar("OK", "User exists,")
  171.     modem.transmit(tonumber(idCompL),556,"true")
  172.     local f = fs.open("/C/system/server/rules/AD/Users/"..Fuser.."/.data", "r")
  173.         user=f.readLine()
  174.         pass=f.readLine()
  175.         Fname=f.readLine()
  176.         Lname=f.readLine()
  177.         perm=f.readLine()
  178.         if (perm == "t") then IsAdmin = true end
  179.     f.close()
  180.  
  181.     if fs.exists ("/C/system/server/rules/AD/Users/"..Fuser.."/.lock") then
  182.     bar("FAIL", "User  \""..user.."\" is disable!")
  183.     pass = "QJHGSDahfdjhgqAUFjhglkfds14564851321!"
  184.     ban = true
  185.     else
  186.     bar("OK", "User \""..user.."\" is allowed,")
  187.     ban = false
  188.     end
  189.    
  190.     bar("PRO", "Send data to ID "..idCompL)
  191.     modem.transmit(tonumber(idCompL),1,user)
  192.     modem.transmit(tonumber(idCompL),2,pass)
  193.     modem.transmit(tonumber(idCompL),3,Fname)
  194.     modem.transmit(tonumber(idCompL),4,Lname)
  195.     modem.transmit(tonumber(idCompL),5,perm)
  196.     modem.transmit(tonumber(idCompL),580,cReg)
  197.     bar("OK", "Data sent,")
  198.  
  199.     else
  200.     bar("FAIL", "User does not exist!")
  201.     ban = true
  202.     if not idCompL == "" then
  203.         modem.transmit(tonumber(idCompL),556,"false")
  204.         bar("PRO", "Response sent to "..idCompL)
  205.         else
  206.         bar("FAIL", "Response cant sent!")
  207.     end
  208.     defaultV()
  209.     end
  210. end
  211.  
  212. function fail()
  213. modem.transmit(tonumber(idCompL),571,"fail")
  214. end
  215.  
  216. function AD_dotaz(dotaz)
  217.  
  218.     if fs.exists("/C/system/server/rules/Update/") then
  219.         UpdateServer = true
  220.     else
  221.         UpdateServer = false
  222.     end
  223.  
  224.         if (dotaz == "bar") then       
  225.             if fs.exists("/C/system/server/rules/AD/Policy/background.nfp") then
  226.                 bar("PRO", "Sync background image, Policy,")
  227.                 local data = fs.open("/C/system/server/rules/AD/Policy/background.nfp", "r")
  228.                 obsah = data.readAll()
  229.                 data.close()
  230.                 modem.transmit(tonumber(idCompL),571,obsah)
  231.             else
  232.                 if fs.exists("/C/system/server/rules/AD/Users/"..Fuser.."/bar.nfp") then
  233.                 bar("PRO", "Sync background image, User,")
  234.                 local data = fs.open("/C/system/server/rules/AD/Users/"..Fuser.."/bar.nfp", "r")
  235.                 obsah = data.readAll()
  236.                 data.close()
  237.                 modem.transmit(tonumber(idCompL),571,obsah)
  238.                 else
  239.                 fail()
  240.                 end
  241.             end
  242.         elseif (dotaz == "Bcol") then
  243.             if fs.exists("/C/system/server/rules/AD/Policy/Bcolor") then
  244.                 bar("PRO", "Sync theme color, Policy")
  245.                 local data = fs.open("/C/system/server/rules/AD/Policy/Bcolor", "r")
  246.                 obsah = data.readAll()
  247.                 data.close()
  248.                 modem.transmit(tonumber(idCompL),572,obsah)
  249.             else
  250.                 if fs.exists("/C/system/server/rules/AD/Users/"..Fuser.."/Bcolor") then
  251.                 bar("PRO", "Sync theme color, User,")
  252.                 local data = fs.open("/C/system/server/rules/AD/Users/"..Fuser.."/Bcolor", "r")
  253.                 obsah = data.readAll()
  254.                 data.close()
  255.                 modem.transmit(tonumber(idCompL),572,obsah)
  256.                 else
  257.                 fail()
  258.                 end
  259.             end
  260.         elseif (dotaz == "updateStart") then
  261.         if fs.exists ("/C/system/server/rules/Update/startup.lua") then
  262.         local data = fs.open("/C/system/server/rules/Update/startup.lua", "r")
  263.         verzestartup = data.readLine()
  264.         data.close()
  265.             if not (verzestartup == verzeStart) then
  266.                 bar("PRO", "Update startup.lua")
  267.                 local data = fs.open("/C/system/server/rules/Update/startup.lua", "r")
  268.                 obsah = data.readAll()
  269.                 data.close()
  270.                 modem.transmit(tonumber(idCompL),575,obsah)
  271.             else
  272.                 fail()
  273.             end
  274.         else
  275.             fail()
  276.         end
  277.         elseif (dotaz == "updateDesk") then
  278.         if fs.exists ("/C/system/server/rules/Update/desktop.lua") then
  279.         local data = fs.open("/C/system/server/rules/Update/desktop.lua", "r")
  280.         verzedesktop = data.readLine()
  281.         data.close()
  282.             if not (verzedesktop == verzeDesk) then
  283.                 bar("PRO", "Update desktop.lua")
  284.                 local data = fs.open("/C/system/server/rules/Update/desktop.lua", "r")
  285.                 obsah = data.readAll()
  286.                 data.close()
  287.                 modem.transmit(tonumber(idCompL),576,obsah)
  288.             else
  289.                 fail()
  290.             end
  291.             else
  292.             fail()
  293.         end
  294.         elseif (dotaz == "updateSett") then
  295.         if fs.exists ("/C/system/server/rules/Update/setting.lua") then
  296.         local data = fs.open("/C/system/server/rules/Update/setting.lua", "r")
  297.         verzesetting = data.readLine()
  298.         data.close()
  299.             if not (verzesetting == verzeSett) then
  300.                 bar("PRO", "Update Setting.lua")
  301.                 local data = fs.open("/C/system/server/rules/Update/setting.lua", "r")
  302.                 obsah = data.readAll()
  303.                 data.close()
  304.                 modem.transmit(tonumber(idCompL),577,obsah)
  305.             else
  306.                 fail()
  307.             end
  308.             else
  309.             fail()
  310.             end
  311.         elseif (dotaz == "Reg") then
  312.             modem.transmit(tonumber(idCompL),581, ".menuColor")
  313.         if fs.exists("/C/system/server/rules/AD/Users/"..Fuser.."/Registry/.menuColor") then
  314.             modem.transmit(tonumber(idCompL),582, "true")
  315.             bar("PRO", "Synchronizace registru .menuColor")
  316.         else
  317.             modem.transmit(tonumber(idCompL),582, "false")
  318.         end
  319.            
  320.            
  321.         else
  322.         fail()
  323.         end
  324. end
  325.  
  326.     function ImportRegistru()
  327.         if registrstatus ~= "" then
  328.             registerPath = ("/C/system/server/rules/AD/Users/"..Fuser.."/Registry/"..registr)
  329.             if registrstatus == "true" then
  330.                 if not fs.exists(registerPath) then
  331.                 local file = fs.open(registerPath, "w")
  332.                 file.close()
  333.                 end
  334.                 if fs.exists(registerPath) then bar("OK", "The register has been registered,") end
  335.             else
  336.                 if fs.exists(registerPath) then fs.delete(registerPath) bar("OK", "The register was deleted!") end
  337.             end
  338.         end
  339.         registerPath = ""
  340.         defaultV()
  341.     end
  342.  
  343. function prijmout ()
  344.     --bar("def", "Cekani na uzivatele")
  345.     local _, side, freq, rfreq, message = os.pullEvent('modem_message')
  346. --    bar("INFO", "Data prijata, zpracovavam...")
  347.  
  348.    
  349.     if (rfreq == 550) then
  350.         bar("INFO", "Request for data processing. ")
  351.         idComp = message    --login to domain
  352.         bar("PRO", "Device address: "..idComp)
  353.         pridat = true
  354.     end
  355.    
  356.     if (rfreq == 551) then
  357.         Luser = message
  358.         bar("PRO", "Username: "..Luser)
  359.         overeni()
  360.     end
  361.    
  362.     if (rfreq == 553) then
  363.            if (message == "DisConnect") then
  364.            disAD = true
  365.             bar("INFO", "Request to delete from.")
  366.             end
  367.     end
  368.    
  369.     if (rfreq == 554) then
  370.         bar("INFO", "User search request.")
  371.         idCompL = message   --login to domain
  372.         bar("PRO", "Device address: "..idCompL)
  373.     end
  374.    
  375.     if (rfreq == 555) then
  376.         Fuser = message
  377.         bar("PRO", "User search: "..Fuser)
  378.         FindUser(Fuser)    
  379.     end
  380.    
  381.     if (rfreq == 557) then
  382.         dotaz = message
  383.         local f = fs.open("/C/system/server/rules/AD/Users/"..Fuser.."/.data", "w")
  384.         f.write(message)
  385.         f.close()
  386.         bar("INFO", "User data overwritten!")
  387.     end
  388.    
  389.    
  390.     if (rfreq == 560) then
  391.         if not ban then
  392.         bar("PRO", "Sync Background data,")
  393.         local file = fs.open("/C/system/server/rules/AD/Users/"..Fuser.."/bar.nfp", "w")
  394.         file.write(message)
  395.         file.close()
  396.         end
  397.     end
  398.    
  399.     if (rfreq == 561) then
  400.         if not ban then
  401.         bar("PRO", "Sync Theme color,")
  402.         local file = fs.open("/C/system/server/rules/AD/Users/"..Fuser.."/Bcolor", "w")
  403.         file.write(message)
  404.         file.close()
  405.         end
  406.     end
  407.    
  408.     if (rfreq == 562) then
  409.         if not ban then
  410.         bar("PRO", "Sync Text color,")
  411.         local file = fs.open("/C/system/server/rules/AD/Users/"..Fuser.."/Tcolor", "w")
  412.         file.write(message)
  413.         file.close()
  414.         end
  415.     end
  416.    
  417.         if (rfreq == 563) then
  418.             if not ban then
  419.             registr = message
  420.             end
  421.         end
  422.        
  423.         if (rfreq == 564) then
  424.             if not ban then
  425.             bar("PRO", "Sync register: "..registr..", "..message)
  426.             registrstatus = message
  427.             ImportRegistru()
  428.             end
  429.         end
  430.    
  431.     if (rfreq == 570) then
  432.         dotaz = message
  433.         if not ban then
  434.         AD_dotaz(dotaz)
  435.         else
  436.         fail()
  437.         end
  438.     end
  439.    
  440.     if (rfreq == 575) then
  441.         verzeStart = message   
  442.     end
  443.    
  444.     if (rfreq == 576) then
  445.         verzeDesk = message
  446.     end
  447.    
  448.     if (rfreq == 577) then
  449.         verzeSett = message
  450.     end
  451.    
  452.     prijmout()
  453. end
  454.  
  455. function rozdeleni()
  456.  
  457.     if pridat and not disAD then
  458.         pridat = false
  459.         if not fs.exists("/C/system/server/rules/AD/Computers/"..idComp) then
  460.             local c = fs.open ("/C/system/server/rules/AD/Computers/"..idComp, "w")
  461.             c.close()
  462.         bar("OK", "Computer ID \""..idComp.."\" was added.")
  463.         else
  464.         bar("FAIL", "Computer ID \""..idComp.."\" already exists!")
  465.         end
  466.     end
  467.    
  468.     if disAD then
  469.         if  fs.exists("/C/system/server/rules/AD/Computers/"..idComp) then
  470.         fs.delete("/C/system/server/rules/AD/Computers/"..idComp)
  471.         bar("OK", "Computer ID \""..idComp.."\" was deleted.")
  472.         else
  473.         bar("FAIL", "Computer ID \""..idComp.."\" exist!")
  474.         end
  475.     end
  476.  
  477. prijmout()
  478. end
  479.  
  480. defaultV()
  481. prijmout()
Add Comment
Please, Sign In to add comment