xsasl save/load more or less works, need to get rid of lists

This commit is contained in:
Berke Viktor 2012-01-10 05:22:58 +01:00
parent 66d8b0ad7b
commit 1cbe3789da
1 changed files with 33 additions and 5 deletions

View File

@ -20,7 +20,7 @@
#define PNAME "XSASL" #define PNAME "XSASL"
#define PDESC "SASL authentication plugin"; #define PDESC "SASL authentication plugin";
#define PVERSION "0.0.4" #define PVERSION "1.0"
static xchat_plugin *ph; /* plugin handle */ static xchat_plugin *ph; /* plugin handle */
@ -40,6 +40,7 @@ sasl_info* all_info = NULL;
static void add_info(char const* login, char const* password, char const* network) static void add_info(char const* login, char const* password, char const* network)
{ {
char buffer[512];
sasl_info* prev = all_info; sasl_info* prev = all_info;
sasl_info* info = (sasl_info*)malloc(sizeof(sasl_info)); sasl_info* info = (sasl_info*)malloc(sizeof(sasl_info));
@ -49,16 +50,43 @@ static void add_info(char const* login, char const* password, char const* networ
info->next = prev; info->next = prev;
all_info = info; all_info = info;
sprintf (buffer, "%s:%s", login, password);
xchat_set_pluginpref_str (ph, network, buffer);
} }
static sasl_info* find_info(char const* network) static sasl_info* find_info(char const* network)
{ {
sasl_info* cur = all_info; //sasl_info* cur;
sasl_info* cur = (sasl_info*)malloc(sizeof(sasl_info));
char buffer[512];
char* pos;
char* token;
// DEBUG
if (xchat_get_pluginpref_str (ph, network, buffer))
{
cur->network = strdup (network);
//pos = strchr (buffer, ':');
//cur->login = g_strndup (buffer, pos-buffer);
token = strtok (buffer, ":");
cur->login = g_strdup (token);
token = strtok (NULL, ":");
cur->password = g_strdup (token);
//xchat_printf (ph, "network: %s\n", cur->network);
//xchat_printf (ph, "login: %s\n", cur->login);
//xchat_printf (ph, "password: %s\n", cur->password);
cur->next = NULL;
return cur;
}
#if 0
cur = all_info;
while (cur) while (cur)
{ {
if (0 == strcmp(cur->network, network)) return cur; if (0 == strcmp(cur->network, network)) return cur;
cur = cur->next; cur = cur->next;
} }
#endif
return NULL; return NULL;
} }
@ -142,7 +170,7 @@ static int sasl_cmd_cb(char *word[], char *word_eol[], void *userdata)
sasl_info *cur = all_info; sasl_info *cur = all_info;
if (NULL == cur) if (NULL == cur)
{ {
xchat_printf(ph,"Nothing, see /help sasl"); xchat_printf(ph,"Nothing, see /HELP XSASL");
return XCHAT_EAT_ALL; return XCHAT_EAT_ALL;
} }
@ -156,7 +184,7 @@ static int sasl_cmd_cb(char *word[], char *word_eol[], void *userdata)
if (!login || !password || !network || !*login || !*password || !*network) if (!login || !password || !network || !*login || !*password || !*network)
{ {
xchat_printf(ph,"Wrong usage, try /help sasl"); xchat_printf(ph,"Wrong usage, try /HELP XSASL");
return XCHAT_EAT_ALL; return XCHAT_EAT_ALL;
} }
@ -192,7 +220,7 @@ int xchat_plugin_init(xchat_plugin *plugin_handle,
*plugin_desc = PDESC; *plugin_desc = PDESC;
*plugin_version = PVERSION; *plugin_version = PVERSION;
xchat_hook_command(ph, "sasl", XCHAT_PRI_NORM, sasl_cmd_cb, xchat_hook_command(ph, "xsasl", XCHAT_PRI_NORM, sasl_cmd_cb,
"Usage: SASL <login> <password> <network>, enable SASL authentication for given network", 0); "Usage: SASL <login> <password> <network>, enable SASL authentication for given network", 0);
xchat_hook_print(ph, "Connected", XCHAT_PRI_NORM, connect_cb, NULL); xchat_hook_print(ph, "Connected", XCHAT_PRI_NORM, connect_cb, NULL);