Added list_vars.sh to easily enumerate exported variables from source
authorHarvie <tomas@mudrunka.cz>
Mon, 21 Feb 2011 03:39:34 +0000 (04:39 +0100)
committerHarvie <tomas@mudrunka.cz>
Mon, 21 Feb 2011 03:39:34 +0000 (04:39 +0100)
README.md
answerscripts.c
list_vars.sh [new file with mode: 0755]

index 7394257..5d5856b 100644 (file)
--- a/README.md
+++ b/README.md
@@ -27,11 +27,21 @@ There are lot of hacks that you can do with this simple framework if you know so
     * Every line that is outputed by this script to it's **STDOUT is sent** as response to message that executed it
     * Following **environment values are passed** to the script:
       * ANSW\_MSG      (text of the message)
-      * ANSW\_FROM     (who sent you message)
-      * ANSW\_FROM_GROUP       (group which contains that buddy)
-      * ANSW\_PROTOCOL (protocol used to deliver the message. eg.: jabber, irc,...)
+      * ANSW\_FROM     (who sent you the message)
+      * ANSW\_FROM\_GROUP      (group which contains that buddy - buggy)
+      * ANSW\_PROTOCOL (protocol used to deliver the message. eg.: xmpp, irc,...)
       * ANSW\_STATUS   (unique ID of status. eg.: available, away,...)
       * ANSW\_STATUS\_MSG      (status message set by user)
