socsvn commit: r270421 - soc2014/pedrosouza/lua_loader/head/sys/boot/lua

pedrosouza at FreeBSD.org pedrosouza at FreeBSD.org
Fri Jul 4 02:34:50 UTC 2014


Author: pedrosouza
Date: Fri Jul  4 02:34:49 2014
New Revision: 270421
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=270421

Log:
  Added password.lua

Added:
  soc2014/pedrosouza/lua_loader/head/sys/boot/lua/password.lua
Modified:
  soc2014/pedrosouza/lua_loader/head/sys/boot/lua/core.lua

Modified: soc2014/pedrosouza/lua_loader/head/sys/boot/lua/core.lua
==============================================================================
--- soc2014/pedrosouza/lua_loader/head/sys/boot/lua/core.lua	Fri Jul  4 02:27:33 2014	(r270420)
+++ soc2014/pedrosouza/lua_loader/head/sys/boot/lua/core.lua	Fri Jul  4 02:34:49 2014	(r270421)
@@ -72,4 +72,8 @@
     core.setSafeMode(false);
     core.setSingleUser(false);
     core.setVerbose(false);
+end
+
+function core.autoboot()
+    loader.perform("autoboot");
 end
\ No newline at end of file

Added: soc2014/pedrosouza/lua_loader/head/sys/boot/lua/password.lua
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ soc2014/pedrosouza/lua_loader/head/sys/boot/lua/password.lua	Fri Jul  4 02:34:49 2014	(r270421)
@@ -0,0 +1,49 @@
+include("/boot/core.lua");
+password = {};
+
+function password.read()
+    local str = "";
+    local n = 0;
+    
+    repeat
+        ch = io.getchar();
+        if ch == 13 then break; end
+        
+        if ch == 8 then 
+            if n > 0 then
+                n = n - 1;
+                print("\008");
+                str = string.sub(str, 1, n);
+            end
+        else 
+            print("*");
+            str = str .. string.char(ch);
+            n = n + 1;
+        end
+    until n == 16
+    return str;
+end
+
+function password.check()
+    local boot_pwd = loader.getenv("bootlock_password");
+    if boot_pwd ~= nil then
+        while true do
+            print("Boot password: ");
+            if boot_pwd == password.read() then break; end
+            print("\nloader: incorrect password!\n");
+            loader.delay(3*1000*1000);
+        end
+    end
+    
+    local pwd = loader.getenv("password");
+    if (pwd == nil) then return; end
+    
+    core.autoboot();
+    
+    while true do
+        print("Password: ");
+        if pwd == password.read() then break; end
+        print("\nloader: incorrect password!\n");
+        loader.delay(3*1000*1000);
+    end
+end
\ No newline at end of file


More information about the svn-soc-all mailing list