diff options
-rw-r--r-- | Makefile | 27 | ||||
-rwxr-xr-x | configure | 18 | ||||
-rwxr-xr-x | prosody | 42 | ||||
-rw-r--r-- | util-src/Makefile | 4 |
4 files changed, 65 insertions, 26 deletions
@@ -6,16 +6,18 @@ CONFIG = $(DESTDIR)$(SYSCONFDIR) MODULES = $(DESTDIR)$(PREFIX)/lib/prosody/modules SOURCE = $(DESTDIR)$(PREFIX)/lib/prosody +DATADIR?=data + INSTALLEDSOURCE = $(PREFIX)/lib/prosody INSTALLEDCONFIG = $(SYSCONFDIR) INSTALLEDMODULES = $(PREFIX)/lib/prosody/modules +INSTALLEDDATA = $(DATADIR) - -all: +all: prosody.install prosody.cfg.lua.install $(MAKE) all -C util-src -install: prosody.install prosody.cfg.lua util/encodings.so util/encodings.so - install -d $(BIN) $(CONFIG) $(MODULES) $(SOURCE) +install: prosody.install prosody.cfg.lua.install util/encodings.so util/encodings.so + install -d $(BIN) $(CONFIG) $(MODULES) $(SOURCE) $(DATADIR) install -d $(CONFIG)/certs install -d $(SOURCE)/core $(SOURCE)/net $(SOURCE)/util install ./prosody.install $(BIN)/prosody @@ -25,12 +27,12 @@ install: prosody.install prosody.cfg.lua util/encodings.so util/encodings.so install -m644 plugins/* $(MODULES) install -m644 certs/* $(CONFIG)/certs install -m644 plugins/* $(MODULES) - install -m644 prosody.cfg.lua $(CONFIG)/prosody.cfg.lua + test -e $(CONFIG)/prosody.cfg.lua || install -m644 prosody.cfg.lua.install $(CONFIG)/prosody.cfg.lua $(MAKE) install -C util-src clean: rm -f prosody.install - rm -f prosody.cfg.lua + rm -f prosody.cfg.lua.install $(MAKE) clean -C util-src util/encodings.so: @@ -40,8 +42,13 @@ util/hashes.so: $(MAKE) install -C util-src prosody.install: prosody - sed "s|^CFG_SOURCEDIR=.*;$$|CFG_SOURCEDIR='$(INSTALLEDSOURCE)';|;s|^CFG_CONFIGDIR=.*;$$|CFG_CONFIGDIR='$(INSTALLEDCONFIG)';|;s|^CFG_PLUGINDIR=.*;$$|CFG_PLUGINDIR='$(INSTALLEDMODULES)/';|;" prosody > prosody.install - -prosody.cfg.lua: - sed 's|certs/|$(INSTALLEDCONFIG)/certs/|' prosody.cfg.lua.dist > prosody.cfg.lua + cp prosody prosody.install + sed -i "s|^CFG_SOURCEDIR=.*;$$|CFG_SOURCEDIR='$(INSTALLEDSOURCE)';|;" prosody.install + sed -i "s|^CFG_CONFIGDIR=.*;$$|CFG_CONFIGDIR='$(INSTALLEDCONFIG)';|;" prosody.install + sed -i "s|^CFG_DATADIR=.*;$$|CFG_DATADIR='$(INSTALLEDDATA)';|;" prosody.install + # The trailing slash is intentional in this one + sed -i "s|^CFG_PLUGINDIR=.*;$$|CFG_PLUGINDIR='$(INSTALLEDMODULES)/';|;" prosody.install + +prosody.cfg.lua.install: + sed 's|certs/|$(INSTALLEDCONFIG)/certs/|' prosody.cfg.lua.dist > prosody.cfg.lua.install @@ -4,13 +4,14 @@ PREFIX=/usr/local SYSCONFDIR="$PREFIX/etc/prosody" +DATADIR="$PREFIX/var/lib/prosody" LUA_SUFFIX="" LUA_DIR="/usr" LUA_BINDIR="/usr/bin" LUA_INCDIR="/usr/include" LUA_LIBDIR="/usr/lib" IDN_LIB=idn -OPENSSL_LIB=ssl +OPENSSL_LIB=crypto # Help @@ -23,6 +24,8 @@ Configure Prosody prior to building. Default is $PREFIX --sysconfdir=DIR Location where the config file should be installed. Default is \$PREFIX/etc/prosody +--datadir=DIR Location where the server data should be stored. + Default is \$PREFIX/var/lib/prosody --lua-suffix=SUFFIX Versioning suffix to use in Lua filenames. Default is "$LUA_SUFFIX" (lua$LUA_SUFFIX...) --with-lua=PREFIX Use Lua from given prefix. @@ -60,6 +63,10 @@ do PREFIX="$value" PREFIX_SET=yes ;; + --data-dir=*) + DATADIR="$value" + DATADIR_SET=yes + ;; --require-config) REQUIRE_CONFIG=yes ;; @@ -100,6 +107,14 @@ then fi fi +if [ "$PREFIX_SET" = "yes" -a ! "$DATADIR_SET" = "yes" ] +then + if [ "$PREFIX" = "/usr" ] + then DATADIR=/var/lib/prosody + else DATADIR=$PREFIX/var/lib/prosody + fi +fi + find_program() { path="$PATH" item="`echo "$path" | sed 's/\([^:]*\):.*/\1/'`" @@ -221,6 +236,7 @@ cat <<EOF > config.unix PREFIX=$PREFIX SYSCONFDIR=$SYSCONFDIR +DATADIR=$DATADIR LUA_SUFFIX=$LUA_SUFFIX LUA_DIR=$LUA_DIR LUA_INCDIR=$LUA_INCDIR @@ -5,28 +5,20 @@ CFG_SOURCEDIR=nil; CFG_CONFIGDIR=nil; CFG_PLUGINDIR=nil; +CFG_DATADIR=nil; -- -- -- -- -- -- if CFG_SOURCEDIR then - if os.getenv("HOME") then - CFG_SOURCEDIR = CFG_SOURCEDIR:gsub("^~", os.getenv("HOME")); - end package.path = CFG_SOURCEDIR.."/?.lua;"..package.path package.cpath = CFG_SOURCEDIR.."/?.so;"..package.cpath end -if CFG_CONFIGDIR then - if os.getenv("HOME") then - CFG_CONFIGDIR = CFG_CONFIGDIR:gsub("^~", os.getenv("HOME")); - end -end - -if CFG_PLUGINDIR then +if CFG_DATADIR then if os.getenv("HOME") then - CFG_PLUGINDIR = CFG_PLUGINDIR:gsub("^~", os.getenv("HOME")); + CFG_DATADIR = CFG_DATADIR:gsub("^~", os.getenv("HOME")); end -end +end -- Required to be able to find packages installed with luarocks pcall(require, "luarocks.require") @@ -56,7 +48,30 @@ do end end -require "util.datamanager".set_data_path(config.get("*", "core", "data_path") or "data"); +local data_path = config.get("*", "core", "data_path") or CFG_DATADIR or "data"; +local path_separator = "/"; if os.getenv("WINDIR") then path_separator = "\\" end +local _mkdir = {} +function mkdir(path) + path = path:gsub("/", path_separator); + --print("mkdir",path); + local x = io.popen("mkdir "..path.." 2>&1"):read("*a"); +end +function encode(s) return s and (s:gsub("%W", function (c) return string.format("%%%x", c:byte()); end)); end +function mkdirs(host) + if not _mkdir[host] then + local host_dir = string.format("%s/%s", data_path, encode(host)); + mkdir(host_dir); + mkdir(host_dir.."/accounts"); + mkdir(host_dir.."/vcard"); + mkdir(host_dir.."/roster"); + mkdir(host_dir.."/private"); + mkdir(host_dir.."/offline"); + _mkdir[host] = true; + end +end +mkdir(data_path); + +require "util.datamanager".set_data_path(data_path); local server = require "net.server" @@ -71,6 +86,7 @@ local defined_hosts = config.getconfig(); for host, host_config in pairs(defined_hosts) do if host ~= "*" and (host_config.core.enabled == nil or host_config.core.enabled) then hosts[host] = {type = "local", connected = true, sessions = {}, host = host, s2sout = {} }; + mkdirs(host); end end diff --git a/util-src/Makefile b/util-src/Makefile index 90e80aea..8b886a1f 100644 --- a/util-src/Makefile +++ b/util-src/Makefile @@ -21,8 +21,8 @@ clean: rm -f ../util/*.so encodings.so: encodings.c - gcc -shared encodings.c -I$(LUA_INCDIR) -l$(LUA_LIB) -l$(IDN_LIB) -o encodings.so + gcc -shared -fPIC encodings.c -I$(LUA_INCDIR) -l$(LUA_LIB) -l$(IDN_LIB) -o encodings.so hashes.so: hashes.c - gcc -shared hashes.c -I$(LUA_INCDIR) -l$(LUA_LIB) -l$(OPENSSL_LIB) -o hashes.so + gcc -shared -fPIC hashes.c -I$(LUA_INCDIR) -l$(LUA_LIB) -l$(OPENSSL_LIB) -o hashes.so |