src/protocols/silc/silc.c

Thu, 07 Apr 2005 14:55:02 +0000

author
Richard Laager <rlaager@pidgin.im>
date
Thu, 07 Apr 2005 14:55:02 +0000
changeset 10789
cabd145237d8
parent 10751
e15f4f5927ce
child 10801
b5f44181183f
permissions
-rw-r--r--

[gaim-migrate @ 12431]
" The following log snippets should explain it: " --rlaager

(20:24:00) rlaager: Regarding the signal handling
conversation the other day... I've written a patch to stop
calling signal handlers and return as soon as we find one
signal handler that returns TRUE to indicate that it's
handled the signal. Is this the right approach?

(20:24:22) Ethan Blanton (Paco-Paco): the trouble is that it's
documented to behave exactly the way it does
(20:24:31) Ethan Blanton (Paco-Paco): so changing it is
notbackwards compatible
(20:24:31) rlaager: I'm talking for HEAD.
(20:24:41) Ethan Blanton (Paco-Paco): oh, I think that's a
good approach, yes
(20:24:53) rlaager: The way I've described is how I
*expected* it to work, having not read the documentation.
(20:25:09) Ethan Blanton (Paco-Paco): I'm convinced
(20:27:04) Stu Tomlinson (nosnilmot): rlaager: this, I
assume, breaks the generic-ness of signals, by assuming
that any that return values return booleans?
(20:27:26) Ethan Blanton (Paco-Paco): please break it
(20:27:33) Ethan Blanton (Paco-Paco): we already have
out-parameters
(20:27:42) rlaager: nosnilmot: from what I can see, the
return type is handled as a (void *)... so I'm checking that
ret_value != NULL
(20:27:57) rlaager: nosnilmot: that's the correct way to do it,
right?
...
(20:29:01) Ethan Blanton (Paco-Paco): allowing a
meaningful return value is an over-engineering
(20:30:07) rlaager: even after this patch, you should be able
to return meaningful return values
(20:30:15) rlaager: it'll just short-circuit on the first handler
that does

committer: Luke Schierer <lschiere@pidgin.im>

