mirror of
https://github.com/kepler155c/opus
synced 2024-11-17 06:04:50 +00:00
55 lines
1.3 KiB
Lua
55 lines
1.3 KiB
Lua
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
|
|
} |