aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xconfigure16
-rw-r--r--plugins/mod_register.lua1
-rw-r--r--plugins/mod_storage_sql.lua33
-rw-r--r--util/stanza.lua6
4 files changed, 36 insertions, 20 deletions
diff --git a/configure b/configure
index 2513eed3..974823c3 100755
--- a/configure
+++ b/configure
@@ -81,7 +81,7 @@ EOF
while [ "$1" ]
do
- value="`echo $1 | sed 's/[^=]*=\(.*\)/\1/'`"
+ value="$(echo "$1" | sed 's/[^=]*=\(.*\)/\1/')"
if echo "$value" | grep -q "~"
then
echo
@@ -268,8 +268,8 @@ fi
find_program() {
path="$PATH"
- item="`echo "$path" | sed 's/\([^:]*\):.*/\1/'`"
- path="`echo "$path" | sed -n 's/[^:]*::*\(.*\)/\1/p'`"
+ item="$(echo "$path" | sed 's/\([^:]*\):.*/\1/')"
+ path="$(echo "$path" | sed -n 's/[^:]*::*\(.*\)/\1/p')"
found="no"
while [ "$item" ]
do
@@ -278,8 +278,8 @@ find_program() {
found="yes"
break
fi
- item="`echo "$path" | sed 's/\([^:]*\):.*/\1/'`"
- path="`echo "$path" | sed -n 's/[^:]*::*\(.*\)/\1/p'`"
+ item="$(echo "$path" | sed 's/\([^:]*\):.*/\1/')"
+ path="$(echo "$path" | sed -n 's/[^:]*::*\(.*\)/\1/p')"
done
if [ "$found" = "yes" ]
then
@@ -301,7 +301,7 @@ then
find_lua="$LUA_DIR"
fi
else
- find_lua=`find_program lua$suffix`
+ find_lua="$(find_program lua$suffix)"
fi
if [ "$find_lua" ]
then
@@ -316,12 +316,12 @@ then
echo -n "Looking for Lua... "
if [ ! "$find_lua" ]
then
- find_lua=`find_program lua$LUA_SUFFIX`
+ find_lua="$(find_program lua$LUA_SUFFIX)"
echo "lua$LUA_SUFFIX found in \$PATH: $find_lua"
fi
if [ "$find_lua" ]
then
- LUA_DIR=`dirname $find_lua`
+ LUA_DIR="$(dirname $find_lua)"
LUA_BINDIR="$find_lua"
else
echo "lua$LUA_SUFFIX not found in \$PATH."
diff --git a/plugins/mod_register.lua b/plugins/mod_register.lua
index eaa0614d..c376117f 100644
--- a/plugins/mod_register.lua
+++ b/plugins/mod_register.lua
@@ -257,6 +257,7 @@ module:hook("stanza/iq/jabber:iq:register:query", function(event)
-- TODO unable to write file, file may be locked, etc, what's the correct error?
local error_reply = st.error_reply(stanza, "wait", "internal-server-error", "Failed to write data to disk.");
if usermanager_create_user(username, password, host) then
+ data.registered = os.time();
if next(data) and not account_details:set(username, data) then
log("debug", "Could not store extra details");
usermanager_delete_user(username, host);
diff --git a/plugins/mod_storage_sql.lua b/plugins/mod_storage_sql.lua
index 60870a01..50d9cd0f 100644
--- a/plugins/mod_storage_sql.lua
+++ b/plugins/mod_storage_sql.lua
@@ -7,10 +7,8 @@ local xml_parse = require "util.xml".parse;
local uuid = require "util.uuid";
local resolve_relative_path = require "util.paths".resolve_relative_path;
-local stanza_mt = require"util.stanza".stanza_mt;
-local getmetatable = getmetatable;
+local is_stanza = require"util.stanza".is_stanza;
local t_concat = table.concat;
-local function is_stanza(x) return getmetatable(x) == stanza_mt; end
local noop = function() end
local unpack = unpack
@@ -435,14 +433,22 @@ local function upgrade_table(params, apply_changes)
return changes;
end
-local function normalize_params(params)
- if params.driver == "SQLite3" then
- if params.database ~= ":memory:" then
- params.database = resolve_relative_path(prosody.paths.data or ".", params.database or "prosody.sqlite");
- end
+local function normalize_database(driver, database)
+ if driver == "SQLite3" and database ~= ":memory:" then
+ return resolve_relative_path(prosody.paths.data or ".", database or "prosody.sqlite");
end
- assert(params.driver and params.database, "Configuration error: Both the SQL driver and the database need to be specified");
- return params;
+ return database;
+end
+
+local function normalize_params(params)
+ return {
+ driver = assert(params.driver, "Configuration error: Both the SQL driver and the database need to be specified");
+ database = assert(normalize_database(params.driver, params.database), "Configuration error: Both the SQL driver and the database need to be specified");
+ username = params.username;
+ password = params.password;
+ host = params.host;
+ port = params.port;
+ };
end
function module.load()
@@ -478,7 +484,7 @@ function module.command(arg)
-- We need to find every unique dburi in the config
local uris = {};
for host in pairs(prosody.hosts) do
- local params = config.get(host, "sql") or default_params;
+ local params = normalize_params(config.get(host, "sql") or default_params);
uris[sql.db2uri(params)] = params;
end
print("We will check and upgrade the following databases:\n");
@@ -498,7 +504,10 @@ function module.command(arg)
upgrade_table(params, true);
end
print("All done!");
- else
+ elseif command then
print("Unknown command: "..command);
+ else
+ print("Available commands:");
+ print("","upgrade - Perform database upgrade");
end
end
diff --git a/util/stanza.lua b/util/stanza.lua
index a598a81e..651c1973 100644
--- a/util/stanza.lua
+++ b/util/stanza.lua
@@ -14,6 +14,7 @@ local s_format = string.format;
local s_match = string.match;
local tostring = tostring;
local setmetatable = setmetatable;
+local getmetatable = getmetatable;
local pairs = pairs;
local ipairs = ipairs;
local type = type;
@@ -45,6 +46,10 @@ local function new_stanza(name, attr, namespaces)
return setmetatable(stanza, stanza_mt);
end
+local function is_stanza(s)
+ return getmetatable(s) == stanza_mt;
+end
+
function stanza_mt:query(xmlns)
return self:tag("query", { xmlns = xmlns });
end
@@ -422,6 +427,7 @@ end
return {
stanza_mt = stanza_mt;
stanza = new_stanza;
+ is_stanza = is_stanza;
new_id = new_id;
preserialize = preserialize;
deserialize = deserialize;