8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1 /*
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
3 silcgaim.c
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
4
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
5 Author: Pekka Riikonen <priikone@silcnet.org>
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
6
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
7 Copyright (C) 2004 Pekka Riikonen
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
8
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
9 This program is free software; you can redistribute it and/or modify
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
10 it under the terms of the GNU General Public License as published by
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
11 the Free Software Foundation; version 2 of the License.
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
12
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
13 This program is distributed in the hope that it will be useful,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
16 GNU General Public License for more details.
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
17
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
18 */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
19
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
20 #include "silcincludes.h"
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
21 #include "silcclient.h"
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
22 #include "silcgaim.h"
9943
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9917
diff changeset
23 #include "version.h"
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
24
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
25 extern SilcClientOperations ops;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
26 static GaimPlugin *silc_plugin = NULL;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
27
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
28 static const char *
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
29 silcgaim_list_icon(GaimAccount *a, GaimBuddy *b)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
30 {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
31 return (const char *)"silc";
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
32 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
33
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
34 static void
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
35 silcgaim_list_emblems(GaimBuddy *b, const char **se, const char **sw,
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
36 const char **nw, const char **ne)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
37 {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
38 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
39
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
40 static GList *
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
41 silcgaim_away_states(GaimAccount *account)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
42 {
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
43 GaimStatusType *type;
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
44 GList *types = NULL;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
45
10050
78e480f768f2 [gaim-migrate @ 11011]
Dave West <kat@users.sourceforge.net>
parents: 9968
diff changeset
46 type = gaim_status_type_new(GAIM_STATUS_OFFLINE, SILCGAIM_STATUS_ID_OFFLINE, _("Offline"), FALSE);
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
47 types = g_list_append(types, type);
10050
78e480f768f2 [gaim-migrate @ 11011]
Dave West <kat@users.sourceforge.net>
parents: 9968
diff changeset
48 type = gaim_status_type_new(GAIM_STATUS_ONLINE, SILCGAIM_STATUS_ID_ONLINE, _("Online"), FALSE);
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
49 types = g_list_append(types, type);
10050
78e480f768f2 [gaim-migrate @ 11011]
Dave West <kat@users.sourceforge.net>
parents: 9968
diff changeset
50 type = gaim_status_type_new_full(GAIM_STATUS_AVAILABLE, SILCGAIM_STATUS_ID_HYPER, _("Hyper Active"), FALSE, TRUE, FALSE);
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
51 types = g_list_append(types, type);
10050
78e480f768f2 [gaim-migrate @ 11011]
Dave West <kat@users.sourceforge.net>
parents: 9968
diff changeset
52 type = gaim_status_type_new_full(GAIM_STATUS_AWAY, SILCGAIM_STATUS_ID_AWAY, _("Away"), FALSE, TRUE, FALSE);
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
53 types = g_list_append(types, type);
10050
78e480f768f2 [gaim-migrate @ 11011]
Dave West <kat@users.sourceforge.net>
parents: 9968
diff changeset
54 type = gaim_status_type_new_full(GAIM_STATUS_AWAY, SILCGAIM_STATUS_ID_BUSY, _("Busy"), FALSE, TRUE, FALSE);
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
55 types = g_list_append(types, type);
10050
78e480f768f2 [gaim-migrate @ 11011]
Dave West <kat@users.sourceforge.net>
parents: 9968
diff changeset
56 type = gaim_status_type_new_full(GAIM_STATUS_AWAY, SILCGAIM_STATUS_ID_INDISPOSED, _("Indisposed"), FALSE, TRUE, FALSE);
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
57 types = g_list_append(types, type);
10050
78e480f768f2 [gaim-migrate @ 11011]
Dave West <kat@users.sourceforge.net>
parents: 9968
diff changeset
58 type = gaim_status_type_new_full(GAIM_STATUS_AWAY, SILCGAIM_STATUS_ID_PAGE, _("Wake Me Up"), FALSE, TRUE, FALSE);
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
59 types = g_list_append(types, type);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
60
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
61 return types;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
62 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
63
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
64 static void
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
65 silcgaim_set_status(GaimAccount *account, GaimStatus *status)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
66 {
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
67 GaimConnection *gc = gaim_account_get_connection(account);
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10050
diff changeset
68 SilcGaim sg;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
69 SilcUInt32 mode;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
70 SilcBuffer idp;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
71 unsigned char mb[4];
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
72 const char *state;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
73
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10050
diff changeset
74 g_return_if_fail(gc != NULL);
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10050
diff changeset
75
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10050
diff changeset
76 sg = gc->proto_data;
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10050
diff changeset
77
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
78 if ((status == NULL) || (sg->conn == NULL))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
79 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
80
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
81 mode = sg->conn->local_entry->mode;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
82 mode &= ~(SILC_UMODE_GONE |
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
83 SILC_UMODE_HYPER |
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
84 SILC_UMODE_BUSY |
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
85 SILC_UMODE_INDISPOSED |
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
86 SILC_UMODE_PAGE);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
87
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
88 state = gaim_status_get_id(status);
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
89
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
90 if (state == NULL)
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
91 return;
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
92
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
93 if (!strcmp(state, "hyper"))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
94 mode |= SILC_UMODE_HYPER;
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
95 else if (!strcmp(state, "away"))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
96 mode |= SILC_UMODE_GONE;
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
97 else if (!strcmp(state, "busy"))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
98 mode |= SILC_UMODE_BUSY;
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
99 else if (!strcmp(state, "indisposed"))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
100 mode |= SILC_UMODE_INDISPOSED;
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
101 else if (!strcmp(state, "page"))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
102 mode |= SILC_UMODE_PAGE;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
103
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
104 /* Send UMODE */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
105 idp = silc_id_payload_encode(sg->conn->local_id, SILC_ID_CLIENT);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
106 SILC_PUT32_MSB(mode, mb);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
107 silc_client_command_send(sg->client, sg->conn, SILC_COMMAND_UMODE,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
108 ++sg->conn->cmd_ident, 2,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
109 1, idp->data, idp->len,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
110 2, mb, sizeof(mb));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
111 silc_buffer_free(idp);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
112 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
113
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
114
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
115 /*************************** Connection Routines *****************************/
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
116
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
117 static void
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
118 silcgaim_keepalive(GaimConnection *gc)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
119 {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
120 SilcGaim sg = gc->proto_data;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
121 silc_client_send_packet(sg->client, sg->conn, SILC_PACKET_HEARTBEAT,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
122 NULL, 0);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
123 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
124
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
125 static int
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
126 silcgaim_scheduler(gpointer *context)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
127 {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
128 SilcGaim sg = (SilcGaim)context;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
129 silc_client_run_one(sg->client);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
130 return 1;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
131 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
132
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
133 static void
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
134 silcgaim_nickname_parse(const char *nickname,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
135 char **ret_nickname)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
136 {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
137 silc_parse_userfqdn(nickname, ret_nickname, NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
138 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
139
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
140 static void
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
141 silcgaim_login_connected(gpointer data, gint source, GaimInputCondition cond)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
142 {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
143 GaimConnection *gc = data;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
144 SilcGaim sg = gc->proto_data;
9732
644615310076 [gaim-migrate @ 10593]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9597
diff changeset
145 SilcClient client;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
146 SilcClientConnection conn;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
147 GaimAccount *account = sg->account;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
148 SilcClientConnectionParams params;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
149 const char *dfile;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
150
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
151 if (source < 0) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
152 gaim_connection_error(gc, _("Connection failed"));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
153 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
154 }
9732
644615310076 [gaim-migrate @ 10593]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9597
diff changeset
155
644615310076 [gaim-migrate @ 10593]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9597
diff changeset
156 if (sg == NULL)
644615310076 [gaim-migrate @ 10593]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9597
diff changeset
157 return;
644615310076 [gaim-migrate @ 10593]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9597
diff changeset
158
644615310076 [gaim-migrate @ 10593]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9597
diff changeset
159 client = sg->client;
644615310076 [gaim-migrate @ 10593]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9597
diff changeset
160
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
161 if (!g_list_find(gaim_connections_get_all(), gc)) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
162 close(source);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
163 g_source_remove(sg->scheduler);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
164 silc_client_stop(sg->client);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
165 silc_client_free(sg->client);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
166 silc_free(sg);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
167 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
168 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
169
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
170 /* Get session detachment data, if available */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
171 memset(&params, 0, sizeof(params));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
172 dfile = silcgaim_session_file(gaim_account_get_username(sg->account));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
173 params.detach_data = silc_file_readfile(dfile, &params.detach_data_len);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
174 if (params.detach_data)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
175 params.detach_data[params.detach_data_len] = 0;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
176
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
177 /* Add connection to SILC client library */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
178 conn = silc_client_add_connection(
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
179 sg->client, &params,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
180 (char *)gaim_account_get_string(account, "server",
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
181 "silc.silcnet.org"),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
182 gaim_account_get_int(account, "port", 706), sg);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
183 if (!conn) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
184 gaim_connection_error(gc, _("Cannot initialize SILC Client connection"));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
185 gc->proto_data = NULL;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
186 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
187 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
188 sg->conn = conn;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
189
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
190 /* Progress */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
191 if (params.detach_data) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
192 gaim_connection_update_progress(gc, _("Resuming session"), 2, 5);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
193 sg->resuming = TRUE;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
194 } else {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
195 gaim_connection_update_progress(gc, _("Performing key exchange"), 2, 5);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
196 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
197
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
198 /* Perform SILC Key Exchange. The "silc_connected" will be called
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
199 eventually. */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
200 silc_client_start_key_exchange(sg->client, sg->conn, source);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
201
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
202 /* Set default attributes */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
203 if (!gaim_account_get_bool(account, "reject-attrs", FALSE)) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
204 SilcUInt32 mask;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
205 const char *tmp;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
206 #ifdef HAVE_SYS_UTSNAME_H
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
207 struct utsname u;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
208 #endif
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
209
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
210 mask = SILC_ATTRIBUTE_MOOD_NORMAL;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
211 silc_client_attribute_add(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
212 SILC_ATTRIBUTE_STATUS_MOOD,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
213 SILC_32_TO_PTR(mask),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
214 sizeof(SilcUInt32));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
215 mask = SILC_ATTRIBUTE_CONTACT_CHAT;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
216 silc_client_attribute_add(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
217 SILC_ATTRIBUTE_PREFERRED_CONTACT,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
218 SILC_32_TO_PTR(mask),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
219 sizeof(SilcUInt32));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
220 #ifdef HAVE_SYS_UTSNAME_H
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
221 if (!uname(&u)) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
222 SilcAttributeObjDevice dev;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
223 memset(&dev, 0, sizeof(dev));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
224 dev.type = SILC_ATTRIBUTE_DEVICE_COMPUTER;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
225 dev.version = u.release;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
226 dev.model = u.sysname;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
227 silc_client_attribute_add(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
228 SILC_ATTRIBUTE_DEVICE_INFO,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
229 (void *)&dev, sizeof(dev));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
230 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
231 #endif
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
232 #ifdef _WIN32
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
233 tmp = _tzname[0];
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
234 #else
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
235 tmp = tzname[0];
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
236 #endif
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
237 silc_client_attribute_add(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
238 SILC_ATTRIBUTE_TIMEZONE,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
239 (void *)tmp, strlen(tmp));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
240 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
241
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
242 silc_free(params.detach_data);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
243 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
244
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
245 static void
10401
51ae616ff395 [gaim-migrate @ 11638]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10341
diff changeset
246 silcgaim_login(GaimAccount *account, GaimStatus *status)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
247 {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
248 SilcGaim sg;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
249 SilcClient client;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
250 SilcClientParams params;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
251 GaimConnection *gc;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
252
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
253 gc = account->gc;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
254 if (!gc)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
255 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
256 gc->proto_data = NULL;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
257
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
258 memset(&params, 0, sizeof(params));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
259 strcat(params.nickname_format, "%n@%h%a");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
260 params.nickname_parse = silcgaim_nickname_parse;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
261 params.ignore_requested_attributes =
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
262 gaim_account_get_bool(account, "reject-attrs", FALSE);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
263
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
264 /* Allocate SILC client */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
265 client = silc_client_alloc(&ops, &params, gc, NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
266 if (!client) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
267 gaim_connection_error(gc, _("Out of memory"));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
268 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
269 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
270
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
271 /* Get username, real name and local hostname for SILC library */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
272 if (gaim_account_get_username(account)) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
273 client->username = strdup(gaim_account_get_username(account));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
274 } else {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
275 client->username = silc_get_username();
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
276 gaim_account_set_username(account, client->username);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
277 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
278 if (gaim_account_get_user_info(account)) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
279 client->realname = strdup(gaim_account_get_user_info(account));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
280 } else {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
281 client->realname = silc_get_real_name();
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
282 gaim_account_set_user_info(account, client->realname);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
283 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
284 client->hostname = silc_net_localhost();
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
285
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
286 gaim_connection_set_display_name(gc, client->username);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
287
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
288 /* Init SILC client */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
289 if (!silc_client_init(client)) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
290 gaim_connection_error(gc, ("Cannot initialize SILC protocol"));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
291 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
292 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
293
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
294 /* Check the ~/.silc dir and create it, and new key pair if necessary. */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
295 if (!silcgaim_check_silc_dir(gc)) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
296 gaim_connection_error(gc, ("Cannot find/access ~/.silc directory"));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
297 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
298 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
299
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
300 /* Progress */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
301 gaim_connection_update_progress(gc, _("Connecting to SILC Server"), 1, 5);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
302
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
303 /* Load SILC key pair */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
304 if (!silc_load_key_pair(gaim_prefs_get_string("/plugins/prpl/silc/pubkey"),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
305 gaim_prefs_get_string("/plugins/prpl/silc/privkey"),
10751
e15f4f5927ce [gaim-migrate @ 12354]
Mark Doliner <markdoliner@pidgin.im>
parents: 10732
diff changeset
306 (gc->password == NULL) ? "" : gc->password, &client->pkcs,
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
307 &client->public_key, &client->private_key)) {
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
308 gaim_connection_error(gc, ("Could not load SILC key pair"));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
309 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
310 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
311
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
312 sg = silc_calloc(1, sizeof(*sg));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
313 if (!sg)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
314 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
315 memset(sg, 0, sizeof(*sg));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
316 sg->client = client;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
317 sg->gc = gc;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
318 sg->account = account;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
319 gc->proto_data = sg;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
320
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
321 /* Connect to the SILC server */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
322 if (gaim_proxy_connect(account,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
323 gaim_account_get_string(account, "server",
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
324 "silc.silcnet.org"),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
325 gaim_account_get_int(account, "port", 706),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
326 silcgaim_login_connected, gc)) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
327 gaim_connection_error(gc, ("Unable to create connection"));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
328 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
329 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
330
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
331 /* Schedule SILC using Glib's event loop */
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
332 #ifndef _WIN32
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
333 sg->scheduler = g_timeout_add(5, (GSourceFunc)silcgaim_scheduler, sg);
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
334 #else
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
335 sg->scheduler = g_timeout_add(300, (GSourceFunc)silcgaim_scheduler, sg);
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
336 #endif
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
337 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
338
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
339 static int
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
340 silcgaim_close_final(gpointer *context)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
341 {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
342 SilcGaim sg = (SilcGaim)context;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
343 silc_client_stop(sg->client);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
344 silc_client_free(sg->client);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
345 silc_free(sg);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
346 return 0;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
347 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
348
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
349 static void
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
350 silcgaim_close(GaimConnection *gc)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
351 {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
352 SilcGaim sg = gc->proto_data;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
353
10547
61f5540fc15a [gaim-migrate @ 11917]
Mark Doliner <markdoliner@pidgin.im>
parents: 10516
diff changeset
354 g_return_if_fail(sg != NULL);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
355
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
356 /* Send QUIT */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
357 silc_client_command_call(sg->client, sg->conn, NULL,
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
358 "QUIT", "Download Gaim: " GAIM_WEBSITE, NULL);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
359
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
360 if (sg->conn)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
361 silc_client_close_connection(sg->client, sg->conn);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
362
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
363 g_source_remove(sg->scheduler);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
364 g_timeout_add(1, (GSourceFunc)silcgaim_close_final, sg);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
365 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
366
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
367
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
368 /****************************** Protocol Actions *****************************/
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
369
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
370 static void
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
371 silcgaim_attrs_cancel(GaimConnection *gc, GaimRequestFields *fields)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
372 {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
373 /* Nothing */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
374 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
375
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
376 static void
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
377 silcgaim_attrs_cb(GaimConnection *gc, GaimRequestFields *fields)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
378 {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
379 SilcGaim sg = gc->proto_data;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
380 SilcClient client = sg->client;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
381 SilcClientConnection conn = sg->conn;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
382 GaimRequestField *f;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
383 char *tmp;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
384 SilcUInt32 tmp_len, mask;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
385 SilcAttributeObjService service;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
386 SilcAttributeObjDevice dev;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
387 SilcVCardStruct vcard;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
388 const char *val;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
389
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
390 sg = gc->proto_data;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
391 if (!sg)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
392 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
393
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
394 memset(&service, 0, sizeof(service));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
395 memset(&dev, 0, sizeof(dev));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
396 memset(&vcard, 0, sizeof(vcard));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
397
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
398 silc_client_attribute_del(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
399 SILC_ATTRIBUTE_USER_INFO, NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
400 silc_client_attribute_del(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
401 SILC_ATTRIBUTE_SERVICE, NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
402 silc_client_attribute_del(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
403 SILC_ATTRIBUTE_STATUS_MOOD, NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
404 silc_client_attribute_del(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
405 SILC_ATTRIBUTE_STATUS_FREETEXT, NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
406 silc_client_attribute_del(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
407 SILC_ATTRIBUTE_STATUS_MESSAGE, NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
408 silc_client_attribute_del(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
409 SILC_ATTRIBUTE_PREFERRED_LANGUAGE, NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
410 silc_client_attribute_del(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
411 SILC_ATTRIBUTE_PREFERRED_CONTACT, NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
412 silc_client_attribute_del(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
413 SILC_ATTRIBUTE_TIMEZONE, NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
414 silc_client_attribute_del(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
415 SILC_ATTRIBUTE_GEOLOCATION, NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
416 silc_client_attribute_del(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
417 SILC_ATTRIBUTE_DEVICE_INFO, NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
418
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
419 /* Set mood */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
420 mask = 0;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
421 f = gaim_request_fields_get_field(fields, "mood_normal");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
422 if (f && gaim_request_field_bool_get_value(f))
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
423 mask |= SILC_ATTRIBUTE_MOOD_NORMAL;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
424 f = gaim_request_fields_get_field(fields, "mood_happy");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
425 if (f && gaim_request_field_bool_get_value(f))
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
426 mask |= SILC_ATTRIBUTE_MOOD_HAPPY;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
427 f = gaim_request_fields_get_field(fields, "mood_sad");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
428 if (f && gaim_request_field_bool_get_value(f))
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
429 mask |= SILC_ATTRIBUTE_MOOD_SAD;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
430 f = gaim_request_fields_get_field(fields, "mood_angry");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
431 if (f && gaim_request_field_bool_get_value(f))
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
432 mask |= SILC_ATTRIBUTE_MOOD_ANGRY;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
433 f = gaim_request_fields_get_field(fields, "mood_jealous");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
434 if (f && gaim_request_field_bool_get_value(f))
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
435 mask |= SILC_ATTRIBUTE_MOOD_JEALOUS;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
436 f = gaim_request_fields_get_field(fields, "mood_ashamed");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
437 if (f && gaim_request_field_bool_get_value(f))
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
438 mask |= SILC_ATTRIBUTE_MOOD_ASHAMED;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
439 f = gaim_request_fields_get_field(fields, "mood_invincible");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
440 if (f && gaim_request_field_bool_get_value(f))
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
441 mask |= SILC_ATTRIBUTE_MOOD_INVINCIBLE;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
442 f = gaim_request_fields_get_field(fields, "mood_inlove");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
443 if (f && gaim_request_field_bool_get_value(f))
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
444 mask |= SILC_ATTRIBUTE_MOOD_INLOVE;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
445 f = gaim_request_fields_get_field(fields, "mood_sleepy");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
446 if (f && gaim_request_field_bool_get_value(f))
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
447 mask |= SILC_ATTRIBUTE_MOOD_SLEEPY;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
448 f = gaim_request_fields_get_field(fields, "mood_bored");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
449 if (f && gaim_request_field_bool_get_value(f))
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
450 mask |= SILC_ATTRIBUTE_MOOD_BORED;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
451 f = gaim_request_fields_get_field(fields, "mood_excited");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
452 if (f && gaim_request_field_bool_get_value(f))
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
453 mask |= SILC_ATTRIBUTE_MOOD_EXCITED;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
454 f = gaim_request_fields_get_field(fields, "mood_anxious");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
455 if (f && gaim_request_field_bool_get_value(f))
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
456 mask |= SILC_ATTRIBUTE_MOOD_ANXIOUS;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
457 silc_client_attribute_add(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
458 SILC_ATTRIBUTE_STATUS_MOOD,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
459 SILC_32_TO_PTR(mask),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
460 sizeof(SilcUInt32));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
461
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
462 /* Set preferred contact */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
463 mask = 0;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
464 f = gaim_request_fields_get_field(fields, "contact_chat");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
465 if (f && gaim_request_field_bool_get_value(f))
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
466 mask |= SILC_ATTRIBUTE_CONTACT_CHAT;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
467 f = gaim_request_fields_get_field(fields, "contact_email");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
468 if (f && gaim_request_field_bool_get_value(f))
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
469 mask |= SILC_ATTRIBUTE_CONTACT_EMAIL;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
470 f = gaim_request_fields_get_field(fields, "contact_call");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
471 if (f && gaim_request_field_bool_get_value(f))
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
472 mask |= SILC_ATTRIBUTE_CONTACT_CALL;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
473 f = gaim_request_fields_get_field(fields, "contact_sms");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
474 if (f && gaim_request_field_bool_get_value(f))
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
475 mask |= SILC_ATTRIBUTE_CONTACT_SMS;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
476 f = gaim_request_fields_get_field(fields, "contact_mms");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
477 if (f && gaim_request_field_bool_get_value(f))
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
478 mask |= SILC_ATTRIBUTE_CONTACT_MMS;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
479 f = gaim_request_fields_get_field(fields, "contact_video");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
480 if (f && gaim_request_field_bool_get_value(f))
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
481 mask |= SILC_ATTRIBUTE_CONTACT_VIDEO;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
482 if (mask)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
483 silc_client_attribute_add(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
484 SILC_ATTRIBUTE_PREFERRED_CONTACT,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
485 SILC_32_TO_PTR(mask),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
486 sizeof(SilcUInt32));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
487
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
488 /* Set status text */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
489 val = NULL;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
490 f = gaim_request_fields_get_field(fields, "status_text");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
491 if (f)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
492 val = gaim_request_field_string_get_value(f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
493 if (val && *val)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
494 silc_client_attribute_add(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
495 SILC_ATTRIBUTE_STATUS_FREETEXT,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
496 (void *)val, strlen(val));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
497
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
498 /* Set vcard */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
499 val = NULL;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
500 f = gaim_request_fields_get_field(fields, "vcard");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
501 if (f)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
502 val = gaim_request_field_string_get_value(f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
503 if (val && *val) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
504 gaim_prefs_set_string("/plugins/prpl/silc/vcard", val);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
505 tmp = silc_file_readfile(val, &tmp_len);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
506 if (tmp) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
507 tmp[tmp_len] = 0;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
508 if (silc_vcard_decode(tmp, tmp_len, &vcard))
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
509 silc_client_attribute_add(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
510 SILC_ATTRIBUTE_USER_INFO,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
511 (void *)&vcard,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
512 sizeof(vcard));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
513 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
514 silc_vcard_free(&vcard);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
515 silc_free(tmp);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
516 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
517
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
518 #ifdef HAVE_SYS_UTSNAME_H
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
519 /* Set device info */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
520 f = gaim_request_fields_get_field(fields, "device");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
521 if (f && gaim_request_field_bool_get_value(f)) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
522 struct utsname u;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
523 if (!uname(&u)) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
524 dev.type = SILC_ATTRIBUTE_DEVICE_COMPUTER;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
525 dev.version = u.release;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
526 dev.model = u.sysname;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
527 silc_client_attribute_add(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
528 SILC_ATTRIBUTE_DEVICE_INFO,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
529 (void *)&dev, sizeof(dev));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
530 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
531 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
532 #endif
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
533
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
534 /* Set timezone */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
535 val = NULL;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
536 f = gaim_request_fields_get_field(fields, "timezone");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
537 if (f)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
538 val = gaim_request_field_string_get_value(f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
539 if (val && *val)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
540 silc_client_attribute_add(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
541 SILC_ATTRIBUTE_TIMEZONE,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
542 (void *)val, strlen(val));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
543 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
544
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
545 static void
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
546 silcgaim_attrs(GaimPluginAction *action)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
547 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
548 GaimConnection *gc = (GaimConnection *) action->context;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
549 SilcGaim sg = gc->proto_data;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
550 SilcClient client = sg->client;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
551 SilcClientConnection conn = sg->conn;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
552 GaimRequestFields *fields;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
553 GaimRequestFieldGroup *g;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
554 GaimRequestField *f;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
555 SilcHashTable attrs;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
556 SilcAttributePayload attr;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
557 gboolean mnormal = TRUE, mhappy = FALSE, msad = FALSE,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
558 mangry = FALSE, mjealous = FALSE, mashamed = FALSE,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
559 minvincible = FALSE, minlove = FALSE, msleepy = FALSE,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
560 mbored = FALSE, mexcited = FALSE, manxious = FALSE;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
561 gboolean cemail = FALSE, ccall = FALSE, csms = FALSE,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
562 cmms = FALSE, cchat = TRUE, cvideo = FALSE;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
563 gboolean device = TRUE;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
564 char status[1024];
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
565
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
566 sg = gc->proto_data;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
567 if (!sg)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
568 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
569
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
570 memset(status, 0, sizeof(status));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
571
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
572 attrs = silc_client_attributes_get(client, conn);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
573 if (attrs) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
574 if (silc_hash_table_find(attrs,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
575 SILC_32_TO_PTR(SILC_ATTRIBUTE_STATUS_MOOD),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
576 NULL, (void *)&attr)) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
577 SilcUInt32 mood = 0;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
578 silc_attribute_get_object(attr, &mood, sizeof(mood));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
579 mnormal = !mood;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
580 mhappy = (mood & SILC_ATTRIBUTE_MOOD_HAPPY);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
581 msad = (mood & SILC_ATTRIBUTE_MOOD_SAD);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
582 mangry = (mood & SILC_ATTRIBUTE_MOOD_ANGRY);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
583 mjealous = (mood & SILC_ATTRIBUTE_MOOD_JEALOUS);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
584 mashamed = (mood & SILC_ATTRIBUTE_MOOD_ASHAMED);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
585 minvincible = (mood & SILC_ATTRIBUTE_MOOD_INVINCIBLE);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
586 minlove = (mood & SILC_ATTRIBUTE_MOOD_INLOVE);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
587 msleepy = (mood & SILC_ATTRIBUTE_MOOD_SLEEPY);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
588 mbored = (mood & SILC_ATTRIBUTE_MOOD_BORED);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
589 mexcited = (mood & SILC_ATTRIBUTE_MOOD_EXCITED);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
590 manxious = (mood & SILC_ATTRIBUTE_MOOD_ANXIOUS);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
591 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
592
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
593 if (silc_hash_table_find(attrs,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
594 SILC_32_TO_PTR(SILC_ATTRIBUTE_PREFERRED_CONTACT),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
595 NULL, (void *)&attr)) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
596 SilcUInt32 contact = 0;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
597 silc_attribute_get_object(attr, &contact, sizeof(contact));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
598 cemail = (contact & SILC_ATTRIBUTE_CONTACT_EMAIL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
599 ccall = (contact & SILC_ATTRIBUTE_CONTACT_CALL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
600 csms = (contact & SILC_ATTRIBUTE_CONTACT_SMS);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
601 cmms = (contact & SILC_ATTRIBUTE_CONTACT_MMS);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
602 cchat = (contact & SILC_ATTRIBUTE_CONTACT_CHAT);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
603 cvideo = (contact & SILC_ATTRIBUTE_CONTACT_VIDEO);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
604 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
605
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
606 if (silc_hash_table_find(attrs,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
607 SILC_32_TO_PTR(SILC_ATTRIBUTE_STATUS_FREETEXT),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
608 NULL, (void *)&attr))
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
609 silc_attribute_get_object(attr, &status, sizeof(status));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
610
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
611 if (!silc_hash_table_find(attrs,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
612 SILC_32_TO_PTR(SILC_ATTRIBUTE_DEVICE_INFO),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
613 NULL, (void *)&attr))
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
614 device = FALSE;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
615 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
616
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
617 fields = gaim_request_fields_new();
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
618
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
619 g = gaim_request_field_group_new(NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
620 f = gaim_request_field_label_new("l3", _("Your Current Mood"));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
621 gaim_request_field_group_add_field(g, f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
622 f = gaim_request_field_bool_new("mood_normal", _("Normal"), mnormal);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
623 gaim_request_field_group_add_field(g, f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
624 f = gaim_request_field_bool_new("mood_happy", _("Happy"), mhappy);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
625 gaim_request_field_group_add_field(g, f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
626 f = gaim_request_field_bool_new("mood_sad", _("Sad"), msad);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
627 gaim_request_field_group_add_field(g, f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
628 f = gaim_request_field_bool_new("mood_angry", _("Angry"), mangry);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
629 gaim_request_field_group_add_field(g, f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
630 f = gaim_request_field_bool_new("mood_jealous", _("Jealous"), mjealous);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
631 gaim_request_field_group_add_field(g, f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
632 f = gaim_request_field_bool_new("mood_ashamed", _("Ashamed"), mashamed);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
633 gaim_request_field_group_add_field(g, f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
634 f = gaim_request_field_bool_new("mood_invincible", _("Invincible"), minvincible);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
635 gaim_request_field_group_add_field(g, f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
636 f = gaim_request_field_bool_new("mood_inlove", _("In Love"), minlove);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
637 gaim_request_field_group_add_field(g, f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
638 f = gaim_request_field_bool_new("mood_sleepy", _("Sleepy"), msleepy);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
639 gaim_request_field_group_add_field(g, f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
640 f = gaim_request_field_bool_new("mood_bored", _("Bored"), mbored);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
641 gaim_request_field_group_add_field(g, f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
642 f = gaim_request_field_bool_new("mood_excited", _("Excited"), mexcited);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
643 gaim_request_field_group_add_field(g, f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
644 f = gaim_request_field_bool_new("mood_anxious", _("Anxious"), manxious);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
645 gaim_request_field_group_add_field(g, f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
646
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
647 f = gaim_request_field_label_new("l4", _("\nYour Preferred Contact Methods"));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
648 gaim_request_field_group_add_field(g, f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
649 f = gaim_request_field_bool_new("contact_chat", _("Chat"), cchat);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
650 gaim_request_field_group_add_field(g, f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
651 f = gaim_request_field_bool_new("contact_email", _("Email"), cemail);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
652 gaim_request_field_group_add_field(g, f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
653 f = gaim_request_field_bool_new("contact_call", _("Phone"), ccall);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
654 gaim_request_field_group_add_field(g, f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
655 f = gaim_request_field_bool_new("contact_sms", _("SMS"), csms);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
656 gaim_request_field_group_add_field(g, f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
657 f = gaim_request_field_bool_new("contact_mms", _("MMS"), cmms);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
658 gaim_request_field_group_add_field(g, f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
659 f = gaim_request_field_bool_new("contact_video", _("Video Conferencing"), cvideo);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
660 gaim_request_field_group_add_field(g, f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
661 gaim_request_fields_add_group(fields, g);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
662
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
663 g = gaim_request_field_group_new(NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
664 f = gaim_request_field_string_new("status_text", _("Your Current Status"),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
665 status[0] ? status : NULL, TRUE);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
666 gaim_request_field_group_add_field(g, f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
667 gaim_request_fields_add_group(fields, g);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
668
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
669 g = gaim_request_field_group_new(NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
670 #if 0
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
671 f = gaim_request_field_label_new("l2", _("Online Services"));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
672 gaim_request_field_group_add_field(g, f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
673 f = gaim_request_field_bool_new("services",
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
674 _("Let others see what services you are using"),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
675 TRUE);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
676 gaim_request_field_group_add_field(g, f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
677 #endif
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
678 #ifdef HAVE_SYS_UTSNAME_H
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
679 f = gaim_request_field_bool_new("device",
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
680 _("Let others see what computer you are using"),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
681 device);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
682 gaim_request_field_group_add_field(g, f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
683 #endif
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
684 gaim_request_fields_add_group(fields, g);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
685
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
686 g = gaim_request_field_group_new(NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
687 f = gaim_request_field_string_new("vcard", _("Your VCard File"),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
688 gaim_prefs_get_string("/plugins/prpl/silc/vcard"),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
689 FALSE);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
690 gaim_request_field_group_add_field(g, f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
691 #ifdef _WIN32
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
692 f = gaim_request_field_string_new("timezone", _("Timezone"), _tzname[0], FALSE);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
693 #else
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
694 f = gaim_request_field_string_new("timezone", _("Timezone"), tzname[0], FALSE);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
695 #endif
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
696 gaim_request_field_group_add_field(g, f);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
697 gaim_request_fields_add_group(fields, g);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
698
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
699
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
700 gaim_request_fields(NULL, _("User Online Status Attributes"),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
701 _("User Online Status Attributes"),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
702 _("You can let other users see your online status information "
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
703 "and your personal information. Please fill the information "
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
704 "you would like other users to see about yourself."),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
705 fields,
8906
994132dc554c [gaim-migrate @ 9676]
Nathan Walp <nwalp@pidgin.im>
parents: 8891
diff changeset
706 _("OK"), G_CALLBACK(silcgaim_attrs_cb),
994132dc554c [gaim-migrate @ 9676]
Nathan Walp <nwalp@pidgin.im>
parents: 8891
diff changeset
707 _("Cancel"), G_CALLBACK(silcgaim_attrs_cancel), gc);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
708 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
709
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
710 static void
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
711 silcgaim_detach(GaimPluginAction *action)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
712 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
713 GaimConnection *gc = (GaimConnection *) action->context;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
714 SilcGaim sg;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
715
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
716 if (!gc)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
717 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
718 sg = gc->proto_data;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
719 if (!sg)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
720 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
721
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
722 /* Call DETACH */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
723 silc_client_command_call(sg->client, sg->conn, "DETACH");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
724 sg->detaching = TRUE;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
725 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
726
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
727 static void
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
728 silcgaim_view_motd(GaimPluginAction *action)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
729 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
730 GaimConnection *gc = (GaimConnection *) action->context;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
731 SilcGaim sg;
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
732 char *tmp;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
733
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
734 if (!gc)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
735 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
736 sg = gc->proto_data;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
737 if (!sg)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
738 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
739
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
740 if (!sg->motd) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
741 gaim_notify_error(
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
742 gc, _("Message of the Day"), _("No Message of the Day available"),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
743 _("There is no Message of the Day associated with this connection"));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
744 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
745 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
746
10732
5e314ab498bf [gaim-migrate @ 12334]
Richard Laager <rlaager@pidgin.im>
parents: 10547
diff changeset
747 tmp = g_markup_escape_text(sg->motd, -1);
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
748 gaim_notify_formatted(gc, NULL, _("Message of the Day"), NULL,
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
749 tmp, NULL, NULL);
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
750 g_free(tmp);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
751 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
752
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
753 static void
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
754 silcgaim_change_pass(GaimPluginAction *action)
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
755 {
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
756 GaimConnection *gc = (GaimConnection *) action->context;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
757 gaim_account_request_change_password(gaim_connection_get_account(gc));
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
758 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
759
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
760 static void
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
761 silcgaim_change_passwd(GaimConnection *gc, const char *old, const char *new)
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
762 {
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
763 silc_change_private_key_passphrase(gaim_prefs_get_string("/plugins/prpl/silc/privkey"), old, new);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
764 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
765
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
766 static void
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
767 silcgaim_show_set_info(GaimPluginAction *action)
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
768 {
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
769 GaimConnection *gc = (GaimConnection *) action->context;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
770 gaim_account_request_change_user_info(gaim_connection_get_account(gc));
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
771 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
772
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
773 static void
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
774 silcgaim_set_info(GaimConnection *gc, const char *text)
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
775 {
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
776 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
777
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
778 static GList *
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
779 silcgaim_actions(GaimPlugin *plugin, gpointer context)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
780 {
9024
ae04c67ba5db [gaim-migrate @ 9800]
Tim Ringenbach <marv@pidgin.im>
parents: 9015
diff changeset
781 GaimConnection *gc = context;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
782 GList *list = NULL;
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
783 GaimPluginAction *act;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
784
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
785 if (!gaim_account_get_bool(gc->account, "reject-attrs", FALSE)) {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
786 act = gaim_plugin_action_new(_("Online Status"),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
787 silcgaim_attrs);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
788 list = g_list_append(list, act);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
789 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
790
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
791 act = gaim_plugin_action_new(_("Detach From Server"),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
792 silcgaim_detach);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
793 list = g_list_append(list, act);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
794
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
795 act = gaim_plugin_action_new(_("View Message of the Day"),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
796 silcgaim_view_motd);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
797 list = g_list_append(list, act);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
798
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
799 act = gaim_plugin_action_new(_("Change Password..."),
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
800 silcgaim_change_pass);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
801 list = g_list_append(list, act);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
802
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
803 act = gaim_plugin_action_new(_("Set User Info..."),
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
804 silcgaim_show_set_info);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
805 list = g_list_append(list, act);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
806
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
807 return list;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
808 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
809
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
810
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
811 /******************************* IM Routines *********************************/
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
812
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
813 typedef struct {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
814 char *nick;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
815 unsigned char *message;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
816 SilcUInt32 message_len;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
817 SilcMessageFlags flags;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
818 } *SilcGaimIM;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
819
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
820 static void
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
821 silcgaim_send_im_resolved(SilcClient client,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
822 SilcClientConnection conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
823 SilcClientEntry *clients,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
824 SilcUInt32 clients_count,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
825 void *context)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
826 {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
827 GaimConnection *gc = client->application;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
828 SilcGaim sg = gc->proto_data;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
829 SilcGaimIM im = context;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
830 GaimConversation *convo;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
831 char tmp[256], *nickname = NULL;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
832 SilcClientEntry client_entry;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
833
10246
aa5bff72f94c [gaim-migrate @ 11386]
Mark Doliner <markdoliner@pidgin.im>
parents: 10225
diff changeset
834 convo = gaim_find_conversation_with_account(GAIM_CONV_IM, im->nick,
aa5bff72f94c [gaim-migrate @ 11386]
Mark Doliner <markdoliner@pidgin.im>
parents: 10225
diff changeset
835 sg->account);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
836 if (!convo)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
837 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
838
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
839 if (!clients)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
840 goto err;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
841
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
842 if (clients_count > 1) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
843 silc_parse_userfqdn(im->nick, &nickname, NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
844
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
845 /* Find the correct one. The im->nick might be a formatted nick
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
846 so this will find the correct one. */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
847 clients = silc_client_get_clients_local(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
848 nickname, im->nick,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
849 &clients_count);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
850 if (!clients)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
851 goto err;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
852 client_entry = clients[0];
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
853 silc_free(clients);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
854 } else {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
855 client_entry = clients[0];
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
856 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
857
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
858 /* Send the message */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
859 silc_client_send_private_message(client, conn, client_entry, im->flags,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
860 im->message, im->message_len, TRUE);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
861 gaim_conv_im_write(GAIM_CONV_IM(convo), conn->local_entry->nickname,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
862 im->message, 0, time(NULL));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
863
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
864 goto out;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
865
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
866 err:
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
867 g_snprintf(tmp, sizeof(tmp),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
868 _("User <I>%s</I> is not present in the network"), im->nick);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
869 gaim_conversation_write(convo, NULL, tmp, GAIM_MESSAGE_SYSTEM, time(NULL));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
870
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
871 out:
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
872 g_free(im->nick);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
873 g_free(im->message);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
874 silc_free(im);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
875 silc_free(nickname);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
876 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
877
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
878 static int
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
879 silcgaim_send_im(GaimConnection *gc, const char *who, const char *msg,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
880 GaimConvImFlags flags)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
881 {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
882 SilcGaim sg = gc->proto_data;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
883 SilcClient client = sg->client;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
884 SilcClientConnection conn = sg->conn;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
885 SilcClientEntry *clients;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
886 SilcUInt32 clients_count, mflags;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
887 char *nickname;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
888 int ret;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
889 gboolean sign = gaim_prefs_get_bool("/plugins/prpl/silc/sign_im");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
890
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
891 if (!who || !msg)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
892 return 0;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
893
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
894 mflags = SILC_MESSAGE_FLAG_UTF8;
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
895
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
896 if (!g_ascii_strncasecmp(msg, "/me ", 4)) {
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
897 msg += 4;
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
898 if (!msg)
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
899 return 0;
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
900 mflags |= SILC_MESSAGE_FLAG_ACTION;
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
901 } else if (strlen(msg) > 1 && msg[0] == '/') {
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
902 if (!silc_client_command_call(client, conn, msg + 1))
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
903 gaim_notify_error(gc, ("Call Command"), _("Cannot call command"),
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
904 _("Unknown command"));
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
905 return 0;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
906 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
907
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
908
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
909 if (!silc_parse_userfqdn(who, &nickname, NULL))
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
910 return 0;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
911
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
912 if (sign)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
913 mflags |= SILC_MESSAGE_FLAG_SIGNED;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
914
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
915 /* Find client entry */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
916 clients = silc_client_get_clients_local(client, conn, nickname, who,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
917 &clients_count);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
918 if (!clients) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
919 /* Resolve unknown user */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
920 SilcGaimIM im = silc_calloc(1, sizeof(*im));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
921 if (!im)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
922 return 0;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
923 im->nick = g_strdup(who);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
924 im->message = g_strdup(msg);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
925 im->message_len = strlen(im->message);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
926 im->flags = mflags;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
927 silc_client_get_clients(client, conn, nickname, NULL,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
928 silcgaim_send_im_resolved, im);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
929 silc_free(nickname);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
930 return 0;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
931 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
932
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
933 /* Send private message directly */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
934 ret = silc_client_send_private_message(client, conn, clients[0],
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
935 mflags, (char *)msg,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
936 strlen(msg), TRUE);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
937
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
938 silc_free(nickname);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
939 silc_free(clients);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
940 return ret;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
941 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
942
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
943
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9024
diff changeset
944 GList *silcgaim_blist_node_menu(GaimBlistNode *node) {
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9024
diff changeset
945 /* split this single menu building function back into the two
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9024
diff changeset
946 original: one for buddies and one for chats */
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9024
diff changeset
947
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9024
diff changeset
948 if(GAIM_BLIST_NODE_IS_CHAT(node)) {
9038
165198d63a81 [gaim-migrate @ 9814]
Tim Ringenbach <marv@pidgin.im>
parents: 9030
diff changeset
949 return silcgaim_chat_menu((GaimChat *) node);
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9024
diff changeset
950 } else if(GAIM_BLIST_NODE_IS_BUDDY(node)) {
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9024
diff changeset
951 return silcgaim_buddy_menu((GaimBuddy *) node);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9024
diff changeset
952 } else {
9038
165198d63a81 [gaim-migrate @ 9814]
Tim Ringenbach <marv@pidgin.im>
parents: 9030
diff changeset
953 g_return_val_if_reached(NULL);
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
954 }
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9024
diff changeset
955 }
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9024
diff changeset
956
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
957 /********************************* Commands **********************************/
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
958
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
959 static GaimCmdRet silcgaim_cmd_chat_part(GaimConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
960 const char *cmd, char **args, char **error, void *data)
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
961 {
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
962 GaimConnection *gc;
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
963 GaimConversation *convo;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
964 int id = 0;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
965
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
966 gc = gaim_conversation_get_gc(conv);
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
967
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
968 if (gc == NULL)
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
969 return GAIM_CMD_RET_FAILED;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
970
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
971 if(args && args[0]) {
10246
aa5bff72f94c [gaim-migrate @ 11386]
Mark Doliner <markdoliner@pidgin.im>
parents: 10225
diff changeset
972 convo = gaim_find_conversation_with_account(GAIM_CONV_CHAT, args[0],
aa5bff72f94c [gaim-migrate @ 11386]
Mark Doliner <markdoliner@pidgin.im>
parents: 10225
diff changeset
973 gc->account);
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
974 } else
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
975 convo = conv;
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
976
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
977 id = gaim_conv_chat_get_id(GAIM_CONV_CHAT(convo));
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
978
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
979 if (id == 0)
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
980 return GAIM_CMD_RET_FAILED;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
981
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
982 silcgaim_chat_leave(gc, id);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
983
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
984 return GAIM_CMD_RET_OK;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
985
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
986 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
987
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
988 static GaimCmdRet silcgaim_cmd_chat_topic(GaimConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
989 const char *cmd, char **args, char **error, void *data)
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
990 {
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
991 GaimConnection *gc;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
992 int id = 0;
9762
125f77c00102 [gaim-migrate @ 10630]
Tim Ringenbach <marv@pidgin.im>
parents: 9754
diff changeset
993 char *buf, *tmp, *tmp2;
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
994 const char *topic;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
995
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
996 gc = gaim_conversation_get_gc(conv);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
997 id = gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv));
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
998
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
999 if (gc == NULL || id == 0)
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1000 return GAIM_CMD_RET_FAILED;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1001
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1002 if (!args || !args[0]) {
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1003 topic = gaim_conv_chat_get_topic (GAIM_CONV_CHAT(conv));
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1004 if (topic) {
10732
5e314ab498bf [gaim-migrate @ 12334]
Richard Laager <rlaager@pidgin.im>
parents: 10547
diff changeset
1005 tmp = g_markup_escape_text(topic, -1);
9762
125f77c00102 [gaim-migrate @ 10630]
Tim Ringenbach <marv@pidgin.im>
parents: 9754
diff changeset
1006 tmp2 = gaim_markup_linkify(tmp);
125f77c00102 [gaim-migrate @ 10630]
Tim Ringenbach <marv@pidgin.im>
parents: 9754
diff changeset
1007 buf = g_strdup_printf(_("current topic is: %s"), tmp2);
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1008 g_free(tmp);
9762
125f77c00102 [gaim-migrate @ 10630]
Tim Ringenbach <marv@pidgin.im>
parents: 9754
diff changeset
1009 g_free(tmp2);
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1010 } else
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1011 buf = g_strdup(_("No topic is set"));
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1012 gaim_conv_chat_write(GAIM_CONV_CHAT(conv), gc->account->username, buf,
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1013 GAIM_MESSAGE_SYSTEM|GAIM_MESSAGE_NO_LOG, time(NULL));
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1014 g_free(buf);
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1015
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1016 }
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1017
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1018 if (args && args[0] && (strlen(args[0]) > 255)) {
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1019 *error = g_strdup(_("Topic too long"));
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1020 return GAIM_CMD_RET_FAILED;
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1021 }
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1022
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1023 silcgaim_chat_set_topic(gc, id, args ? args[0] : NULL);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1024
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1025 return GAIM_CMD_RET_OK;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1026 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1027
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1028 static GaimCmdRet silcgaim_cmd_chat_join(GaimConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1029 const char *cmd, char **args, char **error, void *data)
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1030 {
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1031 GHashTable *comp;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1032
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1033 if(!args || !args[0])
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1034 return GAIM_CMD_RET_FAILED;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1035
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1036 comp = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, NULL);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1037
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1038 g_hash_table_replace(comp, "channel", args[0]);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1039 if(args[1])
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1040 g_hash_table_replace(comp, "passphrase", args[1]);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1041
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1042 silcgaim_chat_join(gaim_conversation_get_gc(conv), comp);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1043
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1044 g_hash_table_destroy(comp);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1045 return GAIM_CMD_RET_OK;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1046 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1047
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1048 static GaimCmdRet silcgaim_cmd_chat_list(GaimConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1049 const char *cmd, char **args, char **error, void *data)
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1050 {
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1051 GaimConnection *gc;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1052 gc = gaim_conversation_get_gc(conv);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1053 gaim_roomlist_show_with_account(gaim_connection_get_account(gc));
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1054 return GAIM_CMD_RET_OK;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1055 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1056
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1057 static GaimCmdRet silcgaim_cmd_whois(GaimConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1058 const char *cmd, char **args, char **error, void *data)
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1059 {
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1060 GaimConnection *gc;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1061
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1062 gc = gaim_conversation_get_gc(conv);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1063
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1064 if (gc == NULL)
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1065 return GAIM_CMD_RET_FAILED;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1066
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1067 silcgaim_get_info(gc, args[0]);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1068
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1069 return GAIM_CMD_RET_OK;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1070 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1071
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1072 static GaimCmdRet silcgaim_cmd_msg(GaimConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1073 const char *cmd, char **args, char **error, void *data)
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1074 {
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1075 int ret;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1076 GaimConnection *gc;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1077
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1078 gc = gaim_conversation_get_gc(conv);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1079
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1080 if (gc == NULL)
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1081 return GAIM_CMD_RET_FAILED;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1082
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1083 ret = silcgaim_send_im(gc, args[0], args[1], GAIM_MESSAGE_SEND);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1084
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1085 if (ret)
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1086 return GAIM_CMD_RET_OK;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1087 else
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1088 return GAIM_CMD_RET_FAILED;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1089 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1090
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1091 static GaimCmdRet silcgaim_cmd_query(GaimConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1092 const char *cmd, char **args, char **error, void *data)
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1093 {
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1094 int ret = 1;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1095 GaimConversation *convo;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1096 GaimConnection *gc;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1097 GaimAccount *account;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1098
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1099 if (!args || !args[0]) {
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1100 *error = g_strdup(_("You must specify a nick"));
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1101 return GAIM_CMD_RET_FAILED;
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1102 }
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1103
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1104 gc = gaim_conversation_get_gc(conv);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1105
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1106 if (gc == NULL)
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1107 return GAIM_CMD_RET_FAILED;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1108
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1109 account = gaim_connection_get_account(gc);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1110
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1111 convo = gaim_conversation_new(GAIM_CONV_IM, account, args[0]);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1112
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1113 if (args[1]) {
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1114 ret = silcgaim_send_im(gc, args[0], args[1], GAIM_MESSAGE_SEND);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1115 gaim_conv_im_write(GAIM_CONV_IM(convo), gaim_connection_get_display_name(gc),
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1116 args[1], GAIM_MESSAGE_SEND, time(NULL));
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1117 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1118
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1119 if (ret)
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1120 return GAIM_CMD_RET_OK;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1121 else
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1122 return GAIM_CMD_RET_FAILED;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1123 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1124
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1125 static GaimCmdRet silcgaim_cmd_motd(GaimConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1126 const char *cmd, char **args, char **error, void *data)
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1127 {
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1128 GaimConnection *gc;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1129 SilcGaim sg;
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1130 char *tmp;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1131
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1132 gc = gaim_conversation_get_gc(conv);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1133
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1134 if (gc == NULL)
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1135 return GAIM_CMD_RET_FAILED;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1136
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1137 sg = gc->proto_data;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1138
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1139 if (sg == NULL)
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1140 return GAIM_CMD_RET_FAILED;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1141
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1142 if (!sg->motd) {
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1143 *error = g_strdup(_("There is no Message of the Day associated with this connection"));
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1144 return GAIM_CMD_RET_FAILED;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1145 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1146
10732
5e314ab498bf [gaim-migrate @ 12334]
Richard Laager <rlaager@pidgin.im>
parents: 10547
diff changeset
1147 tmp = g_markup_escape_text(sg->motd, -1);
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1148 gaim_notify_formatted(gc, NULL, _("Message of the Day"), NULL,
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1149 tmp, NULL, NULL);
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1150 g_free(tmp);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1151
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1152 return GAIM_CMD_RET_OK;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1153 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1154
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1155 static GaimCmdRet silcgaim_cmd_detach(GaimConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1156 const char *cmd, char **args, char **error, void *data)
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1157 {
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1158 GaimConnection *gc;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1159 SilcGaim sg;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1160
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1161 gc = gaim_conversation_get_gc(conv);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1162
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1163 if (gc == NULL)
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1164 return GAIM_CMD_RET_FAILED;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1165
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1166 sg = gc->proto_data;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1167
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1168 if (sg == NULL)
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1169 return GAIM_CMD_RET_FAILED;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1170
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1171 silc_client_command_call(sg->client, sg->conn, "DETACH");
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1172 sg->detaching = TRUE;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1173
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1174 return GAIM_CMD_RET_OK;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1175 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1176
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1177 static GaimCmdRet silcgaim_cmd_cmode(GaimConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1178 const char *cmd, char **args, char **error, void *data)
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1179 {
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1180 GaimConnection *gc;
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1181 SilcGaim sg;
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1182 SilcChannelEntry channel;
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1183 char *silccmd, *silcargs, *msg, tmp[256];
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1184 const char *chname;
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1185
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1186 gc = gaim_conversation_get_gc(conv);
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1187
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1188 if (gc == NULL || !args || gc->proto_data == NULL)
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1189 return GAIM_CMD_RET_FAILED;
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1190
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1191 sg = gc->proto_data;
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1192
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1193 if (args[0])
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1194 chname = args[0];
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1195 else
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1196 chname = gaim_conversation_get_name(conv);
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1197
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1198 if (!args[1]) {
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1199 channel = silc_client_get_channel(sg->client, sg->conn,
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1200 (char *)chname);
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1201 if (!channel) {
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1202 *error = g_strdup_printf(_("channel %s not found"), chname);
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1203 return GAIM_CMD_RET_FAILED;
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1204 }
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1205 if (channel->mode) {
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1206 silcgaim_get_chmode_string(channel->mode, tmp, sizeof(tmp));
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1207 msg = g_strdup_printf(_("channel modes for %s: %s"), chname, tmp);
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1208 } else {
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1209 msg = g_strdup_printf(_("no channel modes are set on %s"), chname);
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1210 }
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1211 gaim_conv_chat_write(GAIM_CONV_CHAT(conv), "",
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1212 msg, GAIM_MESSAGE_SYSTEM|GAIM_MESSAGE_NO_LOG, time(NULL));
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1213 g_free(msg);
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1214 return GAIM_CMD_RET_OK;
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1215 }
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1216
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1217 silcargs = g_strjoinv(" ", args);
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1218 silccmd = g_strconcat(cmd, " ", args ? silcargs : NULL, NULL);
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1219 g_free(silcargs);
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1220 if (!silc_client_command_call(sg->client, sg->conn, silccmd)) {
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1221 g_free(silccmd);
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1222 *error = g_strdup_printf(_("Failed to set cmodes for %s"), args[0]);
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1223 return GAIM_CMD_RET_FAILED;
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1224 }
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1225 g_free(silccmd);
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1226
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1227 return GAIM_CMD_RET_OK;
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1228 }
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1229
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1230 static GaimCmdRet silcgaim_cmd_generic(GaimConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1231 const char *cmd, char **args, char **error, void *data)
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1232 {
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1233 GaimConnection *gc;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1234 SilcGaim sg;
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1235 char *silccmd, *silcargs;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1236
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1237 gc = gaim_conversation_get_gc(conv);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1238
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1239 if (gc == NULL)
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1240 return GAIM_CMD_RET_FAILED;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1241
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1242 sg = gc->proto_data;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1243
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1244 if (sg == NULL)
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1245 return GAIM_CMD_RET_FAILED;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1246
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1247 silcargs = g_strjoinv(" ", args);
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1248 silccmd = g_strconcat(cmd, " ", args ? silcargs : NULL, NULL);
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1249 g_free(silcargs);
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1250 if (!silc_client_command_call(sg->client, sg->conn, silccmd)) {
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1251 g_free(silccmd);
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1252 *error = g_strdup_printf(_("Unknown command: %s, (may be a Gaim bug)"), cmd);
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1253 return GAIM_CMD_RET_FAILED;
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1254 }
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1255 g_free(silccmd);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1256
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1257 return GAIM_CMD_RET_OK;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1258 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1259
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1260 static GaimCmdRet silcgaim_cmd_quit(GaimConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1261 const char *cmd, char **args, char **error, void *data)
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1262 {
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1263 GaimConnection *gc;
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1264 SilcGaim sg;
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1265
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1266 gc = gaim_conversation_get_gc(conv);
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1267
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1268 if (gc == NULL)
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1269 return GAIM_CMD_RET_FAILED;
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1270
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1271 sg = gc->proto_data;
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1272
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1273 if (sg == NULL)
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1274 return GAIM_CMD_RET_FAILED;
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1275
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1276 silc_client_command_call(sg->client, sg->conn, NULL,
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1277 "QUIT", (args && args[0]) ? args[0] : "Download Gaim: " GAIM_WEBSITE, NULL);
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1278
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1279 return GAIM_CMD_RET_OK;
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1280 }
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1281
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1282 static GaimCmdRet silcgaim_cmd_call(GaimConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1283 const char *cmd, char **args, char **error, void *data)
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1284 {
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1285 GaimConnection *gc;
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1286 SilcGaim sg;
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1287
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1288 gc = gaim_conversation_get_gc(conv);
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1289
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1290 if (gc == NULL)
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1291 return GAIM_CMD_RET_FAILED;
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1292
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1293 sg = gc->proto_data;
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1294
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1295 if (sg == NULL)
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1296 return GAIM_CMD_RET_FAILED;
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1297
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1298 if (!silc_client_command_call(sg->client, sg->conn, args[0])) {
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1299 *error = g_strdup_printf(_("Unknown command: %s"), args[0]);
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1300 return GAIM_CMD_RET_FAILED;
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1301 }
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1302
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1303 return GAIM_CMD_RET_OK;
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1304 }
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1305
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9024
diff changeset
1306
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1307 /************************** Plugin Initialization ****************************/
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1308
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1309 static void
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1310 silcgaim_register_commands(void)
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1311 {
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1312 gaim_cmd_register("part", "w", GAIM_CMD_P_PRPL,
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1313 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT |
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1314 GAIM_CMD_FLAG_PRPL_ONLY | GAIM_CMD_FLAG_ALLOW_WRONG_ARGS,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1315 "prpl-silc", silcgaim_cmd_chat_part, _("part [channel]: Leave the chat"), NULL);
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1316 gaim_cmd_register("leave", "w", GAIM_CMD_P_PRPL,
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1317 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT |
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1318 GAIM_CMD_FLAG_PRPL_ONLY | GAIM_CMD_FLAG_ALLOW_WRONG_ARGS,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1319 "prpl-silc", silcgaim_cmd_chat_part, _("leave [channel]: Leave the chat"), NULL);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1320 gaim_cmd_register("topic", "s", GAIM_CMD_P_PRPL,
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1321 GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY |
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1322 GAIM_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc",
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1323 silcgaim_cmd_chat_topic, _("topic [&lt;new topic&gt;]: View or change the topic"), NULL);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1324 gaim_cmd_register("join", "ws", GAIM_CMD_P_PRPL,
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1325 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT |
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1326 GAIM_CMD_FLAG_PRPL_ONLY | GAIM_CMD_FLAG_ALLOW_WRONG_ARGS,
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1327 "prpl-silc", silcgaim_cmd_chat_join,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1328 _("join &lt;channel&gt; [&lt;password&gt;]: Join a chat on this network"), NULL);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1329 gaim_cmd_register("list", "", GAIM_CMD_P_PRPL,
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1330 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY |
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1331 GAIM_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc",
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1332 silcgaim_cmd_chat_list, _("list: List channels on this network"), NULL);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1333 gaim_cmd_register("whois", "w", GAIM_CMD_P_PRPL,
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1334 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1335 "prpl-silc",
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1336 silcgaim_cmd_whois, _("whois &lt;nick&gt;: View nick's information"), NULL);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1337 gaim_cmd_register("msg", "ws", GAIM_CMD_P_PRPL,
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1338 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1339 "prpl-silc", silcgaim_cmd_msg,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1340 _("msg &lt;nick&gt; &lt;message&gt;: Send a private message to a user"), NULL);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1341 gaim_cmd_register("query", "ws", GAIM_CMD_P_PRPL,
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1342 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY |
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1343 GAIM_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc", silcgaim_cmd_query,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1344 _("query &lt;nick&gt; [&lt;message&gt;]: Send a private message to a user"), NULL);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1345 gaim_cmd_register("motd", "", GAIM_CMD_P_PRPL,
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1346 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY |
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1347 GAIM_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc", silcgaim_cmd_motd,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1348 _("motd: View the server's Message Of The Day"), NULL);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1349 gaim_cmd_register("detach", "", GAIM_CMD_P_PRPL,
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1350 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1351 "prpl-silc", silcgaim_cmd_detach,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1352 _("detach: Detach this session"), NULL);
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1353 gaim_cmd_register("quit", "s", GAIM_CMD_P_PRPL,
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1354 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY |
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1355 GAIM_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc", silcgaim_cmd_quit,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1356 _("quit [message]: Disconnect from the server, with an optional message"), NULL);
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1357 gaim_cmd_register("call", "s", GAIM_CMD_P_PRPL,
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1358 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1359 "prpl-silc", silcgaim_cmd_call,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1360 _("call &lt;command&gt;: Call any silc client command"), NULL);
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1361 /* These below just get passed through for the silc client library to deal
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1362 * with */
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1363 gaim_cmd_register("kill", "ws", GAIM_CMD_P_PRPL,
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1364 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY |
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1365 GAIM_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc", silcgaim_cmd_generic,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1366 _("kill &lt;nick&gt; [-pubkey|&lt;reason&gt;]: Kill nick"), NULL);
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1367 gaim_cmd_register("nick", "w", GAIM_CMD_P_PRPL,
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1368 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1369 "prpl-silc", silcgaim_cmd_generic,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1370 _("nick &lt;newnick&gt;: Change your nickname"), NULL);
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1371 gaim_cmd_register("whowas", "ww", GAIM_CMD_P_PRPL,
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1372 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY |
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1373 GAIM_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc", silcgaim_cmd_generic,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1374 _("whowas &lt;nick&gt;: View nick's information"), NULL);
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1375 gaim_cmd_register("cmode", "wws", GAIM_CMD_P_PRPL,
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1376 GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY |
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1377 GAIM_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc", silcgaim_cmd_cmode,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1378 _("cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]: Change or display channel modes"), NULL);
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1379 gaim_cmd_register("cumode", "wws", GAIM_CMD_P_PRPL,
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1380 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY |
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1381 GAIM_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc", silcgaim_cmd_generic,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1382 _("cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;: Change nick's modes on channel"), NULL);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1383 gaim_cmd_register("umode", "w", GAIM_CMD_P_PRPL,
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1384 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1385 "prpl-silc", silcgaim_cmd_generic,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1386 _("umode &lt;usermodes&gt;: Set your modes in the network"), NULL);
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1387 gaim_cmd_register("oper", "s", GAIM_CMD_P_PRPL,
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1388 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1389 "prpl-silc", silcgaim_cmd_generic,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1390 _("oper &lt;nick&gt; [-pubkey]: Get server operator privileges"), NULL);
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1391 gaim_cmd_register("invite", "ws", GAIM_CMD_P_PRPL,
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1392 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY |
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1393 GAIM_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc", silcgaim_cmd_generic,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1394 _("invite &lt;channel&gt; [-|+]&lt;nick&gt;: invite nick or add/remove from channel invite list"), NULL);
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1395 gaim_cmd_register("kick", "wws", GAIM_CMD_P_PRPL,
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1396 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY |
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1397 GAIM_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc", silcgaim_cmd_generic,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1398 _("kick &lt;channel&gt; &lt;nick&gt; [comment]: Kick client from channel"), NULL);
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1399 gaim_cmd_register("info", "w", GAIM_CMD_P_PRPL,
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1400 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY |
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1401 GAIM_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc", silcgaim_cmd_generic,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1402 _("info [server]: View server administrative details"), NULL);
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1403 gaim_cmd_register("ban", "ww", GAIM_CMD_P_PRPL,
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1404 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY |
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1405 GAIM_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc", silcgaim_cmd_generic,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1406 _("ban [&lt;channel&gt; +|-&lt;nick&gt;]: Ban client from channel"), NULL);
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1407 gaim_cmd_register("getkey", "w", GAIM_CMD_P_PRPL,
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1408 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1409 "prpl-silc", silcgaim_cmd_generic,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1410 _("getkey &lt;nick|server&gt;: Retrieve client's or server's public key"), NULL);
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1411 gaim_cmd_register("stats", "", GAIM_CMD_P_PRPL,
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1412 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1413 "prpl-silc", silcgaim_cmd_generic,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1414 _("stats: View server and network statistics"), NULL);
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1415 gaim_cmd_register("ping", "", GAIM_CMD_P_PRPL,
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1416 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1417 "prpl-silc", silcgaim_cmd_generic,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1418 _("ping: Send PING to the connected server"), NULL);
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1419 #if 0 /* Gaim doesn't handle these yet */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1420 gaim_cmd_register("users", "w", GAIM_CMD_P_PRPL,
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1421 GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1422 "prpl-silc", silcgaim_cmd_users,
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1423 _("users &lt;channel&gt;: List users in channel"));
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1424 gaim_cmd_register("names", "ww", GAIM_CMD_P_PRPL,
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1425 GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY |
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1426 GAIM_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc", silcgaim_cmd_names,
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1427 _("names [-count|-ops|-halfops|-voices|-normal] &lt;channel(s)&gt;: List specific users in channel(s)"));
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1428 #endif
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1429 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1430
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1431 static GaimPluginPrefFrame *
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1432 silcgaim_pref_frame(GaimPlugin *plugin)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1433 {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1434 GaimPluginPrefFrame *frame;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1435 GaimPluginPref *ppref;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1436
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1437 frame = gaim_plugin_pref_frame_new();
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1438
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1439 ppref = gaim_plugin_pref_new_with_label(_("Instant Messages"));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1440 gaim_plugin_pref_frame_add(frame, ppref);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1441
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1442 ppref = gaim_plugin_pref_new_with_name_and_label(
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1443 "/plugins/prpl/silc/sign_im",
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1444 _("Digitally sign all IM messages"));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1445 gaim_plugin_pref_frame_add(frame, ppref);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1446
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1447 ppref = gaim_plugin_pref_new_with_name_and_label(
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1448 "/plugins/prpl/silc/verify_im",
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1449 _("Verify all IM message signatures"));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1450 gaim_plugin_pref_frame_add(frame, ppref);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1451
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1452 ppref = gaim_plugin_pref_new_with_label(_("Channel Messages"));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1453 gaim_plugin_pref_frame_add(frame, ppref);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1454
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1455 ppref = gaim_plugin_pref_new_with_name_and_label(
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1456 "/plugins/prpl/silc/sign_chat",
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1457 _("Digitally sign all channel messages"));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1458 gaim_plugin_pref_frame_add(frame, ppref);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1459
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1460 ppref = gaim_plugin_pref_new_with_name_and_label(
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1461 "/plugins/prpl/silc/verify_chat",
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1462 _("Verify all channel message signatures"));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1463 gaim_plugin_pref_frame_add(frame, ppref);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1464
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1465 ppref = gaim_plugin_pref_new_with_label(_("Default SILC Key Pair"));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1466 gaim_plugin_pref_frame_add(frame, ppref);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1467
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1468 ppref = gaim_plugin_pref_new_with_name_and_label(
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1469 "/plugins/prpl/silc/pubkey",
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1470 _("SILC Public Key"));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1471 gaim_plugin_pref_frame_add(frame, ppref);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1472
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1473 ppref = gaim_plugin_pref_new_with_name_and_label(
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1474 "/plugins/prpl/silc/privkey",
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1475 _("SILC Private Key"));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1476 gaim_plugin_pref_frame_add(frame, ppref);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1477
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1478 return frame;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1479 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1480
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1481 static GaimPluginUiInfo prefs_info =
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1482 {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1483 silcgaim_pref_frame,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1484 };
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1485
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1486 static GaimPluginProtocolInfo prpl_info =
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1487 {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1488 OPT_PROTO_CHAT_TOPIC | OPT_PROTO_UNIQUE_CHATNAME |
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1489 OPT_PROTO_PASSWORD_OPTIONAL,
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1490 NULL, /* user_splits */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1491 NULL, /* protocol_options */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1492 NO_BUDDY_ICONS, /* icon_spec */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1493 silcgaim_list_icon, /* list_icon */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1494 silcgaim_list_emblems, /* list_emblems */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1495 silcgaim_status_text, /* status_text */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1496 silcgaim_tooltip_text, /* tooltip_text */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1497 silcgaim_away_states, /* away_states */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1498 silcgaim_blist_node_menu, /* blist_node_menu */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1499 silcgaim_chat_info, /* chat_info */
9754
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9732
diff changeset
1500 silcgaim_chat_info_defaults,/* chat_info_defaults */
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1501 silcgaim_login, /* login */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1502 silcgaim_close, /* close */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1503 silcgaim_send_im, /* send_im */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1504 silcgaim_set_info, /* set_info */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1505 NULL, /* send_typing */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1506 silcgaim_get_info, /* get_info */
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1507 silcgaim_set_status, /* set_status */
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1508 silcgaim_idle_set, /* set_idle */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1509 silcgaim_change_passwd, /* change_passwd */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1510 silcgaim_add_buddy, /* add_buddy */
10341
92c66f97b73f [gaim-migrate @ 11550]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
1511 silcgaim_add_buddies, /* add_buddies */
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1512 silcgaim_remove_buddy, /* remove_buddy */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1513 NULL, /* remove_buddies */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1514 NULL, /* add_permit */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1515 NULL, /* add_deny */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1516 NULL, /* rem_permit */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1517 NULL, /* rem_deny */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1518 NULL, /* set_permit_deny */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1519 NULL, /* warn */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1520 silcgaim_chat_join, /* join_chat */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1521 NULL, /* reject_chat */
9917
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9762
diff changeset
1522 silcgaim_get_chat_name, /* get_chat_name */
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1523 silcgaim_chat_invite, /* chat_invite */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1524 silcgaim_chat_leave, /* chat_leave */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1525 NULL, /* chat_whisper */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1526 silcgaim_chat_send, /* chat_send */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1527 silcgaim_keepalive, /* keepalive */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1528 NULL, /* register_user */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1529 NULL, /* get_cb_info */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1530 NULL, /* get_cb_away */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1531 NULL, /* alias_buddy */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1532 NULL, /* group_buddy */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1533 NULL, /* rename_group */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1534 NULL, /* buddy_free */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1535 NULL, /* convo_closed */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1536 NULL, /* normalize */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1537 NULL, /* set_buddy_icon */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1538 NULL, /* remove_group */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1539 NULL, /* get_cb_real_name */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1540 silcgaim_chat_set_topic, /* set_chat_topic */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1541 NULL, /* find_blist_chat */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1542 silcgaim_roomlist_get_list, /* roomlist_get_list */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1543 silcgaim_roomlist_cancel, /* roomlist_cancel */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1544 NULL, /* roomlist_expand_category */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1545 NULL, /* can_receive_file */
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1546 silcgaim_ftp_send_file /* send_file */
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1547 };
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1548
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1549 static GaimPluginInfo info =
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1550 {
9943
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9917
diff changeset
1551 GAIM_PLUGIN_MAGIC,
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9917
diff changeset
1552 GAIM_MAJOR_VERSION,
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9917
diff changeset
1553 GAIM_MINOR_VERSION,
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1554 GAIM_PLUGIN_PROTOCOL, /**< type */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1555 NULL, /**< ui_requirement */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1556 0, /**< flags */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1557 NULL, /**< dependencies */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1558 GAIM_PRIORITY_DEFAULT, /**< priority */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1559
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1560 "prpl-silc", /**< id */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1561 "SILC", /**< name */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1562 "1.0", /**< version */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1563 /** summary */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1564 N_("SILC Protocol Plugin"),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1565 /** description */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1566 N_("Secure Internet Live Conferencing (SILC) Protocol"),
8891
391a227c809e [gaim-migrate @ 9660]
Ambrose Li <ambrose.li@gmail.com>
parents: 8849
diff changeset
1567 "Pekka Riikonen", /**< author */
391a227c809e [gaim-migrate @ 9660]
Ambrose Li <ambrose.li@gmail.com>
parents: 8849
diff changeset
1568 "http://silcnet.org/", /**< homepage */
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1569
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1570 NULL, /**< load */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1571 NULL, /**< unload */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1572 NULL, /**< destroy */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1573
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1574 NULL, /**< ui_info */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1575 &prpl_info, /**< extra_info */
8993
41f67bceab41 [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8950
diff changeset
1576 &prefs_info, /**< prefs_info */
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
1577 silcgaim_actions
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1578 };
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1579
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1580 static void
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1581 init_plugin(GaimPlugin *plugin)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1582 {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1583 GaimAccountOption *option;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1584 char tmp[256];
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1585
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1586 silc_plugin = plugin;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1587
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1588 /* Account options */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1589 option = gaim_account_option_string_new(_("Connect server"),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1590 "server",
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1591 "silc.silcnet.org");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1592 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1593 option = gaim_account_option_int_new(_("Port"), "port", 706);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1594 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1595
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1596 option = gaim_account_option_bool_new(_("Public key authentication"),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1597 "pubkey-auth", FALSE);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1598 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1599 #if 0 /* XXX Public key auth interface with explicit key pair is
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1600 broken in SILC Toolkit */
10516
fb2ac3954ea0 [gaim-migrate @ 11818]
Daniel Atallah <datallah@pidgin.im>
parents: 10443
diff changeset
1601 g_snprintf(tmp, sizeof(tmp), "%s" G_DIR_SEPARATOR_S "public_key.pub", silcgaim_silcdir());
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1602 option = gaim_account_option_string_new(_("Public Key File"),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1603 "public-key", tmp);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1604 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
10516
fb2ac3954ea0 [gaim-migrate @ 11818]
Daniel Atallah <datallah@pidgin.im>
parents: 10443
diff changeset
1605 g_snprintf(tmp, sizeof(tmp), "%s" G_DIR_SEPARATOR_S "private_key.prv", silcgaim_silcdir());
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1606 option = gaim_account_option_string_new(_("Private Key File"),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1607 "public-key", tmp);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1608 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1609 #endif
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1610
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1611 option = gaim_account_option_bool_new(_("Reject watching by other users"),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1612 "reject-watch", FALSE);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1613 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1614 option = gaim_account_option_bool_new(_("Block invites"),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1615 "block-invites", FALSE);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1616 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1617 option = gaim_account_option_bool_new(_("Block IMs without Key Exchange"),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1618 "block-ims", FALSE);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1619 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1620 option = gaim_account_option_bool_new(_("Reject online status attribute requests"),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1621 "reject-attrs", FALSE);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1622 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1623
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1624 /* Preferences */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1625 gaim_prefs_add_none("/plugins/prpl/silc");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1626 gaim_prefs_add_bool("/plugins/prpl/silc/sign_im", FALSE);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1627 gaim_prefs_add_bool("/plugins/prpl/silc/verify_im", FALSE);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1628 gaim_prefs_add_bool("/plugins/prpl/silc/sign_chat", FALSE);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1629 gaim_prefs_add_bool("/plugins/prpl/silc/verify_chat", FALSE);
10516
fb2ac3954ea0 [gaim-migrate @ 11818]
Daniel Atallah <datallah@pidgin.im>
parents: 10443
diff changeset
1630 g_snprintf(tmp, sizeof(tmp), "%s" G_DIR_SEPARATOR_S "public_key.pub", silcgaim_silcdir());
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1631 gaim_prefs_add_string("/plugins/prpl/silc/pubkey", tmp);
10516
fb2ac3954ea0 [gaim-migrate @ 11818]
Daniel Atallah <datallah@pidgin.im>
parents: 10443
diff changeset
1632 g_snprintf(tmp, sizeof(tmp), "%s" G_DIR_SEPARATOR_S "private_key.prv", silcgaim_silcdir());
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1633 gaim_prefs_add_string("/plugins/prpl/silc/privkey", tmp);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1634 gaim_prefs_add_string("/plugins/prpl/silc/vcard", "");
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1635
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1636 silcgaim_register_commands();
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1637
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1638 #ifdef _WIN32
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1639 silc_net_win32_init();
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1640 #endif
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1641
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1642 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1643
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1644 GAIM_INIT_PLUGIN(silc, init_plugin, info);

mercurial