mirror of
https://github.com/kepler155c/opus
synced 2024-11-05 16:36:16 +00:00
Trust manager (#46)
This commit is contained in:
parent
2c0db368fa
commit
ac91d8ed08
55
sys/apps/system/trust.lua
Normal file
55
sys/apps/system/trust.lua
Normal file
@ -0,0 +1,55 @@
|
||||
local UI = require("opus.ui")
|
||||
local Util = require("opus.util")
|
||||
local SHA = require('opus.crypto.sha2')
|
||||
|
||||
local function split(s)
|
||||
local b = ""
|
||||
for i = 1, #s, 5 do
|
||||
b = b .. s:sub(i, i+4)
|
||||
if i ~= #s-4 then
|
||||
b = b .. "-"
|
||||
end
|
||||
end
|
||||
return b
|
||||
end
|
||||
|
||||
return UI.Tab {
|
||||
title = 'Trust',
|
||||
description = 'Manage trusted devices',
|
||||
grid = UI.Grid {
|
||||
x = 2, y = 2, ex = -2, ey = -3,
|
||||
autospace = true,
|
||||
sortColumn = 'id',
|
||||
columns = {
|
||||
{ heading = 'Computer ID', key = 'id'},
|
||||
{ heading = 'Identity', key = 'pkey'}
|
||||
}
|
||||
},
|
||||
statusBar = UI.StatusBar { values = 'double-click to revoke trust' },
|
||||
reload = function(self)
|
||||
local values = {}
|
||||
for k,v in pairs(Util.readTable('usr/.known_hosts') or {}) do
|
||||
table.insert(values, {
|
||||
id = k,
|
||||
pkey = split(SHA.compute(v):sub(-20):upper()) -- Obfuscate private key for visual ident
|
||||
})
|
||||
end
|
||||
self.grid:setValues(values)
|
||||
self.grid:setIndex(1)
|
||||
end,
|
||||
enable = function(self)
|
||||
self:reload()
|
||||
UI.Tab.enable(self)
|
||||
end,
|
||||
eventHandler = function(self, event)
|
||||
if event.type == 'grid_select' then
|
||||
local hosts = Util.readTable('usr/.known_hosts')
|
||||
hosts[event.selected.id] = nil
|
||||
Util.writeTable('usr/.known_hosts', hosts)
|
||||
self:reload()
|
||||
else
|
||||
return UI.Tab.eventHandler(self, event)
|
||||
end
|
||||
return true
|
||||
end
|
||||
}
|
Loading…
Reference in New Issue
Block a user