From 1c3c5302ba25e5474f5319f2f766a0a9dc31802c Mon Sep 17 00:00:00 2001
From: Matthew Wild <mwild1@gmail.com>
Date: Thu, 17 Mar 2016 23:15:08 +0000
Subject: util.jid+tests: Add simple helpers... node(), host() and resource()
 for extracting specific parts of a JID

---
 tests/test_util_jid.lua | 70 +++++++++++++++++++++++++++++++++++++++++++++++++
 util/jid.lua            | 15 +++++++++++
 2 files changed, 85 insertions(+)

diff --git a/tests/test_util_jid.lua b/tests/test_util_jid.lua
index 02a90c3b..c697e63f 100644
--- a/tests/test_util_jid.lua
+++ b/tests/test_util_jid.lua
@@ -71,3 +71,73 @@ function compare(compare)
 	assert_equal(compare("user@other-host", "host"), false, "host should not match");
 	assert_equal(compare("user@other-host", "user@host"), false, "host should not match");
 end
+
+function node(node)
+	local function test(jid, expected_node)
+		assert_equal(node(jid), expected_node, "Unexpected node for "..tostring(jid));
+	end
+
+	test("example.com", nil);
+	test("foo.example.com", nil);
+	test("foo.example.com/resource", nil);
+	test("foo.example.com/some resource", nil);
+	test("foo.example.com/some@resource", nil);
+
+	test("foo@foo.example.com/some@resource", "foo");
+	test("foo@example/some@resource", "foo");
+
+	test("foo@example/@resource", "foo");
+	test("foo@example@resource", nil);
+	test("foo@example", "foo");
+	test("foo", nil);
+
+	test(nil, nil);
+end
+
+function host(host)
+	local function test(jid, expected_host)
+		assert_equal(host(jid), expected_host, "Unexpected host for "..tostring(jid));
+	end
+
+	test("example.com", "example.com");
+	test("foo.example.com", "foo.example.com");
+	test("foo.example.com/resource", "foo.example.com");
+	test("foo.example.com/some resource", "foo.example.com");
+	test("foo.example.com/some@resource", "foo.example.com");
+
+	test("foo@foo.example.com/some@resource", "foo.example.com");
+	test("foo@example/some@resource", "example");
+
+	test("foo@example/@resource", "example");
+	test("foo@example@resource", nil);
+	test("foo@example", "example");
+	test("foo", "foo");
+
+	test(nil, nil);
+end
+
+function resource(resource)
+	local function test(jid, expected_resource)
+		assert_equal(resource(jid), expected_resource, "Unexpected resource for "..tostring(jid));
+	end
+
+	test("example.com", nil);
+	test("foo.example.com", nil);
+	test("foo.example.com/resource", "resource");
+	test("foo.example.com/some resource", "some resource");
+	test("foo.example.com/some@resource", "some@resource");
+
+	test("foo@foo.example.com/some@resource", "some@resource");
+	test("foo@example/some@resource", "some@resource");
+
+	test("foo@example/@resource", "@resource");
+	test("foo@example@resource", nil);
+	test("foo@example", nil);
+	test("foo", nil);
+	test("/foo", nil);
+	test("@x/foo", nil);
+	test("@/foo", nil);
+
+	test(nil, nil);
+end
+
diff --git a/util/jid.lua b/util/jid.lua
index 76155ac7..60bb0829 100644
--- a/util/jid.lua
+++ b/util/jid.lua
@@ -93,6 +93,18 @@ local function compare(jid, acl)
 	return false
 end
 
+local function node(jid)
+	return (select(1, split(jid)));
+end
+
+local function host(jid)
+	return (select(2, split(jid)));
+end
+
+local function resource(jid)
+	return (select(3, split(jid)));
+end
+
 local function escape(s) return s and (s:gsub(".", escapes)); end
 local function unescape(s) return s and (s:gsub("\\%x%x", unescapes)); end
 
@@ -103,6 +115,9 @@ return {
 	join = join;
 	prep = prep;
 	compare = compare;
+	node = node;
+	host = host;
+	resource = resource;
 	escape = escape;
 	unescape = unescape;
 };
-- 
cgit v1.2.3


From 42f15c4eb2f1b52b886f70eefe9c89697e825529 Mon Sep 17 00:00:00 2001
From: Matthew Wild <mwild1@gmail.com>
Date: Fri, 18 Mar 2016 10:24:46 +0000
Subject: prosody, prosodyctl: Allow setting CFG_* variables via Lua
 interpreter before loading Prosody. Fixes #308.

---
 prosody    | 8 ++++----
 prosodyctl | 8 ++++----
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/prosody b/prosody
index 6a3b50db..9cc32cee 100755
--- a/prosody
+++ b/prosody
@@ -11,10 +11,10 @@
 
 -- Will be modified by configure script if run --
 
-CFG_SOURCEDIR=os.getenv("PROSODY_SRCDIR");
-CFG_CONFIGDIR=os.getenv("PROSODY_CFGDIR");
-CFG_PLUGINDIR=os.getenv("PROSODY_PLUGINDIR");
-CFG_DATADIR=os.getenv("PROSODY_DATADIR");
+CFG_SOURCEDIR=CFG_SOURCEDIR or os.getenv("PROSODY_SRCDIR");
+CFG_CONFIGDIR=CFG_CONFIGDIR or os.getenv("PROSODY_CFGDIR");
+CFG_PLUGINDIR=CFG_PLUGINDIR or os.getenv("PROSODY_PLUGINDIR");
+CFG_DATADIR=CFG_DATADIR or os.getenv("PROSODY_DATADIR");
 
 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
diff --git a/prosodyctl b/prosodyctl
index a7483456..7c8659fb 100755
--- a/prosodyctl
+++ b/prosodyctl
@@ -11,10 +11,10 @@
 
 -- Will be modified by configure script if run --
 
-CFG_SOURCEDIR=os.getenv("PROSODY_SRCDIR");
-CFG_CONFIGDIR=os.getenv("PROSODY_CFGDIR");
-CFG_PLUGINDIR=os.getenv("PROSODY_PLUGINDIR");
-CFG_DATADIR=os.getenv("PROSODY_DATADIR");
+CFG_SOURCEDIR=CFG_SOURCEDIR or os.getenv("PROSODY_SRCDIR");
+CFG_CONFIGDIR=CFG_CONFIGDIR or os.getenv("PROSODY_CFGDIR");
+CFG_PLUGINDIR=CFG_PLUGINDIR or os.getenv("PROSODY_PLUGINDIR");
+CFG_DATADIR=CFG_DATADIR or os.getenv("PROSODY_DATADIR");
 
 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
-- 
cgit v1.2.3