Added new ENV value ANSW_PROTOCOL. Now you can securely recognize user by his nick...
authorHarvie <tomas@mudrunka.cz>
Sun, 29 Aug 2010 01:22:14 +0000 (03:22 +0200)
committerHarvie <tomas@mudrunka.cz>
Sun, 29 Aug 2010 01:22:14 +0000 (03:22 +0200)
answerscripts.c
purple/answerscripts.d/00-debug.sh
purple/answerscripts.d/00-repeat.sh
purple/answerscripts.sh

index 44fa0c12ed20972d76c6ef6d6cfc369bd5051f3a..c26d37bc9cafaa8009c46f936e21cc37a517b3a4 100755 (executable)
@@ -8,10 +8,12 @@
 #define ANSWERSCRIPTS_TIMEOUT_INTERVAL 250
 #define ANSWERSCRIPTS_LINE_LENGTH 4096
 #define ENV_PREFIX "ANSW_"
+#define PROTOCOL_PREFIX "prpl-"
 
 #include <stdio.h>
 #include <stdlib.h>
 #include <errno.h>
+#include <string.h>
 
 #ifndef __WIN32__
        #include <fcntl.h>
@@ -63,6 +65,10 @@ static void received_im_msg_cb(PurpleAccount *account, char *who, char *buffer,
        //printf("\nHarvie received: %s: %s\n", who, message); //debug
        //purple_conv_im_send(purple_conversation_get_im_data(conv), ":-*"); //debug
 
+       //Get protocol ID
+       const char *protocol_id = purple_account_get_protocol_id(account);
+       if(!strncmp(protocol_id,PROTOCOL_PREFIX,strlen(PROTOCOL_PREFIX))) protocol_id += strlen(PROTOCOL_PREFIX); //trim out protocol prefix (eg.: "prpl-irc" => "irc")
+
        //Get status
        PurpleStatus *status = purple_account_get_active_status(account);
        PurpleStatusType *type = purple_status_get_type(status);
@@ -80,8 +86,9 @@ static void received_im_msg_cb(PurpleAccount *account, char *who, char *buffer,
        }
 
        //Export variables to environment
-       setenv(ENV_PREFIX "FROM", who, 1);
        setenv(ENV_PREFIX "MSG", message, 1);
+       setenv(ENV_PREFIX "FROM", who, 1);
+       setenv(ENV_PREFIX "PROTOCOL", protocol_id, 1);
        setenv(ENV_PREFIX "STATUS", status_id, 1);
        setenv(ENV_PREFIX "STATUS_MSG", status_msg, 1);
 
index ad2ddb75affc83c162e508a5295fcfe52f617992..5509b65a9efc0a5ce7bb779b58972ccae7383f9c 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh
 #Debug
-echo "<$ANSW_FROM> $ANSW_MSG" >&2;
+echo "<$ANSW_PROTOCOL/$ANSW_FROM> $ANSW_MSG" >&2;
 echo "($ANSW_STATUS: $ANSW_STATUS_MSG)" >&2;
index ffd2076654c31ef4e3ee2cd6ed15f4497815d9e5..af2520fda3fc6d31a8dc76fdbbf0470780cf58fa 100755 (executable)
@@ -1,3 +1,3 @@
 #!/bin/sh
 #Dumb libpurple core-answerscripts script. Hello world!
-echo "REPEAT:$ANSW_FROM> $ANSW_MSG";
+echo "REPEAT:$ANSW_PROTOCOL:$ANSW_FROM> $ANSW_MSG";
index dbcb548a4b74f971651b21022cc47adc154f9a00..4dc0e8abc244928a48f588e5b29803677b74d4b4 100755 (executable)
@@ -2,8 +2,9 @@
 
 #      This file is called for every message received by libpurple clients (pidgin,finch,...)
 #              - Following env values are passed to this script:
-#                      - ANSW_FROM     (who sent you message)
 #                      - ANSW_MSG      (text of the message)
+#                      - ANSW_FROM     (who sent you message)
+#                      - ANSW_PROTOCOL (protocol used to deliver the message. eg.: jabber, irc,...)
 #                      - ANSW_STATUS   (unique ID of status. eg.: available, away,...)
 #                      - ANSW_STATUS_MSG       (status message set by user)
 #              - WARNING: You should mind security (don't let attackers to execute their messages/nicks!)
This page took 0.144443 seconds and 4 git commands to generate.