mirror of https://github.com/kepler155c/opus
Trust manager (#46)
This commit is contained in:
parent
2c0db368fa
commit
ac91d8ed08
|
@ -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