summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2016-11-05 14:17:10 +0000
committerDaniel Silverstone <dsilvers@digital-scurf.org>2016-11-05 14:17:10 +0000
commitd5467f269d3b1461291ae2459bfb7f27eeaeee8e (patch)
treece0e095b07d957c011f95ade1b392729fc65e26f /lib
parentf52e46672845ed4cf6ebae50f198a684d34c5410 (diff)
downloadgitano-d5467f269d3b1461291ae2459bfb7f27eeaeee8e.tar.gz
Extract messages from config.lua
Diffstat (limited to 'lib')
-rw-r--r--lib/gitano/config.lua63
1 files changed, 35 insertions, 28 deletions
diff --git a/lib/gitano/config.lua b/lib/gitano/config.lua
index 13afe6d..a175d01 100644
--- a/lib/gitano/config.lua
+++ b/lib/gitano/config.lua
@@ -11,6 +11,7 @@
local gall = require 'gall'
local log = require 'gitano.log'
local lace = require 'gitano.lace'
+local i18n = require 'gitano.i18n'
local luxio = require 'luxio'
local sio = require 'luxio.simple'
local clod = require 'clod'
@@ -56,10 +57,10 @@ local function parse_admin_config(commit)
end
if not is_blob(flat_tree["site.conf"]) then
- return nil, "No site.conf"
+ return nil, i18n.expand("NO_SITE_CONF")
end
if not is_blob(flat_tree["rules/core.lace"]) then
- return nil, "No core rules file"
+ return nil, i18n.expand("NO_CORE_RULES")
end
local conf, err =
@@ -74,7 +75,8 @@ local function parse_admin_config(commit)
for k, t in pairs(required_confs) do
if type(conf.settings[k]) ~= t then
- return nil, ("Error in %s [%s] expected %s got %s"):format("gitano-admin:" .. commit.sha .. ":site.conf", k, t, type(conf.settings[k]))
+ return nil, i18n.expand("ERROR_SITE_CONF_TYPE",
+ {sha=commit.sha, key=k, want=t, got=type(conf.settings[k])})
end
end
@@ -87,7 +89,7 @@ local function parse_admin_config(commit)
return nil, prefix .. username .. "/user.conf is not a blob?"
end
if users[username] then
- return nil, "Duplicate user name: " .. username
+ return nil, i18n.expand("ERROR_DUPLICATE_USER_NAME", {name=username})
end
-- Found a user, fill them out
@@ -99,11 +101,13 @@ local function parse_admin_config(commit)
end
if type(user_clod.settings.real_name) ~= "string" then
- return nil, "gitano-admin:" .. commit.sha .. ":" .. prefix .. username .. "/user.conf missing real_name"
+ return nil, i18n.expand("ERROR_USER_MISSING_REAL_NAME",
+ { sha=commit.sha, path=prefix..username })
end
if (user_clod.settings.email_address and
type(user_clod.settings.email_address) ~= "string") then
- return nil, "gitano-admin:" .. commit.sha .. ":" .. prefix .. username .. "/user.conf email_address is bad"
+ return nil, i18n.expand("ERROR_USER_MISSING_EMAIL_ADDRESS",
+ { sha=commit.sha, path=prefix..username })
end
users[username] = setmetatable({ clod = user_clod, keys = {},
@@ -117,32 +121,35 @@ local function parse_admin_config(commit)
local prefix, username, keyname = filename:match("^(users/.-)([a-z][a-z0-9_.-]+)/([a-z][a-z0-9_-.]+)%.key$")
if prefix and username and keyname then
if not users[username] then
- return nil, "Found a key (" .. keyname .. ") for " .. username .. " which lacks a user.conf"
+ return nil, i18n.expand("ERROR_ORPHAN_KEY",
+ {key=keyname, user=username})
end
local this_key = obj.obj.content
this_key = this_key:gsub("\n*$", "")
if this_key:match("\n") then
- return nil, "Key " .. filename .. " has newlines in it -- is it in the wrong format?"
+ return nil, i18n.expand("ERROR_BAD_KEY_NEWLINES", {filename=filename})
end
local keytype, keydata, keytag = this_key:match("^([^ ]+) ([^ ]+) ([^ ].*)$")
if not (keytype and keydata and keytag) then
- return nil, "Unable to parse key, " .. filename .. " did not smell like an OpenSSH v2 key"
+ return nil, i18n.expand("ERROR_BAD_KEY_SMELL", {filename=filename})
end
if (keytype ~= "ssh-rsa") and (keytype ~= "ssh-dss") and
(keytype ~= "ecdsa-sha2-nistp256") and
(keytype ~= "ecdsa-sha2-nistp384") and
(keytype ~= "ecdsa-sha2-nistp521") then
- return nil, "Unknown key type " .. keytype .. " in " .. filename
+ return nil, i18n.expand("ERROR_BAD_KEY_TYPE",
+ {keytype=keytype, filename=filename})
end
if all_keys[this_key] then
- return nil, ("Duplicate key found at (" .. keyname .. ") for " ..
- username .. ". Previously found as (" ..
- all_keys[this_key].keyname .. ") for " ..
- all_keys[this_key].username)
+ return nil, i18n.expand(
+ "ERROR_DUPLICATE_KEY",
+ {keyname=keyname, username=username,
+ otherkey=all_keys[this_key].keyname,
+ otheruser=all_keys[this_key].username})
end
all_keys[this_key] = { keyname = keyname, username = username }
users[username].keys[keyname] = {
@@ -160,10 +167,10 @@ local function parse_admin_config(commit)
local prefix, groupname = filename:match("^(groups/.-)([a-z][a-z0-9_.-]+)%.conf$")
if prefix and groupname then
if groups[groupname] then
- return nil, "Duplicate group name: " .. groupname
+ return nil, i18n.expand("ERROR_DUPLICATE_GROUP", {name=groupname})
end
if not is_blob(obj) then
- return nil, prefix .. groupname .. ".conf is not a blob?"
+ return nil, i18n.expand("ERROR_GROUP_NOT_BLOB", {path=prefix..groupname})
end
local group_clod, err =
clod.parse(obj.obj.content,
@@ -174,7 +181,7 @@ local function parse_admin_config(commit)
return nil, err
end
if type(group_clod.settings.description) ~= "string" then
- return nil, groupname .. ": No description?"
+ return nil, i18n.expand("ERROR_GROUP_NO_DESCRIPTION", {name=groupname})
end
local group_globals = {
clod = group_clod,
@@ -205,11 +212,11 @@ local function parse_admin_config(commit)
local all_subgroups = {}
local function add_group(grname, grtab, path)
if not grtab then
- log.fatal("Group", grname, "not found, when traversing", path)
+ log.fatal(i18n.expand("ERROR_GROUP_NOT_FOUND", {name=grname, path=path}))
return
end
if all_subgroups[grname] then
- return nil, "Loop detected involving: " .. path
+ return nil, i18n.expand("ERROR_GROUP_LOOP", {path=path})
end
for _, un in ipairs(grtab.members) do
if users[un] then
@@ -239,10 +246,10 @@ local function parse_admin_config(commit)
local prefix, keyringname = filename:match("^(keyrings/.-)([a-z][a-z0-9_.-]+)%.gpg$")
if prefix and keyringname then
if keyrings[keyringname] then
- return nil, "Duplicate keyring name: " .. keyringname
+ return nil, i18n.expand("ERROR_DUPLICATE_KEYRING", {name=keyringname})
end
if not is_blob(obj) then
- return nil, prefix .. groupname .. ".gpg is not a blob?"
+ return nil, i18n.expand("ERROR_KEYRING_NOT_BLOB", {path=prefix .. groupname})
end
keyrings[keyringname] = {
meta = { prefix = prefix },
@@ -286,10 +293,10 @@ end
local function load_file_content(conf, filename)
local entry = conf.content[filename]
if not entry then
- return nil, "Not found: " .. conf.commit.sha .. "::" .. filename
+ return nil, i18n.expand("ERROR_GENERIC_CONF_NOT_FOUND", {sha=conf.commit.sha, name=filename})
end
if entry.type ~= "blob" then
- return nil, conf.commit.sha .. "::" .. filename .. ": Not a blob"
+ return nil, i18n.expand("ERROR_GENERIC_CONF_NOT_BLOB", {sha=conf.sha.commit, name=filename})
end
return entry.obj.content, conf.commit.sha .. "::" .. filename
end
@@ -309,7 +316,7 @@ local function generate_ssh_config(conf)
local ret = {"","### Gitano Keys ###"}
for u, t in pairs(conf.users) do
for ktag, keytab in pairs(t.keys) do
- log.debug("Adding <" .. u .. "> <" .. ktag .. ">")
+ log.debug(i18n.expand("DEBUG_ADDING_SSH_KEY", {user=u, key=ktag}))
ret[#ret+1] =
(('command="%s/gitano-auth \\"%s\\" \\"%s\\" \\"%s\\"",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding %s'):
format(lib_bin_path, repo_path, u, ktag, keytab.data))
@@ -327,7 +334,7 @@ local function update_ssh_keys(conf, ssh_path)
local home = luxio.getenv "HOME"
if not home then
- log.fatal("Unable to find HOME")
+ log.fatal(i18n.expand("ERROR_CANNOT_FIND_HOME"))
end
ssh_path = home .. "/.ssh/authorized_keys"
@@ -338,7 +345,7 @@ local function update_ssh_keys(conf, ssh_path)
local cfh, err = sio.open(create_path, "cew")
if not cfh or cfh == -1 then
- gitano.log.fatal("Unable to create " .. create_path)
+ log.fatal(i18n.expand("ERROR_UNABLE_TO_CREATE", {path=create_path}))
end
cfh:write(ssh_config)
@@ -346,10 +353,10 @@ local function update_ssh_keys(conf, ssh_path)
local ret, errno = luxio.rename(create_path, ssh_path)
if ret ~= 0 then
- log.fatal("Unable to overwrite " .. ssh_path)
+ log.fatal(i18n.expand("ERROR_UNABLE_TO_RENAME", {path=ssh_path}))
end
- log.chat "SSH authorised key file updated"
+ log.chat(i18n.expand("AUTHORIZED_KEYS_UPDATED"))
end
local function populate_context(conf, ctx, username)