summaryrefslogtreecommitdiffstats
path: root/lbu-model.lua
blob: 31707360dac2b8fbc0059d0f4b44878737cd9eaa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
module (..., package.seeall)

require("fs")
require("getopts")

local configfile = "/etc/lbu/lbu.conf"

-- ################################################################################
-- LOCAL FUNCTIONS

local function get_version ()
	local f,error = io.popen("/sbin/lbu 2>&1")
	local programversion = f:read("*l")
	f:close()
	return programversion
end

local function getLbuStatus()
	local ret = {}
	local f = io.popen("/sbin/lbu status -v", "r")
	if not (f) then return ret end
	for line in f:lines() do
		if (string.match(line, "^Include files")) then break end
		if (string.match(line, "^Exclude files")) then break end
		local status, name = string.match(line, "^(%S+)%s+(.+)$")
		if (status) and (name) then
			ret[string.gsub('/' .. name, "/+", "/")] = status
		end
	end
	f:close()
	return ret
end

local function getciphers()
	local opensslciphers = {}
	local watchdog = nil
	local f = io.popen("/usr/bin/openssl -v 2>&1", "r")
	if not (f) then return ciphers end
	for line in f:lines() do
		if (watchdog) then
			for cipher in string.gmatch(line, "(%S+)") do
				table.insert(opensslciphers,tostring(cipher))
			end
		end
		if (string.match(line, "^Cipher commands")) then watchdog="yes" end
	end
	f:close()
	return opensslciphers
end

-- ################################################################################
-- PUBLIC FUNCTIONS

function getstatus ()
	local status = {}
	local statustxt = nil
	local lbustatus = list()
	if (#lbustatus == 0) then
		statustxt = "OK! (There is no uncommited files)"
	else
		statustxt = "WARNING! (Until you commit, you will loose your changes at next reboot/shutdown!)"
	end
	status["version"] = get_version()
	status["status"] = statustxt
	return status
end

function list(self)
	local ret = {}
	local lbuStatus = getLbuStatus()
	for k,v in pairs(lbuStatus) do
		ret[#ret + 1] = { name=k, status=v }
	end
	table.sort(ret, function(a,b) return (a.name < b.name) end)
	return ret
end

function getconfig ()
	local path = configfile
	local config = {}
	local lbumedias = {}
	table.insert(lbumedias, {name="No default", value=""})
	table.insert(lbumedias, {name="floppy", value="floppy"})
	table.insert(lbumedias, {name="usb", value="usb"})
	config = getopts.getoptsfromfile(path)
	config["LBU_MEDIA_LIST"]= lbumedias
	config["DEFAULT_CIPHER_LIST"]= getciphers()
--	config["debug"] = getciphers()
	return config
end
-- ################################################################################
-- OLD FUNCTIONS

--[[
function commit(self)
    local f = io.popen("/sbin/lbu commit", 'r')
    if not f then return false, "cannot run lbu" end
    local ret = f:read("*a")
    f:close()
    return true, ret
end
--]]