+      * ANSW\_AGENT    (ID of IM client used with answerscripts)
+      * ANSW\_AGENT\_VERSION   (Version of client)
+      * ANSW\_LOCAL\_NAME      (Name of local user - untested)
+      * ANSW\_LOCAL\_ALIAS     (Alias of local user - untested)
+      * ANSW\_REMOTE\_NAME     (???)
+      * ANSW\_REMOTE\_ALIAS\_ONLY      (buggy)
+      * ANSW\_REMOTE\_SERVER\_ALIAS    (buggy)
+      * ANSW\_REMOTE\_CONTACT\_ALIAS   (buggy)
+      * ANSW\_REMOTE\_LOCAL\_ALIAS     (???)
+      * ANSW\_REMOTE\_ALIAS    (???)
     * **WARNING: You should mind security (don't let attackers to execute their messages/nicks!)**
     * I guess that you will want to use more than one answerscript, so i made such answerscript which will execute all answerscripts in **~/.purple/answerscripts.d**
       * It's quite smart and all you need to do is set the filenames and permissions of answerscripts in that directory properly...
index d561c37..071ef97 100755 (executable)
@@ -71,8 +71,8 @@ static void received_im_msg_cb(PurpleAccount *account, char *who, char *buffer,
        //LOCAL USER:
        const char* local_alias = purple_account_get_alias(account);
        const char* local_name = (char *) purple_account_get_name_for_display(account);
-       setenv(ENV_PREFIX "LOCAL_NAME", local_name, 1);
-       setenv(ENV_PREFIX "LOCAL_ALIAS", local_alias, 1);
+       setenv(ENV_PREFIX "LOCAL_NAME", local_name, 1); //Name of local user - untested
+       setenv(ENV_PREFIX "LOCAL_ALIAS", local_alias, 1);       //Alias of local user - untested
 
        //REMOTE USER (Buddy):
        //const char *  purple_contact_get_alias (PurpleContact *contact)
@@ -82,12 +82,12 @@ static void received_im_msg_cb(PurpleAccount *account, char *who, char *buffer,
        const char* remote_contact_alias = purple_buddy_get_contact_alias(buddy);
        const char* remote_local_alias = purple_buddy_get_local_alias(buddy);
        const char* remote_alias = purple_buddy_get_alias(buddy);
-       setenv(ENV_PREFIX "REMOTE_NAME", remote_name, 1);
-       setenv(ENV_PREFIX "REMOTE_ALIAS_ONLY", remote_alias_only, 1);
-       setenv(ENV_PREFIX "REMOTE_SERVER_ALIAS", remote_server_alias, 1);
-       setenv(ENV_PREFIX "REMOTE_CONTACT_ALIAS", remote_contact_alias, 1);
-       setenv(ENV_PREFIX "REMOTE_LOCAL_ALIAS", remote_local_alias, 1);
-       setenv(ENV_PREFIX "REMOTE_ALIAS", remote_alias, 1);
+       setenv(ENV_PREFIX "REMOTE_NAME", remote_name, 1);       //???
+       setenv(ENV_PREFIX "REMOTE_ALIAS_ONLY", remote_alias_only, 1);   //buggy
+       setenv(ENV_PREFIX "REMOTE_SERVER_ALIAS", remote_server_alias, 1);       //buggy
+       setenv(ENV_PREFIX "REMOTE_CONTACT_ALIAS", remote_contact_alias, 1);     //buggy
+       setenv(ENV_PREFIX "REMOTE_LOCAL_ALIAS", remote_local_alias, 1); //???
+       setenv(ENV_PREFIX "REMOTE_ALIAS", remote_alias, 1);     //???
 
        //Get buddy group
        const char *from_group = purple_group_get_name(purple_buddy_get_group(buddy)); //FIXME: purple_group_get_name() returns "\x18" (or random data!) when user does not belong to some group
@@ -113,12 +113,12 @@ static void received_im_msg_cb(PurpleAccount *account, char *who, char *buffer,
        }
 
        //Export variables to environment
-       setenv(ENV_PREFIX "MSG", message, 1);
-       setenv(ENV_PREFIX "FROM", who, 1);
-       setenv(ENV_PREFIX "FROM_GROUP", from_group, 1);
-       setenv(ENV_PREFIX "PROTOCOL", protocol_id, 1);
-       setenv(ENV_PREFIX "STATUS", status_id, 1);
-       setenv(ENV_PREFIX "STATUS_MSG", status_msg, 1);
+       setenv(ENV_PREFIX "MSG", message, 1);   //text of the message
+       setenv(ENV_PREFIX "FROM", who, 1);      //who sent you the message
+       setenv(ENV_PREFIX "FROM_GROUP", from_group, 1); //group which contains that buddy - buggy
+       setenv(ENV_PREFIX "PROTOCOL", protocol_id, 1);  //protocol used to deliver the message. eg.: xmpp, irc,...
+       setenv(ENV_PREFIX "STATUS", status_id, 1);      //unique ID of status. eg.: available, away,...
+       setenv(ENV_PREFIX "STATUS_MSG", status_msg, 1); //status message set by user
 
        //Launch job on background
        answerscripts_job *job = (answerscripts_job*) malloc(sizeof(answerscripts_job));
@@ -195,8 +195,8 @@ static PurplePluginInfo info = {
 
 static void init_plugin(PurplePlugin * plugin) {
        //Export static environment variables
-       setenv(ENV_PREFIX "AGENT", (char *) purple_core_get_ui(), 1);
-       setenv(ENV_PREFIX "AGENT_VERSION", (char *) purple_core_get_version(), 1);
+       setenv(ENV_PREFIX "AGENT", (char *) purple_core_get_ui(), 1);   //ID of IM client used with answerscripts
+       setenv(ENV_PREFIX "AGENT_VERSION", (char *) purple_core_get_version(), 1);      //Version of client
 }
 
 PURPLE_INIT_PLUGIN(autoanswer, init_plugin, info)
diff --git a/list_vars.sh b/list_vars.sh
new file mode 100755 (executable)
index 0000000..41e633c
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/bash
+file='answerscripts.c'
+pipe=cat
+[ -n "$1" ] && pipe='sed -e s/_/\\_/g'
+pre="$(grep ENV_PREFIX "$file" | head -n 1 | cut -d '"' -f 2)"
+grep setenv "$file" | while read line; do
+  var="$(echo "$line" | cut -d '"' -f 2)";
+  wtf="$(echo "$line" | cut -d ';' -f 2 | cut -d '/' -f 3-)";
+       echo -n "$1* $pre$var";
+       [ -n "$wtf" ] && echo -e "\t($wtf)" || echo
+done | $pipe
This page took 0.140756 seconds and 4 git commands to generate.