Advertisement
LeslieCraft

[HUN] Minecraft, computercraft Jelszavas vezerles. Hash 2.0

Aug 22nd, 2013
399
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --[[
  2.             ----------> Beléptető rendszer <----------
  3.  
  4. Beléptető rendszer. Előszőr root felhasználónévvel és root jelszóval tudtok belépni.
  5. Ezután tudtok felhasználókat, illetve admin jogokkal rendelkező felhasználókat létrehozni.
  6.  
  7. Egyenlőre egy ajtó nyitási funkció van beprogramozva. Ezt bármire kicserélhetitek.
  8. Erre rákeresve: function Choice1()
  9. Itt találhatjátok az 1. menüpont funkcióhívását. A Choice1 re újra rákeresve a menüt tudjátok átírni.
  10.  
  11. A script szabadon másólható, illetve módosítható, amennyiben az eredeti részt csak kommentezitek és az eredeti
  12. tulaját feltüntetitek. Jelen esetben Matteo Delfavero
  13.  
  14. Használjátok sok sikerrel. Bármi kérdésetek van itt feltehetitek: matteo.delfaveroKUKACgmail.com
  15.  
  16. A jelszavakat 32 bites hash eléssel menti, terminate-elni nem lehet a futó programot, csak újra indítani
  17. a ctrl+r el.
  18.  
  19.  
  20. ui.: A Script csak egy része van commentezve. Hamarosan kész lesz.
  21.                                                                                                     2013.07.18
  22. ]]--
  23.  
  24. inMainMenuA = false
  25. inMainMenuU = false
  26. local termWidth, termHeight = term.getSize()
  27. local selectedItem = 1
  28. username = -1
  29. passworld = -1
  30. rsout1 = "left"
  31. rsout2 = "right"
  32. local pullEvent = os.pullEvent      -- Anti terminate
  33. os.pullEvent = os.pullEventRaw      -- Anti terminate
  34.  
  35.  
  36. function StringHash(text)
  37.   local counter = 1
  38.   local len = string.len(text)
  39.   for i = 1, len, 3 do
  40.     counter = math.fmod(counter*8161, 4294967279) +
  41.       (string.byte(text,i)*16776193) +
  42.       ((string.byte(text,i+1) or (len-i+256))*8372226) +
  43.       ((string.byte(text,i+2) or (len-i+256))*3932164)
  44.   end
  45.   return math.fmod(counter, 4294967291)
  46. end
  47.  
  48. function InstallDatabase()                      --Adatbázis mappa létrehozása
  49.     if not fs.exists("Database") then           --Ellenőrzi, hogy létezik-e a mappa
  50.         fs.makeDir("Database")                  --Létrehozza a mappát
  51.         local file = fs.open("Database/root.dat", "w")  --Létrehoz egy root felhasználót tartalmazó file-t
  52.         file.writeLine(tostring(StringHash("root")))                    --Beleírja a root jelszavat
  53.         file.writeLine(tostring(StringHash("true")))                    --Adminra állítja
  54.         file.close()                            --Bezárja a file-t
  55.         return false                            --Igaz értékkel tér vissza a functio
  56.     else
  57.         return true     --Már létre van hozva a mappa ezért false értékkel tér vissza, tehát nem volt telepítés
  58.     end
  59. end
  60.  
  61. function rootPass()
  62.     local file = fs.open("Database/root.dat", "r")
  63.     local rootPass = file.readLine()
  64.     local rootAdmin = file.readLine()
  65.     file.close()
  66.     if rootPass == tostring(StringHash("root")) then            --Ha a root jelszava root akkor igaz értékkel tér vissza
  67.         return true                             --Ez kérőbb lesz érdekes
  68.     else
  69.         return false
  70.     end
  71. end
  72.  
  73. function IsAdmin(username)                                          --Ellenőrzi, hogy a felhasználónak vannak-e root azaz admin jogosúltságai
  74.     local file = fs.open("Database/"..username..".dat", "r")
  75.     local ReadedPass = file.readLine()
  76.     local ReadedAdmin = file.readLine()
  77.     file.close()
  78.     if ReadedAdmin == tostring(StringHash("true")) then
  79.         return true
  80.     else
  81.         return false
  82.     end
  83. end
  84.  
  85. function rootChange()
  86.     if rootPass() then
  87.         centerText("-----> Root jelszo megvaltoztatasa <-----")
  88.         print("")
  89.         write("Uj root jelszo: ")
  90.         local rootpass1 = read("x")
  91.         write("Uj root jelszo megegyszer: ")
  92.         local rootpass2 = read("x")
  93.         if rootpass1 == "root" then
  94.             cls()
  95.             centerText("Nem lehet ujra root a jelszo")
  96.             sleep(3)
  97.             return rootChange()
  98.         end
  99.         if rootpass1 == rootpass2 then
  100.             local file = fs.open("Database/root.dat", "w")
  101.             file.writeLine(tostring(StringHash(rootpass2)))
  102.             file.writeLine(tostring(StringHash("true")))
  103.             file.close()
  104.             print("Root jelszo frissitese....")
  105.             sleep(2)
  106.             return true
  107.         else
  108.             print("A ket jelszo nem egyezik")
  109.             sleep(3)
  110.             return rootChange()
  111.         end
  112.     end
  113. end
  114.  
  115. function centerText(text)
  116.     local x,y = term.getSize()
  117.     local x2,y2 = term.getCursorPos()
  118.     term.setCursorPos(math.ceil((x / 2) - (text:len() / 2)), y2)
  119.     print(text)
  120. end
  121.  
  122. function UserAdd()
  123.     cls()
  124.     centerText("-----> Regisztracio <-----")
  125.     print("")
  126.     write("Felhasznalonev: ")
  127.     local username = read()
  128.     print("")
  129.     write("Jelszo: ")
  130.     local passwd1 = read("x")
  131.     write("Jelszo megerositese: ")
  132.     local passwd2 = read("x")
  133.     write("A felhasznalonak root jogai vannak? i/n: ")
  134.     local Admin = read()
  135.    
  136.     if Admin == "i" or Admin == "I" then
  137.         AdminJog = "true"
  138.     elseif Admin == "n" or Admin == "N" then
  139.         AdminJog = "false"
  140.     else
  141.         print("Helytelen válasz i/n !")
  142.         sleep(3)
  143.         return UserAdd()
  144.     end
  145.    
  146.     if passwd1 ~= passwd2 then
  147.         print("A ket jelszo nem egyezik")
  148.         sleep(3)
  149.         return UserAdd()
  150.     end
  151.    
  152.     if not InstallDatabase() then
  153.         cls()
  154.         print("Nem lehetett létrehozni")
  155.         read("")
  156.         return main()
  157.     end
  158.    
  159.     if fs.exists("Database/" .. username ..".dat") then
  160.         cls()
  161.         print("Van mar ilyen felhasznalo")
  162.         read("")
  163.         return main()
  164.     end
  165.    
  166.     local file = fs.open("Database/" .. username ..".dat", "w")
  167.     file.writeLine(tostring(StringHash(passwd1)))
  168.     file.writeLine(tostring(StringHash(AdminJog)))
  169.     file.close()
  170.     return menu()
  171. end
  172.  
  173. function cls()
  174.     term.clear()
  175.     term.setCursorPos(1,1)
  176. end
  177.  
  178. function NoUser()
  179.     cls()
  180.     print("Nincs ilyen felhasznalo")
  181.     read("")
  182.     return main()
  183. end
  184.  
  185. function Acces(user, pass)
  186.     if fs.exists("Database/"..user..".dat") then
  187.         local file = fs.open("Database/"..user..".dat", "r")
  188.        
  189.         local ReadedPass = file.readLine()
  190.         adminUser = file.readLine()
  191.        
  192.         file.close()
  193.         if ReadedPass == tostring(StringHash(pass)) then
  194.             return true
  195.         else
  196.             return false
  197.         end
  198.     else
  199.         return NoUser()
  200.     end
  201. end
  202.  
  203. function AccessDenied()
  204.     cls()
  205.     print("Felhasznalonev/jelszo nem eggyezik")
  206.     read("")
  207.     return main()
  208. end
  209.  
  210. function AccessEnable()
  211.     rootChange()
  212.     print("Debug mauin")
  213.     return menu()
  214. end
  215.  
  216. function main()
  217.     InstallDatabase()
  218.     cls()
  219.     centerText("-----> Bejelentkezes <-----")
  220.     print("")
  221.     write("Felhasznalonev: ")
  222.     username = read()
  223.     print("")
  224.     write("Jelszo: ")
  225.     passworld = read("x")
  226.     if Acces(username, passworld) then
  227.         return AccessEnable()
  228.     else
  229.         return AccessDenied()
  230.     end
  231. end
  232.  
  233. function printMenu ( menu, admin )
  234.     if adminUser == "true" then
  235.         centerText("Udv admin: " .. username)
  236.     else
  237.         centerText("Udv user: " .. username)
  238.     end
  239.    
  240.     for i = 1, #menu do
  241.         if i == selectedItem then
  242.           term.setCursorPos(15,(i+5))
  243.           print(">> "..menu[i].text.." <<")
  244.         else
  245.           term.setCursorPos(15,(i+5))
  246.           print("   "..menu[i].text)
  247.         end
  248.     end
  249. end
  250.  
  251. function onKeyPressed( key, menu )
  252. --  if key == keys.enter then
  253.     if key == 28 then
  254.         onItemSelected(menu)
  255.     elseif key == 200 then
  256. --  elseif key == keys.up then
  257.         if selectedItem > 1 then
  258.             selectedItem = selectedItem - 1
  259.         end
  260. --  elseif key == keys.down then
  261.     elseif key == 208 then
  262.         if selectedItem < #menu then
  263.             selectedItem = selectedItem +1
  264.         end
  265.     end
  266. end
  267.  
  268. function onItemSelected(menu)
  269.     menu[selectedItem].handler()
  270. end
  271.  
  272. function timerAjto(sec)
  273.     while sec ~= 0 do
  274.         cls()
  275.         centerText("Ajtok zarasa " .. sec .. "-mp mulva.")
  276.         sec = sec-1
  277.         sleep(1)
  278.     end
  279. end
  280.  
  281. function timer(sec)
  282.     while sec ~= 0 do
  283.         write(sec)
  284.         sec = sec-1
  285.         sleep(1)
  286.     end
  287. end
  288.  
  289. function Choice1()      --Ajtó nyitás
  290.     cls()
  291.     redstone.setOutput(rsout1, true)
  292.     redstone.setOutput(rsout2, true)
  293.     timerAjto(6)
  294.     redstone.setOutput(rsout1, false)
  295.     redstone.setOutput(rsout2, false)
  296.     return menu()
  297. end
  298.  
  299. function Choice2()      --Új regisztráció
  300.     UserAdd()
  301. end
  302.  
  303. function Choice3()
  304.     cls()
  305.     centerText("-----> Jelszo csere <-----")
  306.     print("")
  307.     write("Felhasznalonev: ")
  308.     local ExchangeUserPass = read()
  309.     print("Felhasznalo keresese...")
  310.     sleep(2)
  311.     if fs.exists("Database/"..ExchangeUserPass..".dat") then
  312.         print("Felhasznalo megtalalva: " .. ExchangeUserPass)
  313.         local file = fs.open("Database/"..ExchangeUserPass..".dat", "r")
  314.         local ReadedPass = file.readLine()
  315.         local ReadedAdmin = file.readLine()
  316.         file.close()
  317.        
  318.         write("Uj jelszo: ")
  319.         local Passwd1 = read("x")
  320.         write("Jelszo megegyszer: ")
  321.         local Passwd2 = read("x")
  322.         if Passwd1 == Passwd2 then
  323.             local file = fs.open("Database/"..ExchangeUserPass..".dat", "w")
  324.             file.writeLine(tostring(StringHash(Passwd1)))
  325.             file.writeLine(tostring(StringHash(ReadedAdmin)))
  326.             file.close()
  327.             print("Jelszo frissitese...")
  328.             sleep(1)
  329.             print("Frissites sikeres a/az " .. ExchangeUserPass .. " felhasznalonal")
  330.             sleep(3)
  331.             return menuA()
  332.         else
  333.             print("A ket jelszo nem egyezik!!!")
  334.             sleep(3)
  335.             return Choice3()
  336.         end
  337.     else
  338.         print("Nem talalhato ilyen felhasznalo: "  .. ExchangeUserPass)
  339.     end
  340. end
  341.  
  342. function Choice4()
  343.     cls()
  344.     centerText("-----> Jelszo csere <-----")
  345.     print("")
  346.     write("Jelenlegi jelszavad: ")
  347.     local NowPass = read("x")
  348.     local file = fs.open("Database/"..username..".dat", "r")
  349.     local NowReadedPass = file.readLine()
  350.     file.close()
  351.     if NowReadedPass == tostring(StringHash(NowPass)) then
  352.         write("Uj jelszo megadasa: ")
  353.         local NewPasswd1 = read("x")
  354.         write("Jelszo megegyszer: ")
  355.         local NewPasswd2 = read("x")
  356.         if NewPasswd1 == NewPasswd2 then
  357.             local file = fs.open("Database/"..username..".dat", "w")
  358.             file.writeLine(tostring(StringHash(NewPasswd2)))
  359.             file.writeLine(tostring(StringHash("false")))
  360.             file.close()
  361.             print("Jelszo frissitese....")
  362.             sleep(2)
  363.             print("Kesz!")
  364.             sleep(.5)
  365.             return menu()
  366.         else
  367.             print("A ket jelszo nem eggyezik!!")
  368.             sleep(3)
  369.             cls()
  370.             return Choice4()
  371.         end
  372.     else
  373.         print("A megadott jelszavad nem")
  374.         print("eggyezik a tarolt jelszavaddal.")
  375.         sleep(4)
  376.         return menu()
  377.     end
  378. end
  379.  
  380. function Choise5()
  381.     cls()
  382.     centerText("-----> felhasznalo torlese <-----")
  383.     print("")
  384.     write("Felhasznalonev: ")
  385.     local DeleteUser = read()
  386.     print("Felhasznalo keresese...")
  387.     sleep(2)
  388.     if fs.exists("Database/"..DeleteUser..".dat") then
  389.         print("Felhasznalo megtalalva.")
  390.         print("Biztosan torolni szeretned a/az " .. DeleteUser .. " felhasznalot? i/n")
  391.         local Delete = read()
  392.         if Delete == "i" or Delete == "I" then
  393.             fs.delete("Database/"..DeleteUser..".dat")
  394.             print("Torles...")
  395.             sleep(1)
  396.             if not fs.exists("Database/"..DeleteUser..".dat") then
  397.                 print("Sikeresen torolted a/az " .. DeleteUser .. " felhasznalot.")
  398.                 sleep(3)
  399.                 return menu()
  400.             else
  401.                 print("ERROR FELHASZNALO NEM TOROLHETO")
  402.                 sleep(3)
  403.                 return menu()
  404.             end
  405.         elseif Delete == "n" or Delete == "N" then
  406.             return menu()
  407.         else
  408.             print("Igen vagy nem?! i/n")
  409.             sleep(3)
  410.             return Choise5()
  411.         end
  412.     else
  413.         print("Felhasznalo nem talalhato")
  414.         sleep(3)
  415.         return menu()
  416.     end
  417. end
  418.  
  419. function Choise6()
  420.     cls()
  421.     centerText("-----> Osszes felhasznalo <-----")
  422.     local FileList = fs.list("Database/")
  423.     for _, file in ipairs(FileList) do
  424.         print(file)
  425.     end
  426.    
  427.     read("")
  428.     return menu()
  429. end
  430.  
  431. function Exit()         --Kijelentkezés
  432.     inMainMenuA = false
  433.     inMainMenuU = false
  434.     main()
  435. end
  436.  
  437. mainMenuA = {
  438.     [1] = { text = "  Ajtok nyitasa    ", handler = Choice1 },
  439.     [2] = { text = " Uj regisztracio   ", handler = Choice2 },
  440.     [3] = { text = "   Jelszo csere    ", handler = Choice3 },
  441.     [4] = { text = "Felhasznalo torlese", handler = Choise5 },
  442.     [5] = { text = "Osszes felhasznalo ", handler = Choise6 },
  443.     [6] = { text = "      Log out      ", handler = Exit }
  444. }
  445.  
  446. mainMenuU = {
  447.     [1] = { text = "  Ajtok nyitasa  ", handler = Choice1 },
  448.     [2] = { text = "Sajat jelszo cere", handler = Choice4 },
  449.     [3] = { text = "     Log out     ", handler = Exit }
  450. }
  451.  
  452. function menu()
  453.     if IsAdmin(username) then
  454.         selectedItem = 1
  455.         inMainMenuA = true
  456.         inMainMenuU = false
  457.         return menuA()
  458.     else
  459.         selectedItem = 1
  460.         inMainMenuA = false
  461.         inMainMenuU = true
  462.         return menuU()
  463.     end
  464. end
  465.  
  466. function menuA()
  467.     while inMainMenuA do
  468.         cls()
  469.         printMenu(mainMenuA)
  470.         event, key = os.pullEvent("key")
  471.         onKeyPressed(key, mainMenuA)
  472.     end
  473. end
  474.  
  475. function menuU()
  476.     while inMainMenuU do
  477.         cls()
  478.         printMenu(mainMenuU)
  479.         event, key = os.pullEvent("key")
  480.         onKeyPressed(key, mainMenuU)
  481.     end
  482. end
  483.  
  484.  
  485. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement