changeset 197:2686221255cf

restart authorize command if crashed or ended; added example shell script
author Bjoern Kalkbrenner <terminar@cyberphoria.org>
date Wed, 07 Jul 2010 13:27:46 +0200
parents a1c2677257da
children a3b5810de3e4
files mod_auth_external/authorize_example.sh mod_auth_external/mod_auth_external.lua
diffstat 2 files changed, 33 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_auth_external/authorize_example.sh	Wed Jul 07 13:27:46 2010 +0200
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+IFS=":"
+AUTH_OK=1
+AUTH_FAILED=0
+LOGFILE="/var/log/prosody/auth.log"
+USELOG=true
+
+while read ACTION USER HOST PASS ; do
+
+    [ $USELOG == true ] && { echo "Date: $(date) Action: $ACTION User: $USER Host: $HOST Pass: $PASS" >> $LOGFILE; }
+
+    case $ACTION in
+	"auth")
+	    if [ $USER == "someone" ] ; then
+        	echo $AUTH_OK
+            else
+		echo $AUTH_FAILED
+	    fi
+	;;
+	*)
+	    echo $AUTH_FAILED
+	;;
+    esac
+
+done
--- a/mod_auth_external/mod_auth_external.lua	Wed Jul 07 17:31:31 2010 +0800
+++ b/mod_auth_external/mod_auth_external.lua	Wed Jul 07 13:27:46 2010 +0200
@@ -30,10 +30,14 @@
 local pid;
 local readfile;
 local writefile;
+
 local function send_query(text)
-	-- if not proc then
+	if pid and lpc.wait(pid,1) ~= nil then
+    	    log("debug","error, process died, force reopen");
+	    pid=nil;
+	end
 	if not pid then
-		log("debug", "Opening process");
+		log("debug", "Opening process " .. command);
 		-- proc = process.popen(command);
 		pid, writefile, readfile = lpc.run(command);
 	end
@@ -44,6 +48,7 @@
 	end
 	-- proc:write(text);
 	-- proc:flush();
+
 	writefile:write(text);
 	writefile:flush();
 	if script_type == "ejabberd" then