diff options
author | Daniel Silverstone <dsilvers@digital-scurf.org> | 2016-11-05 14:17:10 +0000 |
---|---|---|
committer | Daniel Silverstone <dsilvers@digital-scurf.org> | 2016-11-05 14:17:10 +0000 |
commit | d5467f269d3b1461291ae2459bfb7f27eeaeee8e (patch) | |
tree | ce0e095b07d957c011f95ade1b392729fc65e26f /lib | |
parent | f52e46672845ed4cf6ebae50f198a684d34c5410 (diff) | |
download | gitano-d5467f269d3b1461291ae2459bfb7f27eeaeee8e.tar.gz |
Extract messages from config.lua
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gitano/config.lua | 63 |
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) |