libpurple/protocols/silc/silc.c

Sun, 19 Jul 2009 16:19:45 +0000

author
Mark Doliner <markdoliner@pidgin.im>
date
Sun, 19 Jul 2009 16:19:45 +0000
changeset 27879
f53273ef4e7e
parent 27635
0cd19038c417
child 28981
4e3922ab4844
child 34022
c49f6e9ea27d
permissions
-rw-r--r--

Fix an incorrect string. Yes, this breaks the string freeze. But the string
is wrong and it doesn't make sense to leave an incorrect string here because
that just allows more time for translators to translate the incorrect string.

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
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
3 silcpurple.c
8849
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
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
7 Copyright (C) 2004 - 2007 Pekka Riikonen
8849
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
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
20 #include "silc.h"
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
21 #include "silcclient.h"
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
22 #include "silcpurple.h"
9943
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9917
diff changeset
23 #include "version.h"
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents: 11837
diff changeset
24 #include "wb.h"
23551
b6109bbbbe6c Added include for "core.h" to silc. Fix from phroggie, thanks. Fixes #6227
Evan Schoenberg <evands@pidgin.im>
parents: 23545
diff changeset
25 #include "core.h"
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
26
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
27 extern SilcClientOperations ops;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
28 static PurplePlugin *silc_plugin = NULL;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
29
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
30 /* Error log message callback */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
31
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
32 static SilcBool silcpurple_log_error(SilcLogType type, char *message,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
33 void *context)
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
34 {
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
35 silc_say(NULL, NULL, SILC_CLIENT_MESSAGE_ERROR, message);
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
36 return TRUE;
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
37 }
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
38
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
39 static const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
40 silcpurple_list_icon(PurpleAccount *a, PurpleBuddy *b)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
41 {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
42 return (const char *)"silc";
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
43 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
44
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
45 static GList *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
46 silcpurple_away_states(PurpleAccount *account)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
47 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
48 PurpleStatusType *type;
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
49 GList *types = NULL;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
50
25552
ffd94785b2ad For some reason, all these statuses were set to saveable=FALSE. With the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25545
diff changeset
51 type = purple_status_type_new_full(PURPLE_STATUS_AVAILABLE, SILCPURPLE_STATUS_ID_AVAILABLE, NULL, TRUE, TRUE, FALSE);
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
52 types = g_list_append(types, type);
25552
ffd94785b2ad For some reason, all these statuses were set to saveable=FALSE. With the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25545
diff changeset
53 type = purple_status_type_new_full(PURPLE_STATUS_AVAILABLE, SILCPURPLE_STATUS_ID_HYPER, _("Hyper Active"), TRUE, TRUE, FALSE);
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
54 types = g_list_append(types, type);
25552
ffd94785b2ad For some reason, all these statuses were set to saveable=FALSE. With the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25545
diff changeset
55 type = purple_status_type_new_full(PURPLE_STATUS_AWAY, SILCPURPLE_STATUS_ID_AWAY, NULL, TRUE, TRUE, FALSE);
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
56 types = g_list_append(types, type);
25552
ffd94785b2ad For some reason, all these statuses were set to saveable=FALSE. With the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25545
diff changeset
57 type = purple_status_type_new_full(PURPLE_STATUS_UNAVAILABLE, SILCPURPLE_STATUS_ID_BUSY, _("Busy"), TRUE, TRUE, FALSE);
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
58 types = g_list_append(types, type);
25552
ffd94785b2ad For some reason, all these statuses were set to saveable=FALSE. With the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25545
diff changeset
59 type = purple_status_type_new_full(PURPLE_STATUS_AWAY, SILCPURPLE_STATUS_ID_INDISPOSED, _("Indisposed"), TRUE, TRUE, FALSE);
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
60 types = g_list_append(types, type);
25552
ffd94785b2ad For some reason, all these statuses were set to saveable=FALSE. With the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25545
diff changeset
61 type = purple_status_type_new_full(PURPLE_STATUS_AWAY, SILCPURPLE_STATUS_ID_PAGE, _("Wake Me Up"), TRUE, TRUE, FALSE);
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
62 types = g_list_append(types, type);
25552
ffd94785b2ad For some reason, all these statuses were set to saveable=FALSE. With the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25545
diff changeset
63 type = purple_status_type_new_full(PURPLE_STATUS_OFFLINE, SILCPURPLE_STATUS_ID_OFFLINE, NULL, TRUE, TRUE, FALSE);
12658
4aa7a873628d [gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents: 12645
diff changeset
64 types = g_list_append(types, type);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
65
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
66 return types;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
67 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
68
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
69 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
70 silcpurple_set_status(PurpleAccount *account, PurpleStatus *status)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
71 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
72 PurpleConnection *gc = purple_account_get_connection(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
73 SilcPurple sg = NULL;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
74 SilcUInt32 mode;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
75 SilcBuffer idp;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
76 unsigned char mb[4];
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
77 const char *state;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
78
10801
b5f44181183f [gaim-migrate @ 12447]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10751
diff changeset
79 if (gc != NULL)
b5f44181183f [gaim-migrate @ 12447]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10751
diff changeset
80 sg = gc->proto_data;
b5f44181183f [gaim-migrate @ 12447]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10751
diff changeset
81
b5f44181183f [gaim-migrate @ 12447]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10751
diff changeset
82 if (status == NULL)
b5f44181183f [gaim-migrate @ 12447]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10751
diff changeset
83 return;
b5f44181183f [gaim-migrate @ 12447]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10751
diff changeset
84
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
85 state = purple_status_get_id(status);
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10050
diff changeset
86
10801
b5f44181183f [gaim-migrate @ 12447]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10751
diff changeset
87 if (state == NULL)
b5f44181183f [gaim-migrate @ 12447]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10751
diff changeset
88 return;
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10050
diff changeset
89
10801
b5f44181183f [gaim-migrate @ 12447]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10751
diff changeset
90 if ((sg == NULL) || (sg->conn == NULL))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
91 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
92
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
93 mode = sg->conn->local_entry->mode;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
94 mode &= ~(SILC_UMODE_GONE |
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
95 SILC_UMODE_HYPER |
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
96 SILC_UMODE_BUSY |
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
97 SILC_UMODE_INDISPOSED |
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
98 SILC_UMODE_PAGE);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
99
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
100 if (!strcmp(state, "hyper"))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
101 mode |= SILC_UMODE_HYPER;
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
102 else if (!strcmp(state, "away"))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
103 mode |= SILC_UMODE_GONE;
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
104 else if (!strcmp(state, "busy"))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
105 mode |= SILC_UMODE_BUSY;
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
106 else if (!strcmp(state, "indisposed"))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
107 mode |= SILC_UMODE_INDISPOSED;
9968
fc6684d1f454 [gaim-migrate @ 10878]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
108 else if (!strcmp(state, "page"))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
109 mode |= SILC_UMODE_PAGE;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
110
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
111 /* Send UMODE */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
112 idp = silc_id_payload_encode(sg->conn->local_id, SILC_ID_CLIENT);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
113 SILC_PUT32_MSB(mode, mb);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
114 silc_client_command_send(sg->client, sg->conn, SILC_COMMAND_UMODE,
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
115 silcpurple_command_reply, NULL, 2,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
116 1, idp->data, silc_buffer_len(idp),
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
117 2, mb, sizeof(mb));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
118 silc_buffer_free(idp);
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
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
121
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
122 /*************************** Connection Routines *****************************/
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 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
125 silcpurple_keepalive(PurpleConnection *gc)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
126 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
127 SilcPurple sg = gc->proto_data;
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
128 silc_packet_send(sg->conn->stream, SILC_PACKET_HEARTBEAT, 0,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
129 NULL, 0);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
130 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
131
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
132 #if __SILC_TOOLKIT_VERSION < SILC_VERSION(1,1,1)
17566
687225d827a2 300 milliseconds apparently works on win32 for the SILC scheduler, let's
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17564
diff changeset
133 static gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
134 silcpurple_scheduler(gpointer *context)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
135 {
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
136 SilcClient client = (SilcClient)context;
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
137 silc_client_run_one(client);
17566
687225d827a2 300 milliseconds apparently works on win32 for the SILC scheduler, let's
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17564
diff changeset
138 return TRUE;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
139 }
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
140 #else
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
141 typedef struct {
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
142 SilcPurple sg;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
143 SilcUInt32 fd;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
144 guint tag;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
145 } *SilcPurpleTask;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
146
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
147 /* A timeout occurred. Call SILC scheduler. */
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
148
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
149 static gboolean
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
150 silcpurple_scheduler_timeout(gpointer context)
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
151 {
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
152 SilcPurpleTask task = (SilcPurpleTask)context;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
153 silc_client_run_one(task->sg->client);
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
154 silc_dlist_del(task->sg->tasks, task);
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
155 silc_free(task);
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
156 return FALSE;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
157 }
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
158
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
159 /* An fd task event occurred. Call SILC scheduler. */
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
160
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
161 static void
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
162 silcpurple_scheduler_fd(gpointer data, gint fd, PurpleInputCondition cond)
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
163 {
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
164 SilcClient client = (SilcClient)data;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
165 silc_client_run_one(client);
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
166 }
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
167
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
168 /* SILC Scheduler notify callback. This is called whenever task is added to
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
169 or deleted from SILC scheduler. It's also called when fd task events
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
170 change. Here we add same tasks to glib's main loop. */
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
171
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
172 static void
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
173 silcpurple_scheduler(SilcSchedule schedule,
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
174 SilcBool added, SilcTask task,
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
175 SilcBool fd_task, SilcUInt32 fd,
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
176 SilcTaskEvent event,
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
177 long seconds, long useconds,
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
178 void *context)
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
179 {
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
180 SilcClient client = (SilcClient)context;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
181 PurpleConnection *gc = client->application;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
182 SilcPurple sg = gc->proto_data;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
183 SilcPurpleTask ptask = NULL;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
184
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
185 if (added) {
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
186 if (fd_task) {
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
187 /* Add fd or change fd events */
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
188 PurpleInputCondition e = 0;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
189
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
190 silc_dlist_start(sg->tasks);
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
191 while ((ptask = silc_dlist_get(sg->tasks)))
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
192 if (ptask->fd == fd) {
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
193 purple_input_remove(ptask->tag);
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
194 break;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
195 }
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
196
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
197 if (event & SILC_TASK_READ)
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
198 e |= PURPLE_INPUT_READ;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
199 if (event & SILC_TASK_WRITE)
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
200 e |= PURPLE_INPUT_WRITE;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
201
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
202 if (e) {
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
203 if (!ptask) {
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
204 ptask = silc_calloc(1, sizeof(*ptask));
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
205 ptask->fd = fd;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
206 silc_dlist_add(sg->tasks, ptask);
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
207 }
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
208 ptask->tag = purple_input_add(fd, e, silcpurple_scheduler_fd,
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
209 client);
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
210 } else if (ptask) {
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
211 silc_dlist_del(sg->tasks, ptask);
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
212 silc_free(ptask);
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
213 }
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
214 } else {
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
215 /* Add timeout */
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
216 ptask = silc_calloc(1, sizeof(*ptask));
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
217 ptask->sg = sg;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
218 ptask->tag = purple_timeout_add((seconds * 1000) +
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
219 (useconds / 1000),
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
220 silcpurple_scheduler_timeout,
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
221 ptask);
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
222 silc_dlist_add(sg->tasks, ptask);
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
223 }
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
224 } else {
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
225 if (fd_task) {
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
226 /* Remove fd */
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
227 silc_dlist_start(sg->tasks);
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
228 while ((ptask = silc_dlist_get(sg->tasks)))
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
229 if (ptask->fd == fd) {
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
230 purple_input_remove(ptask->tag);
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
231 silc_dlist_del(sg->tasks, ptask);
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
232 silc_free(ptask);
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
233 break;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
234 }
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
235 }
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
236 }
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
237 }
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
238 #endif /* __SILC_TOOLKIT_VERSION */
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
239
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
240 static void
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
241 silcpurple_connect_cb(SilcClient client, SilcClientConnection conn,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
242 SilcClientConnectionStatus status, SilcStatus error,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
243 const char *message, void *context)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
244 {
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
245 PurpleConnection *gc = context;
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
246 SilcPurple sg;
17677
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
247 SilcUInt32 mask;
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
248 char tz[16];
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
249 PurpleStoredImage *img;
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
250 #ifdef HAVE_SYS_UTSNAME_H
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
251 struct utsname u;
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
252 #endif
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
253
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
254 sg = gc->proto_data;
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
255
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
256 switch (status) {
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
257 case SILC_CLIENT_CONN_SUCCESS:
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
258 case SILC_CLIENT_CONN_SUCCESS_RESUME:
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
259 sg->conn = conn;
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
260
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
261 /* Connection created successfully */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
262 purple_connection_set_state(gc, PURPLE_CONNECTED);
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
263
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
264 /* Send the server our buddy list */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
265 silcpurple_send_buddylist(gc);
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
266
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
267 g_unlink(silcpurple_session_file(purple_account_get_username(sg->account)));
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
268
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
269 /* Send any UMODEs configured for account */
17677
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
270 if (purple_account_get_bool(sg->account, "block-ims", FALSE)) {
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
271 silc_client_command_call(sg->client, sg->conn, NULL,
17677
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
272 "UMODE", "+P", NULL);
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
273 }
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
274
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
275 /* Set default attributes */
17677
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
276 mask = SILC_ATTRIBUTE_MOOD_NORMAL;
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
277 silc_client_attribute_add(client, conn,
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
278 SILC_ATTRIBUTE_STATUS_MOOD,
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
279 SILC_32_TO_PTR(mask),
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
280 sizeof(SilcUInt32));
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
281 mask = SILC_ATTRIBUTE_CONTACT_CHAT;
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
282 silc_client_attribute_add(client, conn,
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
283 SILC_ATTRIBUTE_PREFERRED_CONTACT,
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
284 SILC_32_TO_PTR(mask),
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
285 sizeof(SilcUInt32));
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
286 #ifdef HAVE_SYS_UTSNAME_H
17677
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
287 if (!uname(&u)) {
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
288 SilcAttributeObjDevice dev;
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
289 memset(&dev, 0, sizeof(dev));
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
290 dev.type = SILC_ATTRIBUTE_DEVICE_COMPUTER;
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
291 dev.version = u.release;
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
292 dev.model = u.sysname;
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
293 silc_client_attribute_add(client, conn,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
294 SILC_ATTRIBUTE_DEVICE_INFO,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
295 (void *)&dev, sizeof(dev));
17677
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
296 }
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
297 #endif
17677
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
298 silc_timezone(tz, sizeof(tz));
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
299 silc_client_attribute_add(client, conn,
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
300 SILC_ATTRIBUTE_TIMEZONE,
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
301 (void *)tz, strlen(tz));
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
302
17677
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
303 /* Set our buddy icon */
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
304 img = purple_buddy_icons_find_account_icon(sg->account);
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
305 silcpurple_buddy_set_icon(gc, img);
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
306 purple_imgstore_unref(img);
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
307
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
308 return;
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
309 break;
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
310
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
311 case SILC_CLIENT_CONN_DISCONNECTED:
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
312 /* Disconnected */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
313 if (sg->resuming && !sg->detaching)
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
314 g_unlink(silcpurple_session_file(purple_account_get_username(sg->account)));
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
315
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
316 /* Close the connection */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
317 if (!sg->detaching)
20458
446bd3a80bdc Add disconnection reasons to silc.
Will Thompson <resiak@pidgin.im>
parents: 19684
diff changeset
318 purple_connection_error_reason(gc,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
319 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20458
446bd3a80bdc Add disconnection reasons to silc.
Will Thompson <resiak@pidgin.im>
parents: 19684
diff changeset
320 _("Disconnected by server"));
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
321 else
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
322 /* TODO: Does this work correctly? Maybe we need to set wants_to_die? */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
323 purple_account_disconnect(purple_connection_get_account(gc));
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
324 break;
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
325
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
326 case SILC_CLIENT_CONN_ERROR:
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
327 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 26482
diff changeset
328 _("Error connecting to SILC Server"));
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
329 g_unlink(silcpurple_session_file(purple_account_get_username(sg->account)));
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
330 break;
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
331
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
332 case SILC_CLIENT_CONN_ERROR_KE:
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
333 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_ENCRYPTION_ERROR,
20458
446bd3a80bdc Add disconnection reasons to silc.
Will Thompson <resiak@pidgin.im>
parents: 19684
diff changeset
334 _("Key Exchange failed"));
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
335 break;
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
336
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
337 case SILC_CLIENT_CONN_ERROR_AUTH:
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
338 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED,
20458
446bd3a80bdc Add disconnection reasons to silc.
Will Thompson <resiak@pidgin.im>
parents: 19684
diff changeset
339 _("Authentication failed"));
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
340 break;
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
341
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
342 case SILC_CLIENT_CONN_ERROR_RESUME:
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
343 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_OTHER_ERROR,
20458
446bd3a80bdc Add disconnection reasons to silc.
Will Thompson <resiak@pidgin.im>
parents: 19684
diff changeset
344 _("Resuming detached session failed. "
446bd3a80bdc Add disconnection reasons to silc.
Will Thompson <resiak@pidgin.im>
parents: 19684
diff changeset
345 "Press Reconnect to create new connection."));
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
346 g_unlink(silcpurple_session_file(purple_account_get_username(sg->account)));
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
347 break;
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
348
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
349 case SILC_CLIENT_CONN_ERROR_TIMEOUT:
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
350 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 26482
diff changeset
351 _("Connection timed out"));
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
352 break;
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
353 }
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
354
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
355 /* Error */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
356 sg->conn = NULL;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
357 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
358
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
359 static void
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
360 silcpurple_stream_created(SilcSocketStreamStatus status, SilcStream stream,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
361 void *context)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
362 {
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
363 PurpleConnection *gc = context;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
364 SilcPurple sg;
9732
644615310076 [gaim-migrate @ 10593]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9597
diff changeset
365 SilcClient client;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
366 SilcClientConnectionParams params;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
367 const char *dfile;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
368
14179
b54c870fb9d0 [gaim-migrate @ 16751]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
369 sg = gc->proto_data;
13410
590ccd4c9bb1 [gaim-migrate @ 15784]
Richard Laager <rlaager@pidgin.im>
parents: 13297
diff changeset
370
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
371 if (status != SILC_SOCKET_OK) {
21513
02642f4cb3df Switch to purple_connection_error_reason in msnp9, and a few places I missed in
Will Thompson <resiak@pidgin.im>
parents: 21503
diff changeset
372 purple_connection_error_reason(gc,
02642f4cb3df Switch to purple_connection_error_reason in msnp9, and a few places I missed in
Will Thompson <resiak@pidgin.im>
parents: 21503
diff changeset
373 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
02642f4cb3df Switch to purple_connection_error_reason in msnp9, and a few places I missed in
Will Thompson <resiak@pidgin.im>
parents: 21503
diff changeset
374 _("Connection failed"));
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
375 silc_pkcs_public_key_free(sg->public_key);
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
376 silc_pkcs_private_key_free(sg->private_key);
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
377 silc_free(sg);
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
378 gc->proto_data = NULL;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
379 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
380 }
9732
644615310076 [gaim-migrate @ 10593]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9597
diff changeset
381
644615310076 [gaim-migrate @ 10593]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9597
diff changeset
382 client = sg->client;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
383
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
384 /* Get session detachment data, if available */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
385 memset(&params, 0, sizeof(params));
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
386 dfile = silcpurple_session_file(purple_account_get_username(sg->account));
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
387 params.detach_data = (unsigned char *)silc_file_readfile(dfile, &params.detach_data_len);
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
388 if (params.detach_data)
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
389 params.detach_data[params.detach_data_len] = 0;
17677
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
390 params.ignore_requested_attributes = FALSE;
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
391 params.pfs = purple_account_get_bool(sg->account, "pfs", FALSE);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
392
22847
fea937d28d73 Don't access uninitialized memory (I think this might actually fix some
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21630
diff changeset
393 /* Progress */
fea937d28d73 Don't access uninitialized memory (I think this might actually fix some
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21630
diff changeset
394 if (params.detach_data) {
fea937d28d73 Don't access uninitialized memory (I think this might actually fix some
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21630
diff changeset
395 purple_connection_update_progress(gc, _("Resuming session"), 2, 5);
fea937d28d73 Don't access uninitialized memory (I think this might actually fix some
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21630
diff changeset
396 sg->resuming = TRUE;
fea937d28d73 Don't access uninitialized memory (I think this might actually fix some
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21630
diff changeset
397 } else {
fea937d28d73 Don't access uninitialized memory (I think this might actually fix some
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21630
diff changeset
398 purple_connection_update_progress(gc, _("Performing key exchange"), 2, 5);
fea937d28d73 Don't access uninitialized memory (I think this might actually fix some
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21630
diff changeset
399 }
fea937d28d73 Don't access uninitialized memory (I think this might actually fix some
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21630
diff changeset
400
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
401 /* Perform SILC Key Exchange. */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
402 silc_client_key_exchange(sg->client, &params, sg->public_key,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
403 sg->private_key, stream, SILC_CONN_SERVER,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
404 silcpurple_connect_cb, gc);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
405
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
406 silc_free(params.detach_data);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
407 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
408
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
409 static void
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
410 silcpurple_login_connected(gpointer data, gint source, const gchar *error_message)
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
411 {
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
412 PurpleConnection *gc = data;
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
413 SilcPurple sg;
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
414
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
415 g_return_if_fail(gc != NULL);
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
416
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
417 sg = gc->proto_data;
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
418
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
419 if (source < 0) {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
420 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20458
446bd3a80bdc Add disconnection reasons to silc.
Will Thompson <resiak@pidgin.im>
parents: 19684
diff changeset
421 _("Connection failed"));
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
422 silc_pkcs_public_key_free(sg->public_key);
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
423 silc_pkcs_private_key_free(sg->private_key);
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
424 silc_free(sg);
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
425 gc->proto_data = NULL;
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
426 return;
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
427 }
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
428
21522
db7633b6104d kill another compile warning
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21513
diff changeset
429 silc_hash_alloc((unsigned char *)"sha1", &sg->sha1hash);
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
430
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
431 /* Wrap socket to TCP stream */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
432 silc_socket_tcp_stream_create(source, TRUE, FALSE,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
433 sg->client->schedule,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
434 silcpurple_stream_created, gc);
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
435 }
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
436
22853
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
437 static void silcpurple_continue_running(SilcPurple sg)
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
438 {
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
439 PurpleConnection *gc = sg->gc;
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
440 PurpleAccount *account = purple_connection_get_account(gc);
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
441
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
442 /* Connect to the SILC server */
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
443 if (purple_proxy_connect(gc, account,
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
444 purple_account_get_string(account, "server",
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
445 "silc.silcnet.org"),
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
446 purple_account_get_int(account, "port", 706),
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
447 silcpurple_login_connected, gc) == NULL)
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
448 {
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
449 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 26482
diff changeset
450 _("Unable to connect"));
22853
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
451 gc->proto_data = NULL;
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
452 silc_free(sg);
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
453 return;
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
454 }
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
455 }
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
456
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
457 static void silcpurple_got_password_cb(PurpleConnection *gc, PurpleRequestFields *fields)
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
458 {
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
459 SilcPurple sg = (SilcPurple)gc->proto_data;
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
460 PurpleAccount *account = purple_connection_get_account(gc);
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
461 char pkd[256], prd[256];
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
462 const char *password;
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
463 gboolean remember;
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
464
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
465 /* The password prompt dialog doesn't get disposed if the account disconnects */
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
466 if (!PURPLE_CONNECTION_IS_VALID(gc))
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
467 return;
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
468
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
469 password = purple_request_fields_get_string(fields, "password");
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
470 remember = purple_request_fields_get_bool(fields, "remember");
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
471
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
472 if (!password || !*password)
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
473 {
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
474 purple_notify_error(gc, NULL, _("Password is required to sign on."), NULL);
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
475 gc->proto_data = NULL;
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
476 silc_free(sg);
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
477 return;
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
478 }
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
479
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
480 if (remember)
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
481 purple_account_set_remember_password(account, TRUE);
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
482
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
483 purple_account_set_password(account, password);
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
484
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
485 /* Load SILC key pair */
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
486 g_snprintf(pkd, sizeof(pkd), "%s" G_DIR_SEPARATOR_S "public_key.pub", silcpurple_silcdir());
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
487 g_snprintf(prd, sizeof(prd), "%s" G_DIR_SEPARATOR_S "private_key.prv", silcpurple_silcdir());
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
488 if (!silc_load_key_pair((char *)purple_account_get_string(account, "public-key", pkd),
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
489 (char *)purple_account_get_string(account, "private-key", prd),
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
490 password,
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
491 &sg->public_key, &sg->private_key)) {
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
492 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_OTHER_ERROR,
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 26482
diff changeset
493 _("Unable to load SILC key pair"));
22853
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
494 gc->proto_data = NULL;
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
495 silc_free(sg);
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
496 return;
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
497 }
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
498 silcpurple_continue_running(sg);
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
499 }
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
500
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
501 static void silcpurple_no_password_cb(PurpleConnection *gc, PurpleRequestFields *fields)
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
502 {
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
503 SilcPurple sg;
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
504 /* The password prompt dialog doesn't get disposed if the account disconnects */
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
505 if (!PURPLE_CONNECTION_IS_VALID(gc))
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
506 return;
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
507 sg = gc->proto_data;
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
508 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_OTHER_ERROR,
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 26482
diff changeset
509 _("Unable to load SILC key pair"));
22853
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
510 gc->proto_data = NULL;
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
511 silc_free(sg);
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
512 }
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
513
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
514 static void silcpurple_running(SilcClient client, void *context)
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
515 {
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
516 SilcPurple sg = context;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
517 PurpleConnection *gc = sg->gc;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
518 PurpleAccount *account = purple_connection_get_account(gc);
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
519 char pkd[256], prd[256];
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
520
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
521
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
522 /* Progress */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
523 purple_connection_update_progress(gc, _("Connecting to SILC Server"), 1, 5);
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
524
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
525 /* Load SILC key pair */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
526 g_snprintf(pkd, sizeof(pkd), "%s" G_DIR_SEPARATOR_S "public_key.pub", silcpurple_silcdir());
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
527 g_snprintf(prd, sizeof(prd), "%s" G_DIR_SEPARATOR_S "private_key.prv", silcpurple_silcdir());
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
528 if (!silc_load_key_pair((char *)purple_account_get_string(account, "public-key", pkd),
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
529 (char *)purple_account_get_string(account, "private-key", prd),
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
530 (gc->password == NULL) ? "" : gc->password,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
531 &sg->public_key, &sg->private_key)) {
22853
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
532 if (!purple_account_get_password(account)) {
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
533 purple_account_request_password(account, G_CALLBACK(silcpurple_got_password_cb),
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
534 G_CALLBACK(silcpurple_no_password_cb), gc);
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
535 return;
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
536 }
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
537 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_OTHER_ERROR,
27879
f53273ef4e7e Fix an incorrect string. Yes, this breaks the string freeze. But the string
Mark Doliner <markdoliner@pidgin.im>
parents: 27635
diff changeset
538 _("Unable to load SILC key pair"));
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
539 gc->proto_data = NULL;
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
540 silc_free(sg);
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
541 return;
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
542 }
22853
02735afc5a47 Prompt for silc private key passphrase if it is not saved for the account
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22852
diff changeset
543 silcpurple_continue_running(sg);
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
544 }
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
545
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
546 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
547 silcpurple_login(PurpleAccount *account)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
548 {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
549 SilcClient client;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
550 PurpleConnection *gc;
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
551 SilcPurple sg;
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
552 SilcClientParams params;
12217
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
553 const char *cipher, *hmac;
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
554 char *username, *hostname, *realname, **up;
12217
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
555 int i;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
556
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
557 gc = account->gc;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
558 if (!gc)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
559 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
560 gc->proto_data = NULL;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
561
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
562 memset(&params, 0, sizeof(params));
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
563 strcat(params.nickname_format, "%n#a");
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
564
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
565 /* Allocate SILC client */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
566 client = silc_client_alloc(&ops, &params, gc, NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
567 if (!client) {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
568 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_OTHER_ERROR,
20458
446bd3a80bdc Add disconnection reasons to silc.
Will Thompson <resiak@pidgin.im>
parents: 19684
diff changeset
569 _("Out of memory"));
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
570 return;
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
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
573 /* Get username, real name and local hostname for SILC library */
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
574 if (!purple_account_get_username(account))
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
575 purple_account_set_username(account, silc_get_username());
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
576
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
577 username = (char *)purple_account_get_username(account);
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
578 up = g_strsplit(username, "@", 2);
22972
2942c1995c22 Cleanup allocations/frees to match and plug some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 22853
diff changeset
579 username = g_strdup(up[0]);
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
580 g_strfreev(up);
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
581
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
582 if (!purple_account_get_user_info(account)) {
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
583 purple_account_set_user_info(account, silc_get_real_name());
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
584 if (!purple_account_get_user_info(account))
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
585 purple_account_set_user_info(account,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
586 "John T. Noname");
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
587 }
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
588 realname = (char *)purple_account_get_user_info(account);
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
589 hostname = silc_net_localhost();
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
590
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
591 purple_connection_set_display_name(gc, username);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
592
12217
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
593 /* Register requested cipher and HMAC */
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
594 cipher = purple_account_get_string(account, "cipher",
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
595 SILC_DEFAULT_CIPHER);
12217
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
596 for (i = 0; silc_default_ciphers[i].name; i++)
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
597 if (!strcmp(silc_default_ciphers[i].name, cipher)) {
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
598 silc_cipher_register(&(silc_default_ciphers[i]));
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
599 break;
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
600 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
601 hmac = purple_account_get_string(account, "hmac", SILC_DEFAULT_HMAC);
12217
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
602 for (i = 0; silc_default_hmacs[i].name; i++)
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
603 if (!strcmp(silc_default_hmacs[i].name, hmac)) {
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
604 silc_hmac_register(&(silc_default_hmacs[i]));
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
605 break;
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
606 }
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
607
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
608 sg = silc_calloc(1, sizeof(*sg));
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
609 if (!sg)
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
610 return;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
611 sg->client = client;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
612 sg->gc = gc;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
613 sg->account = account;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
614 gc->proto_data = sg;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
615
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
616 /* Init SILC client */
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
617 if (!silc_client_init(client, username, hostname, realname,
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
618 silcpurple_running, sg)) {
21513
02642f4cb3df Switch to purple_connection_error_reason in msnp9, and a few places I missed in
Will Thompson <resiak@pidgin.im>
parents: 21503
diff changeset
619 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_OTHER_ERROR,
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 26482
diff changeset
620 _("Unable to initialize SILC protocol"));
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
621 gc->proto_data = NULL;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
622 silc_free(sg);
22972
2942c1995c22 Cleanup allocations/frees to match and plug some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 22853
diff changeset
623 silc_free(hostname);
2942c1995c22 Cleanup allocations/frees to match and plug some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 22853
diff changeset
624 g_free(username);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
625 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
626 }
22972
2942c1995c22 Cleanup allocations/frees to match and plug some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 22853
diff changeset
627 silc_free(hostname);
2942c1995c22 Cleanup allocations/frees to match and plug some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 22853
diff changeset
628 g_free(username);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
629
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
630 /* Check the ~/.silc dir and create it, and new key pair if necessary. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
631 if (!silcpurple_check_silc_dir(gc)) {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
632 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_OTHER_ERROR,
20458
446bd3a80bdc Add disconnection reasons to silc.
Will Thompson <resiak@pidgin.im>
parents: 19684
diff changeset
633 _("Error loading SILC key pair"));
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
634 gc->proto_data = NULL;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
635 silc_free(sg);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
636 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
637 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
638
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
639 #if __SILC_TOOLKIT_VERSION < SILC_VERSION(1,1,1)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
640 /* Schedule SILC using Glib's event loop */
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
641 sg->scheduler = purple_timeout_add(300, (GSourceFunc)silcpurple_scheduler, client);
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
642 #else
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
643 /* Run SILC scheduler */
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
644 sg->tasks = silc_dlist_init();
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
645 silc_schedule_set_notify(client->schedule, silcpurple_scheduler,
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
646 client);
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
647 silc_client_run_one(client);
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
648 #endif /* __SILC_TOOLKIT_VERSION */
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
649 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
650
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
651 static int
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
652 silcpurple_close_final(gpointer *context)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
653 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
654 SilcPurple sg = (SilcPurple)context;
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
655
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
656 silc_client_stop(sg->client, NULL, NULL);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
657 silc_client_free(sg->client);
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
658 if (sg->sha1hash)
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
659 silc_hash_free(sg->sha1hash);
12217
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
660 if (sg->mimeass)
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
661 silc_mime_assembler_free(sg->mimeass);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
662 silc_free(sg);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
663 return 0;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
664 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
665
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
666 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
667 silcpurple_close(PurpleConnection *gc)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
668 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
669 SilcPurple sg = gc->proto_data;
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
670 #if __SILC_TOOLKIT_VERSION >= SILC_VERSION(1,1,1)
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
671 SilcPurpleTask task;
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
672 #endif /* __SILC_TOOLKIT_VERSION */
23545
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
673 GHashTable *ui_info;
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
674 const char *ui_name = NULL, *ui_website = NULL;
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
675 char *quit_msg;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
676
10547
61f5540fc15a [gaim-migrate @ 11917]
Mark Doliner <markdoliner@pidgin.im>
parents: 10516
diff changeset
677 g_return_if_fail(sg != NULL);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
678
23545
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
679 ui_info = purple_core_get_ui_info();
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
680
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
681 if(ui_info) {
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
682 ui_name = g_hash_table_lookup(ui_info, "name");
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
683 ui_website = g_hash_table_lookup(ui_info, "website");
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
684 }
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
685
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
686 if(!ui_name || !ui_website) {
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
687 ui_name = "Pidgin";
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
688 ui_website = PURPLE_WEBSITE;
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
689 }
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
690 quit_msg = g_strdup_printf(_("Download %s: %s"),
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
691 ui_name, ui_website);
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
692
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
693 /* Send QUIT */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
694 silc_client_command_call(sg->client, sg->conn, NULL,
23545
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
695 "QUIT", quit_msg,
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
696 NULL);
23545
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
697 g_free(quit_msg);
8849
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 if (sg->conn)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
700 silc_client_close_connection(sg->client, sg->conn);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
701
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
702 #if __SILC_TOOLKIT_VERSION >= SILC_VERSION(1,1,1)
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
703 if (sg->conn)
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
704 silc_client_run_one(sg->client);
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
705 silc_schedule_set_notify(sg->client->schedule, NULL, NULL);
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
706
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
707 silc_dlist_start(sg->tasks);
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
708 while ((task = silc_dlist_get(sg->tasks))) {
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
709 purple_input_remove(task->tag);
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
710 silc_free(task);
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
711 }
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
712 silc_dlist_uninit(sg->tasks);
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
713 #endif /* __SILC_TOOLKIT_VERSION */
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
714
17570
4cca2fc0ec83 libpurple should not use glib eventloop stuff directly, since we have our
Richard Laager <rlaager@pidgin.im>
parents: 17566
diff changeset
715 purple_timeout_remove(sg->scheduler);
4cca2fc0ec83 libpurple should not use glib eventloop stuff directly, since we have our
Richard Laager <rlaager@pidgin.im>
parents: 17566
diff changeset
716 purple_timeout_add(1, (GSourceFunc)silcpurple_close_final, sg);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
717 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
718
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
719
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
720 /****************************** Protocol Actions *****************************/
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 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
723 silcpurple_attrs_cancel(PurpleConnection *gc, PurpleRequestFields *fields)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
724 {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
725 /* Nothing */
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
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
728 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
729 silcpurple_attrs_cb(PurpleConnection *gc, PurpleRequestFields *fields)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
730 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
731 SilcPurple sg = gc->proto_data;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
732 SilcClient client = sg->client;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
733 SilcClientConnection conn = sg->conn;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
734 PurpleRequestField *f;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
735 char *tmp;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
736 SilcUInt32 tmp_len, mask;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
737 SilcAttributeObjService service;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
738 SilcAttributeObjDevice dev;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
739 SilcVCardStruct vcard;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
740 const char *val;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
741
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
742 sg = gc->proto_data;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
743 if (!sg)
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 memset(&service, 0, sizeof(service));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
747 memset(&dev, 0, sizeof(dev));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
748 memset(&vcard, 0, sizeof(vcard));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
749
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
750 silc_client_attribute_del(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
751 SILC_ATTRIBUTE_USER_INFO, NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
752 silc_client_attribute_del(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
753 SILC_ATTRIBUTE_SERVICE, NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
754 silc_client_attribute_del(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
755 SILC_ATTRIBUTE_STATUS_MOOD, NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
756 silc_client_attribute_del(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
757 SILC_ATTRIBUTE_STATUS_FREETEXT, NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
758 silc_client_attribute_del(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
759 SILC_ATTRIBUTE_STATUS_MESSAGE, NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
760 silc_client_attribute_del(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
761 SILC_ATTRIBUTE_PREFERRED_LANGUAGE, NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
762 silc_client_attribute_del(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
763 SILC_ATTRIBUTE_PREFERRED_CONTACT, NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
764 silc_client_attribute_del(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
765 SILC_ATTRIBUTE_TIMEZONE, NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
766 silc_client_attribute_del(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
767 SILC_ATTRIBUTE_GEOLOCATION, NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
768 silc_client_attribute_del(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
769 SILC_ATTRIBUTE_DEVICE_INFO, NULL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
770
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
771 /* Set mood */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
772 mask = 0;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
773 f = purple_request_fields_get_field(fields, "mood_normal");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
774 if (f && purple_request_field_bool_get_value(f))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
775 mask |= SILC_ATTRIBUTE_MOOD_NORMAL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
776 f = purple_request_fields_get_field(fields, "mood_happy");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
777 if (f && purple_request_field_bool_get_value(f))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
778 mask |= SILC_ATTRIBUTE_MOOD_HAPPY;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
779 f = purple_request_fields_get_field(fields, "mood_sad");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
780 if (f && purple_request_field_bool_get_value(f))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
781 mask |= SILC_ATTRIBUTE_MOOD_SAD;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
782 f = purple_request_fields_get_field(fields, "mood_angry");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
783 if (f && purple_request_field_bool_get_value(f))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
784 mask |= SILC_ATTRIBUTE_MOOD_ANGRY;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
785 f = purple_request_fields_get_field(fields, "mood_jealous");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
786 if (f && purple_request_field_bool_get_value(f))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
787 mask |= SILC_ATTRIBUTE_MOOD_JEALOUS;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
788 f = purple_request_fields_get_field(fields, "mood_ashamed");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
789 if (f && purple_request_field_bool_get_value(f))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
790 mask |= SILC_ATTRIBUTE_MOOD_ASHAMED;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
791 f = purple_request_fields_get_field(fields, "mood_invincible");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
792 if (f && purple_request_field_bool_get_value(f))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
793 mask |= SILC_ATTRIBUTE_MOOD_INVINCIBLE;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
794 f = purple_request_fields_get_field(fields, "mood_inlove");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
795 if (f && purple_request_field_bool_get_value(f))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
796 mask |= SILC_ATTRIBUTE_MOOD_INLOVE;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
797 f = purple_request_fields_get_field(fields, "mood_sleepy");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
798 if (f && purple_request_field_bool_get_value(f))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
799 mask |= SILC_ATTRIBUTE_MOOD_SLEEPY;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
800 f = purple_request_fields_get_field(fields, "mood_bored");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
801 if (f && purple_request_field_bool_get_value(f))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
802 mask |= SILC_ATTRIBUTE_MOOD_BORED;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
803 f = purple_request_fields_get_field(fields, "mood_excited");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
804 if (f && purple_request_field_bool_get_value(f))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
805 mask |= SILC_ATTRIBUTE_MOOD_EXCITED;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
806 f = purple_request_fields_get_field(fields, "mood_anxious");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
807 if (f && purple_request_field_bool_get_value(f))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
808 mask |= SILC_ATTRIBUTE_MOOD_ANXIOUS;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
809 silc_client_attribute_add(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
810 SILC_ATTRIBUTE_STATUS_MOOD,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
811 SILC_32_TO_PTR(mask),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
812 sizeof(SilcUInt32));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
813
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
814 /* Set preferred contact */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
815 mask = 0;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
816 f = purple_request_fields_get_field(fields, "contact_chat");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
817 if (f && purple_request_field_bool_get_value(f))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
818 mask |= SILC_ATTRIBUTE_CONTACT_CHAT;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
819 f = purple_request_fields_get_field(fields, "contact_email");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
820 if (f && purple_request_field_bool_get_value(f))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
821 mask |= SILC_ATTRIBUTE_CONTACT_EMAIL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
822 f = purple_request_fields_get_field(fields, "contact_call");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
823 if (f && purple_request_field_bool_get_value(f))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
824 mask |= SILC_ATTRIBUTE_CONTACT_CALL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
825 f = purple_request_fields_get_field(fields, "contact_sms");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
826 if (f && purple_request_field_bool_get_value(f))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
827 mask |= SILC_ATTRIBUTE_CONTACT_SMS;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
828 f = purple_request_fields_get_field(fields, "contact_mms");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
829 if (f && purple_request_field_bool_get_value(f))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
830 mask |= SILC_ATTRIBUTE_CONTACT_MMS;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
831 f = purple_request_fields_get_field(fields, "contact_video");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
832 if (f && purple_request_field_bool_get_value(f))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
833 mask |= SILC_ATTRIBUTE_CONTACT_VIDEO;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
834 if (mask)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
835 silc_client_attribute_add(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
836 SILC_ATTRIBUTE_PREFERRED_CONTACT,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
837 SILC_32_TO_PTR(mask),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
838 sizeof(SilcUInt32));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
839
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
840 /* Set status text */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
841 val = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
842 f = purple_request_fields_get_field(fields, "status_text");
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
843 if (f)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
844 val = purple_request_field_string_get_value(f);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
845 if (val && *val)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
846 silc_client_attribute_add(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
847 SILC_ATTRIBUTE_STATUS_FREETEXT,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
848 (void *)val, strlen(val));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
850 /* Set vcard */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
851 val = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
852 f = purple_request_fields_get_field(fields, "vcard");
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
853 if (f)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
854 val = purple_request_field_string_get_value(f);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
855 if (val && *val) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
856 purple_account_set_string(sg->account, "vcard", val);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
857 tmp = silc_file_readfile(val, &tmp_len);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
858 if (tmp) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
859 tmp[tmp_len] = 0;
11318
13fa1d5134f3 [gaim-migrate @ 13521]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11257
diff changeset
860 if (silc_vcard_decode((unsigned char *)tmp, tmp_len, &vcard))
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
861 silc_client_attribute_add(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
862 SILC_ATTRIBUTE_USER_INFO,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
863 (void *)&vcard,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
864 sizeof(vcard));
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 silc_vcard_free(&vcard);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
867 silc_free(tmp);
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
868 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
869 purple_account_set_string(sg->account, "vcard", "");
8849
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
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
872 #ifdef HAVE_SYS_UTSNAME_H
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
873 /* Set device info */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
874 f = purple_request_fields_get_field(fields, "device");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
875 if (f && purple_request_field_bool_get_value(f)) {
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
876 struct utsname u;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
877 if (!uname(&u)) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
878 dev.type = SILC_ATTRIBUTE_DEVICE_COMPUTER;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
879 dev.version = u.release;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
880 dev.model = u.sysname;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
881 silc_client_attribute_add(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
882 SILC_ATTRIBUTE_DEVICE_INFO,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
883 (void *)&dev, sizeof(dev));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
884 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
885 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
886 #endif
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
887
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
888 /* Set timezone */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
889 val = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
890 f = purple_request_fields_get_field(fields, "timezone");
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
891 if (f)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
892 val = purple_request_field_string_get_value(f);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
893 if (val && *val)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
894 silc_client_attribute_add(client, conn,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
895 SILC_ATTRIBUTE_TIMEZONE,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
896 (void *)val, strlen(val));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
897 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
898
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
899 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
900 silcpurple_attrs(PurplePluginAction *action)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
901 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
902 PurpleConnection *gc = (PurpleConnection *) action->context;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
903 SilcPurple sg = gc->proto_data;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
904 SilcClient client = sg->client;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
905 SilcClientConnection conn = sg->conn;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
906 PurpleRequestFields *fields;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
907 PurpleRequestFieldGroup *g;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
908 PurpleRequestField *f;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
909 SilcHashTable attrs;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
910 SilcAttributePayload attr;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
911 gboolean mnormal = TRUE, mhappy = FALSE, msad = FALSE,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
912 mangry = FALSE, mjealous = FALSE, mashamed = FALSE,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
913 minvincible = FALSE, minlove = FALSE, msleepy = FALSE,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
914 mbored = FALSE, mexcited = FALSE, manxious = FALSE;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
915 gboolean cemail = FALSE, ccall = FALSE, csms = FALSE,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
916 cmms = FALSE, cchat = TRUE, cvideo = FALSE;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
917 gboolean device = TRUE;
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
918 char status[1024], tz[16];
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
919
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
920 sg = gc->proto_data;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
921 if (!sg)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
922 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
923
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
924 memset(status, 0, sizeof(status));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
925
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
926 attrs = silc_client_attributes_get(client, conn);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
927 if (attrs) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
928 if (silc_hash_table_find(attrs,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
929 SILC_32_TO_PTR(SILC_ATTRIBUTE_STATUS_MOOD),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
930 NULL, (void *)&attr)) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
931 SilcUInt32 mood = 0;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
932 silc_attribute_get_object(attr, &mood, sizeof(mood));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
933 mnormal = !mood;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
934 mhappy = (mood & SILC_ATTRIBUTE_MOOD_HAPPY);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
935 msad = (mood & SILC_ATTRIBUTE_MOOD_SAD);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
936 mangry = (mood & SILC_ATTRIBUTE_MOOD_ANGRY);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
937 mjealous = (mood & SILC_ATTRIBUTE_MOOD_JEALOUS);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
938 mashamed = (mood & SILC_ATTRIBUTE_MOOD_ASHAMED);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
939 minvincible = (mood & SILC_ATTRIBUTE_MOOD_INVINCIBLE);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
940 minlove = (mood & SILC_ATTRIBUTE_MOOD_INLOVE);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
941 msleepy = (mood & SILC_ATTRIBUTE_MOOD_SLEEPY);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
942 mbored = (mood & SILC_ATTRIBUTE_MOOD_BORED);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
943 mexcited = (mood & SILC_ATTRIBUTE_MOOD_EXCITED);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
944 manxious = (mood & SILC_ATTRIBUTE_MOOD_ANXIOUS);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
945 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
946
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
947 if (silc_hash_table_find(attrs,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
948 SILC_32_TO_PTR(SILC_ATTRIBUTE_PREFERRED_CONTACT),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
949 NULL, (void *)&attr)) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
950 SilcUInt32 contact = 0;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
951 silc_attribute_get_object(attr, &contact, sizeof(contact));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
952 cemail = (contact & SILC_ATTRIBUTE_CONTACT_EMAIL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
953 ccall = (contact & SILC_ATTRIBUTE_CONTACT_CALL);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
954 csms = (contact & SILC_ATTRIBUTE_CONTACT_SMS);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
955 cmms = (contact & SILC_ATTRIBUTE_CONTACT_MMS);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
956 cchat = (contact & SILC_ATTRIBUTE_CONTACT_CHAT);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
957 cvideo = (contact & SILC_ATTRIBUTE_CONTACT_VIDEO);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
958 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
959
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
960 if (silc_hash_table_find(attrs,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
961 SILC_32_TO_PTR(SILC_ATTRIBUTE_STATUS_FREETEXT),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
962 NULL, (void *)&attr))
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
963 silc_attribute_get_object(attr, &status, sizeof(status));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
964
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
965 if (!silc_hash_table_find(attrs,
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
966 SILC_32_TO_PTR(SILC_ATTRIBUTE_DEVICE_INFO),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
967 NULL, (void *)&attr))
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
968 device = FALSE;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
969 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
970
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
971 fields = purple_request_fields_new();
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
972
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
973 g = purple_request_field_group_new(NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
974 f = purple_request_field_label_new("l3", _("Your Current Mood"));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
975 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
976 f = purple_request_field_bool_new("mood_normal", _("Normal"), mnormal);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
977 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
978 f = purple_request_field_bool_new("mood_happy", _("Happy"), mhappy);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
979 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
980 f = purple_request_field_bool_new("mood_sad", _("Sad"), msad);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
981 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
982 f = purple_request_field_bool_new("mood_angry", _("Angry"), mangry);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
983 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
984 f = purple_request_field_bool_new("mood_jealous", _("Jealous"), mjealous);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
985 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
986 f = purple_request_field_bool_new("mood_ashamed", _("Ashamed"), mashamed);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
987 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
988 f = purple_request_field_bool_new("mood_invincible", _("Invincible"), minvincible);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
989 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
990 f = purple_request_field_bool_new("mood_inlove", _("In love"), minlove);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
991 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
992 f = purple_request_field_bool_new("mood_sleepy", _("Sleepy"), msleepy);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
993 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
994 f = purple_request_field_bool_new("mood_bored", _("Bored"), mbored);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
995 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
996 f = purple_request_field_bool_new("mood_excited", _("Excited"), mexcited);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
997 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
998 f = purple_request_field_bool_new("mood_anxious", _("Anxious"), manxious);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
999 purple_request_field_group_add_field(g, f);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1000
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1001 f = purple_request_field_label_new("l4", _("\nYour Preferred Contact Methods"));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1002 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1003 f = purple_request_field_bool_new("contact_chat", _("Chat"), cchat);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1004 purple_request_field_group_add_field(g, f);
23325
a374a26fe217 Use "email" and "Email" consistently. This is potentially controversial,
Richard Laager <rlaager@pidgin.im>
parents: 23278
diff changeset
1005 f = purple_request_field_bool_new("contact_email", _("Email"), cemail);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1006 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1007 f = purple_request_field_bool_new("contact_call", _("Phone"), ccall);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1008 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1009 f = purple_request_field_bool_new("contact_sms", _("SMS"), csms);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1010 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1011 f = purple_request_field_bool_new("contact_mms", _("MMS"), cmms);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1012 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1013 f = purple_request_field_bool_new("contact_video", _("Video conferencing"), cvideo);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1014 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1015 purple_request_fields_add_group(fields, g);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1016
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1017 g = purple_request_field_group_new(NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1018 f = purple_request_field_string_new("status_text", _("Your Current Status"),
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1019 status[0] ? status : NULL, TRUE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1020 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1021 purple_request_fields_add_group(fields, g);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1022
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1023 g = purple_request_field_group_new(NULL);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1024 #if 0
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1025 f = purple_request_field_label_new("l2", _("Online Services"));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1026 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1027 f = purple_request_field_bool_new("services",
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1028 _("Let others see what services you are using"),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1029 TRUE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1030 purple_request_field_group_add_field(g, f);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1031 #endif
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1032 #ifdef HAVE_SYS_UTSNAME_H
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1033 f = purple_request_field_bool_new("device",
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1034 _("Let others see what computer you are using"),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1035 device);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1036 purple_request_field_group_add_field(g, f);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1037 #endif
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1038 purple_request_fields_add_group(fields, g);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1039
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1040 g = purple_request_field_group_new(NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1041 f = purple_request_field_string_new("vcard", _("Your VCard File"),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1042 purple_account_get_string(sg->account, "vcard", ""),
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1043 FALSE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1044 purple_request_field_group_add_field(g, f);
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1045
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1046 silc_timezone(tz, sizeof(tz));
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1047 f = purple_request_field_string_new("timezone", _("Timezone (UTC)"), tz, FALSE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1048 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1049 purple_request_fields_add_group(fields, g);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1050
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1051 purple_request_fields(gc, _("User Online Status Attributes"),
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1052 _("User Online Status Attributes"),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1053 _("You can let other users see your online status information "
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1054 "and your personal information. Please fill the information "
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1055 "you would like other users to see about yourself."),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1056 fields,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1057 _("OK"), G_CALLBACK(silcpurple_attrs_cb),
16492
4f0dc2d16e55 Update SILC to match resent request API changes
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15884
diff changeset
1058 _("Cancel"), G_CALLBACK(silcpurple_attrs_cancel),
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1059 gc->account, NULL, NULL, gc);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1060 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1061
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1062 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1063 silcpurple_detach(PurplePluginAction *action)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1064 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1065 PurpleConnection *gc = (PurpleConnection *) action->context;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1066 SilcPurple sg;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1067
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1068 if (!gc)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1069 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1070 sg = gc->proto_data;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1071 if (!sg)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1072 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1073
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1074 /* Call DETACH */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1075 silc_client_command_call(sg->client, sg->conn, "DETACH");
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1076 sg->detaching = TRUE;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1077 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1078
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1079 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1080 silcpurple_view_motd(PurplePluginAction *action)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1081 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1082 PurpleConnection *gc = (PurpleConnection *) action->context;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1083 SilcPurple sg;
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1084 char *tmp;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1085
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1086 if (!gc)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1087 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1088 sg = gc->proto_data;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1089 if (!sg)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1090 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1091
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1092 if (!sg->motd) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1093 purple_notify_error(
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1094 gc, _("Message of the Day"), _("No Message of the Day available"),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1095 _("There is no Message of the Day associated with this connection"));
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1096 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1097 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1098
10732
5e314ab498bf [gaim-migrate @ 12334]
Richard Laager <rlaager@pidgin.im>
parents: 10547
diff changeset
1099 tmp = g_markup_escape_text(sg->motd, -1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1100 purple_notify_formatted(gc, NULL, _("Message of the Day"), NULL,
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1101 tmp, NULL, NULL);
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1102 g_free(tmp);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1103 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1104
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1105 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1106 silcpurple_create_keypair_cancel(PurpleConnection *gc, PurpleRequestFields *fields)
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1107 {
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1108 /* Nothing */
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1109 }
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1110
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1111 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1112 silcpurple_create_keypair_cb(PurpleConnection *gc, PurpleRequestFields *fields)
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1113 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1114 SilcPurple sg = gc->proto_data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1115 PurpleRequestField *f;
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1116 const char *val, *pkfile = NULL, *prfile = NULL;
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1117 const char *pass1 = NULL, *pass2 = NULL, *un = NULL, *hn = NULL;
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1118 const char *rn = NULL, *e = NULL, *o = NULL, *c = NULL;
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1119 char *identifier;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1120 int keylen = SILCPURPLE_DEF_PKCS_LEN;
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1121 SilcPublicKey public_key;
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1122
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1123 sg = gc->proto_data;
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1124 if (!sg)
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1125 return;
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1126
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1127 val = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1128 f = purple_request_fields_get_field(fields, "pass1");
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1129 if (f)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1130 val = purple_request_field_string_get_value(f);
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1131 if (val && *val)
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1132 pass1 = val;
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1133 else
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1134 pass1 = "";
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1135 val = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1136 f = purple_request_fields_get_field(fields, "pass2");
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1137 if (f)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1138 val = purple_request_field_string_get_value(f);
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1139 if (val && *val)
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1140 pass2 = val;
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1141 else
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1142 pass2 = "";
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1143
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1144 if (strcmp(pass1, pass2)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1145 purple_notify_error(
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1146 gc, _("Create New SILC Key Pair"), _("Passphrases do not match"), NULL);
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1147 return;
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1148 }
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1149
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1150 val = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1151 f = purple_request_fields_get_field(fields, "key");
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1152 if (f)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1153 val = purple_request_field_string_get_value(f);
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1154 if (val && *val)
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1155 keylen = atoi(val);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1156 f = purple_request_fields_get_field(fields, "pkfile");
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1157 if (f)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1158 pkfile = purple_request_field_string_get_value(f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1159 f = purple_request_fields_get_field(fields, "prfile");
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1160 if (f)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1161 prfile = purple_request_field_string_get_value(f);
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1162
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1163 f = purple_request_fields_get_field(fields, "un");
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1164 if (f)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1165 un = purple_request_field_string_get_value(f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1166 f = purple_request_fields_get_field(fields, "hn");
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1167 if (f)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1168 hn = purple_request_field_string_get_value(f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1169 f = purple_request_fields_get_field(fields, "rn");
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1170 if (f)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1171 rn = purple_request_field_string_get_value(f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1172 f = purple_request_fields_get_field(fields, "e");
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1173 if (f)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1174 e = purple_request_field_string_get_value(f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1175 f = purple_request_fields_get_field(fields, "o");
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1176 if (f)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1177 o = purple_request_field_string_get_value(f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1178 f = purple_request_fields_get_field(fields, "c");
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1179 if (f)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1180 c = purple_request_field_string_get_value(f);
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1181
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1182 identifier = silc_pkcs_silc_encode_identifier((char *)un, (char *)hn,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1183 (char *)rn, (char *)e,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1184 (char *)o, (char *)c,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1185 NULL);
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1186
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1187 /* Create the key pair */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1188 if (!silc_create_key_pair(SILCPURPLE_DEF_PKCS, keylen, pkfile, prfile,
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1189 identifier, pass1, &public_key, NULL,
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1190 FALSE)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1191 purple_notify_error(
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1192 gc, _("Create New SILC Key Pair"), _("Key Pair Generation failed"), NULL);
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1193 return;
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1194 }
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1195
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1196 silcpurple_show_public_key(sg, NULL, public_key, NULL, NULL);
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1197
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1198 silc_pkcs_public_key_free(public_key);
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1199 silc_free(identifier);
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1200 }
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1201
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1202 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1203 silcpurple_create_keypair(PurplePluginAction *action)
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1204 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1205 PurpleConnection *gc = (PurpleConnection *) action->context;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1206 SilcPurple sg = gc->proto_data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1207 PurpleRequestFields *fields;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1208 PurpleRequestFieldGroup *g;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1209 PurpleRequestField *f;
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1210 const char *username, *realname;
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1211 char *hostname, **u;
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1212 char tmp[256], pkd[256], pkd2[256], prd[256], prd2[256];
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1213
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1214 username = purple_account_get_username(sg->account);
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1215 u = g_strsplit(username, "@", 2);
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1216 username = u[0];
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1217 realname = purple_account_get_user_info(sg->account);
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1218 hostname = silc_net_localhost();
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1219 g_snprintf(tmp, sizeof(tmp), "%s@%s", username, hostname);
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1220
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1221 g_snprintf(pkd2, sizeof(pkd2), "%s" G_DIR_SEPARATOR_S"public_key.pub", silcpurple_silcdir());
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1222 g_snprintf(prd2, sizeof(prd2), "%s" G_DIR_SEPARATOR_S"private_key.prv", silcpurple_silcdir());
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1223 g_snprintf(pkd, sizeof(pkd) - 1, "%s",
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1224 purple_account_get_string(gc->account, "public-key", pkd2));
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1225 g_snprintf(prd, sizeof(prd) - 1, "%s",
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1226 purple_account_get_string(gc->account, "private-key", prd2));
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1227
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1228 fields = purple_request_fields_new();
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1229
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1230 g = purple_request_field_group_new(NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1231 f = purple_request_field_string_new("key", _("Key length"), "2048", FALSE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1232 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1233 f = purple_request_field_string_new("pkfile", _("Public key file"), pkd, FALSE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1234 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1235 f = purple_request_field_string_new("prfile", _("Private key file"), prd, FALSE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1236 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1237 purple_request_fields_add_group(fields, g);
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1238
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1239 g = purple_request_field_group_new(NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1240 f = purple_request_field_string_new("un", _("Username"), username ? username : "", FALSE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1241 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1242 f = purple_request_field_string_new("hn", _("Hostname"), hostname ? hostname : "", FALSE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1243 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1244 f = purple_request_field_string_new("rn", _("Real name"), realname ? realname : "", FALSE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1245 purple_request_field_group_add_field(g, f);
23325
a374a26fe217 Use "email" and "Email" consistently. This is potentially controversial,
Richard Laager <rlaager@pidgin.im>
parents: 23278
diff changeset
1246 f = purple_request_field_string_new("e", _("Email"), tmp, FALSE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1247 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1248 f = purple_request_field_string_new("o", _("Organization"), "", FALSE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1249 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1250 f = purple_request_field_string_new("c", _("Country"), "", FALSE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1251 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1252 purple_request_fields_add_group(fields, g);
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1253
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1254 g = purple_request_field_group_new(NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1255 f = purple_request_field_string_new("pass1", _("Passphrase"), "", FALSE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1256 purple_request_field_string_set_masked(f, TRUE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1257 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1258 f = purple_request_field_string_new("pass2", _("Passphrase (retype)"), "", FALSE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1259 purple_request_field_string_set_masked(f, TRUE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1260 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1261 purple_request_fields_add_group(fields, g);
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1262
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1263 purple_request_fields(gc, _("Create New SILC Key Pair"),
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1264 _("Create New SILC Key Pair"), NULL, fields,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1265 _("Generate Key Pair"), G_CALLBACK(silcpurple_create_keypair_cb),
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1266 _("Cancel"), G_CALLBACK(silcpurple_create_keypair_cancel),
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1267 gc->account, NULL, NULL, gc);
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1268
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1269 g_strfreev(u);
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1270 silc_free(hostname);
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1271 }
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1272
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1273 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1274 silcpurple_change_pass(PurplePluginAction *action)
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1275 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1276 PurpleConnection *gc = (PurpleConnection *) action->context;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1277 purple_account_request_change_password(purple_connection_get_account(gc));
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1278 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1279
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1280 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1281 silcpurple_change_passwd(PurpleConnection *gc, const char *old, const char *new)
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1282 {
22852
f6f9031e09fe Fix for changing silc private key passphrase to or from the empty string,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22847
diff changeset
1283 char prd[256];
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1284 g_snprintf(prd, sizeof(prd), "%s" G_DIR_SEPARATOR_S "private_key.pub", silcpurple_silcdir());
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1285 silc_change_private_key_passphrase(purple_account_get_string(gc->account,
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1286 "private-key",
22852
f6f9031e09fe Fix for changing silc private key passphrase to or from the empty string,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22847
diff changeset
1287 prd), old ? old : "", new ? new : "");
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1288 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1289
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1290 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1291 silcpurple_show_set_info(PurplePluginAction *action)
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1292 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1293 PurpleConnection *gc = (PurpleConnection *) action->context;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1294 purple_account_request_change_user_info(purple_connection_get_account(gc));
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1295 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1296
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1297 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1298 silcpurple_set_info(PurpleConnection *gc, const char *text)
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1299 {
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1300 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1301
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1302 static GList *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1303 silcpurple_actions(PurplePlugin *plugin, gpointer context)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1304 {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1305 GList *list = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1306 PurplePluginAction *act;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1307
17677
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
1308 act = purple_plugin_action_new(_("Online Status"),
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
1309 silcpurple_attrs);
c1ef813bddcf Remove the following SILC account options, as suggested by Pekka Riikonen
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17675
diff changeset
1310 list = g_list_append(list, act);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1311
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1312 act = purple_plugin_action_new(_("Detach From Server"),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1313 silcpurple_detach);
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
1314 list = g_list_append(list, act);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1315
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1316 act = purple_plugin_action_new(_("View Message of the Day"),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1317 silcpurple_view_motd);
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
1318 list = g_list_append(list, act);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1319
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1320 act = purple_plugin_action_new(_("Create SILC Key Pair..."),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1321 silcpurple_create_keypair);
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1322 list = g_list_append(list, act);
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
1323
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1324 act = purple_plugin_action_new(_("Change Password..."),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1325 silcpurple_change_pass);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1326 list = g_list_append(list, act);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1327
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1328 act = purple_plugin_action_new(_("Set User Info..."),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1329 silcpurple_show_set_info);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1330 list = g_list_append(list, act);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1331
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1332 return list;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1333 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1334
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1335
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1336 /******************************* IM Routines *********************************/
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1337
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1338 typedef struct {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1339 char *nick;
11318
13fa1d5134f3 [gaim-migrate @ 13521]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11257
diff changeset
1340 char *message;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1341 SilcUInt32 message_len;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1342 SilcMessageFlags flags;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1343 PurpleMessageFlags gflags;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1344 } *SilcPurpleIM;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1345
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1346 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1347 silcpurple_send_im_resolved(SilcClient client,
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1348 SilcClientConnection conn,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1349 SilcStatus status,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1350 SilcDList clients,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1351 void *context)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1352 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1353 PurpleConnection *gc = client->application;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1354 SilcPurple sg = gc->proto_data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1355 SilcPurpleIM im = context;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1356 PurpleConversation *convo;
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1357 char tmp[256];
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1358 SilcClientEntry client_entry;
12217
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
1359 SilcDList list;
25545
040ec50ba303 Plug a memory leak in SILC, thanks to Luke Petre.
Luke Petre <luke@petre.net>
parents: 23551
diff changeset
1360 gboolean free_list = FALSE;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1361
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1362 convo = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, im->nick,
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1363 sg->account);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1364 if (!convo)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1365 return;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1366
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1367 if (!clients)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1368 goto err;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1369
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1370 if (silc_dlist_count(clients) > 1) {
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1371 /* Find the correct one. The im->nick might be a formatted nick
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1372 so this will find the correct one. */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1373 clients = silc_client_get_clients_local(client, conn,
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1374 im->nick, FALSE);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1375 if (!clients)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1376 goto err;
25545
040ec50ba303 Plug a memory leak in SILC, thanks to Luke Petre.
Luke Petre <luke@petre.net>
parents: 23551
diff changeset
1377
040ec50ba303 Plug a memory leak in SILC, thanks to Luke Petre.
Luke Petre <luke@petre.net>
parents: 23551
diff changeset
1378 free_list = TRUE;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1379 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1380
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1381 silc_dlist_start(clients);
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1382 client_entry = silc_dlist_get(clients);
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1383
12217
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
1384 /* Check for images */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1385 if (im->gflags & PURPLE_MESSAGE_IMAGES) {
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1386 list = silcpurple_image_message(im->message,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1387 (SilcUInt32 *)(void *)&im->flags);
12303
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1388 if (list) {
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1389 /* Send one or more MIME message. If more than one, they
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1390 are MIME fragments due to over large message */
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1391 SilcBuffer buf;
12217
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
1392
12303
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1393 silc_dlist_start(list);
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1394 while ((buf = silc_dlist_get(list)) != SILC_LIST_END)
15081
7e978e8dc84a [gaim-migrate @ 17801]
Daniel Atallah <datallah@pidgin.im>
parents: 14899
diff changeset
1395 silc_client_send_private_message(client, conn,
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
1396 client_entry, im->flags, sg->sha1hash,
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1397 buf->data,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1398 silc_buffer_len(buf));
12303
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1399 silc_mime_partial_free(list);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1400 purple_conv_im_write(PURPLE_CONV_IM(convo), conn->local_entry->nickname,
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1401 im->message, 0, time(NULL));
12303
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1402 goto out;
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1403 }
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1404 }
12217
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
1405
12303
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1406 /* Send the message */
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1407 silc_client_send_private_message(client, conn, client_entry, im->flags,
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
1408 sg->sha1hash, (unsigned char *)im->message, im->message_len);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1409 purple_conv_im_write(PURPLE_CONV_IM(convo), conn->local_entry->nickname,
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1410 im->message, 0, time(NULL));
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1411 goto out;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1412
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1413 err:
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1414 g_snprintf(tmp, sizeof(tmp),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1415 _("User <I>%s</I> is not present in the network"), im->nick);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1416 purple_conversation_write(convo, NULL, tmp, PURPLE_MESSAGE_SYSTEM, time(NULL));
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1417
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1418 out:
25545
040ec50ba303 Plug a memory leak in SILC, thanks to Luke Petre.
Luke Petre <luke@petre.net>
parents: 23551
diff changeset
1419 if (free_list) {
040ec50ba303 Plug a memory leak in SILC, thanks to Luke Petre.
Luke Petre <luke@petre.net>
parents: 23551
diff changeset
1420 silc_client_list_free(client, conn, clients);
040ec50ba303 Plug a memory leak in SILC, thanks to Luke Petre.
Luke Petre <luke@petre.net>
parents: 23551
diff changeset
1421 }
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1422 g_free(im->nick);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1423 g_free(im->message);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1424 silc_free(im);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1425 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1426
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1427 static int
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1428 silcpurple_send_im(PurpleConnection *gc, const char *who, const char *message,
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1429 PurpleMessageFlags flags)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1430 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1431 SilcPurple sg = gc->proto_data;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1432 SilcClient client = sg->client;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1433 SilcClientConnection conn = sg->conn;
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1434 SilcDList clients;
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1435 SilcClientEntry client_entry;
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1436 SilcUInt32 mflags;
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1437 char *msg, *tmp;
12217
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
1438 int ret = 0;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1439 gboolean sign = purple_account_get_bool(sg->account, "sign-verify", FALSE);
12217
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
1440 SilcDList list;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1441
12216
d80739091a63 [gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12167
diff changeset
1442 if (!who || !message)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1443 return 0;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1444
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1445 mflags = SILC_MESSAGE_FLAG_UTF8;
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1446
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1447 tmp = msg = purple_unescape_html(message);
12216
d80739091a63 [gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12167
diff changeset
1448
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1449 if (!g_ascii_strncasecmp(msg, "/me ", 4)) {
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1450 msg += 4;
12216
d80739091a63 [gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12167
diff changeset
1451 if (!*msg) {
d80739091a63 [gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12167
diff changeset
1452 g_free(tmp);
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1453 return 0;
12216
d80739091a63 [gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12167
diff changeset
1454 }
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1455 mflags |= SILC_MESSAGE_FLAG_ACTION;
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1456 } else if (strlen(msg) > 1 && msg[0] == '/') {
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1457 if (!silc_client_command_call(client, conn, msg + 1))
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1458 purple_notify_error(gc, _("Call Command"),
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1459 _("Cannot call command"),
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1460 _("Unknown command"));
12216
d80739091a63 [gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12167
diff changeset
1461 g_free(tmp);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1462 return 0;
12216
d80739091a63 [gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12167
diff changeset
1463 }
8849
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 if (sign)
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1466 mflags |= SILC_MESSAGE_FLAG_SIGNED;
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 /* Find client entry */
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1469 clients = silc_client_get_clients_local(client, conn, who, FALSE);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1470 if (!clients) {
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1471 /* Resolve unknown user */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1472 SilcPurpleIM im = silc_calloc(1, sizeof(*im));
12216
d80739091a63 [gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12167
diff changeset
1473 if (!im) {
d80739091a63 [gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12167
diff changeset
1474 g_free(tmp);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1475 return 0;
12216
d80739091a63 [gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12167
diff changeset
1476 }
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1477 im->nick = g_strdup(who);
12217
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
1478 im->message = g_strdup(message);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1479 im->message_len = strlen(im->message);
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1480 im->flags = mflags;
12303
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1481 im->gflags = flags;
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1482 silc_client_get_clients(client, conn, who, NULL,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1483 silcpurple_send_im_resolved, im);
12216
d80739091a63 [gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12167
diff changeset
1484 g_free(tmp);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1485 return 0;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1486 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1487
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1488 silc_dlist_start(clients);
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1489 client_entry = silc_dlist_get(clients);
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1490
12217
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
1491 /* Check for images */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1492 if (flags & PURPLE_MESSAGE_IMAGES) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1493 list = silcpurple_image_message(message, &mflags);
12303
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1494 if (list) {
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1495 /* Send one or more MIME message. If more than one, they
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1496 are MIME fragments due to over large message */
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1497 SilcBuffer buf;
12217
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
1498
12303
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1499 silc_dlist_start(list);
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1500 while ((buf = silc_dlist_get(list)) != SILC_LIST_END)
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1501 ret =
15081
7e978e8dc84a [gaim-migrate @ 17801]
Daniel Atallah <datallah@pidgin.im>
parents: 14899
diff changeset
1502 silc_client_send_private_message(client, conn,
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
1503 client_entry, mflags, sg->sha1hash,
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1504 buf->data,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1505 silc_buffer_len(buf));
12303
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1506 silc_mime_partial_free(list);
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1507 g_free(tmp);
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1508 silc_client_list_free(client, conn, clients);
12303
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1509 return ret;
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1510 }
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1511 }
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1512
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1513 /* Send private message directly */
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1514 ret = silc_client_send_private_message(client, conn, client_entry,
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19684
diff changeset
1515 mflags, sg->sha1hash,
12303
f2b594862195 [gaim-migrate @ 14607]
Pekka Riikonen <priikone@silcnet.org>
parents: 12217
diff changeset
1516 (unsigned char *)msg,
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1517 strlen(msg));
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1518
12216
d80739091a63 [gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12167
diff changeset
1519 g_free(tmp);
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
1520 silc_client_list_free(client, conn, clients);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1521 return ret;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1522 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1523
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1524
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1525 static GList *silcpurple_blist_node_menu(PurpleBlistNode *node) {
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9024
diff changeset
1526 /* split this single menu building function back into the two
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9024
diff changeset
1527 original: one for buddies and one for chats */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1528 if(PURPLE_BLIST_NODE_IS_CHAT(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1529 return silcpurple_chat_menu((PurpleChat *) node);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1530 } else if(PURPLE_BLIST_NODE_IS_BUDDY(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1531 return silcpurple_buddy_menu((PurpleBuddy *) node);
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9024
diff changeset
1532 } else {
9038
165198d63a81 [gaim-migrate @ 9814]
Tim Ringenbach <marv@pidgin.im>
parents: 9030
diff changeset
1533 g_return_val_if_reached(NULL);
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1534 }
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9024
diff changeset
1535 }
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9024
diff changeset
1536
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1537 /********************************* Commands **********************************/
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1538
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1539 static PurpleCmdRet silcpurple_cmd_chat_part(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1540 const char *cmd, char **args, char **error, void *data)
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1541 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1542 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1543 PurpleConversation *convo = conv;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1544 int id = 0;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1545
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1546 gc = purple_conversation_get_gc(conv);
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1547
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1548 if (gc == NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1549 return PURPLE_CMD_RET_FAILED;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1550
13636
7f3119845b45 [gaim-migrate @ 16033]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 13546
diff changeset
1551 if(args && args[0])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1552 convo = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, args[0],
10246
aa5bff72f94c [gaim-migrate @ 11386]
Mark Doliner <markdoliner@pidgin.im>
parents: 10225
diff changeset
1553 gc->account);
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1554
13636
7f3119845b45 [gaim-migrate @ 16033]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 13546
diff changeset
1555 if (convo != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1556 id = purple_conv_chat_get_id(PURPLE_CONV_CHAT(convo));
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1557
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1558 if (id == 0)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1559 return PURPLE_CMD_RET_FAILED;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1560
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1561 silcpurple_chat_leave(gc, id);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1562
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1563 return PURPLE_CMD_RET_OK;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1564
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1565 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1566
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1567 static PurpleCmdRet silcpurple_cmd_chat_topic(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1568 const char *cmd, char **args, char **error, void *data)
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1569 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1570 PurpleConnection *gc;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1571 int id = 0;
9762
125f77c00102 [gaim-migrate @ 10630]
Tim Ringenbach <marv@pidgin.im>
parents: 9754
diff changeset
1572 char *buf, *tmp, *tmp2;
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1573 const char *topic;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1574
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1575 gc = purple_conversation_get_gc(conv);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1576 id = purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv));
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1577
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1578 if (gc == NULL || id == 0)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1579 return PURPLE_CMD_RET_FAILED;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1580
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1581 if (!args || !args[0]) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1582 topic = purple_conv_chat_get_topic (PURPLE_CONV_CHAT(conv));
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1583 if (topic) {
10732
5e314ab498bf [gaim-migrate @ 12334]
Richard Laager <rlaager@pidgin.im>
parents: 10547
diff changeset
1584 tmp = g_markup_escape_text(topic, -1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1585 tmp2 = purple_markup_linkify(tmp);
9762
125f77c00102 [gaim-migrate @ 10630]
Tim Ringenbach <marv@pidgin.im>
parents: 9754
diff changeset
1586 buf = g_strdup_printf(_("current topic is: %s"), tmp2);
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1587 g_free(tmp);
9762
125f77c00102 [gaim-migrate @ 10630]
Tim Ringenbach <marv@pidgin.im>
parents: 9754
diff changeset
1588 g_free(tmp2);
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1589 } else
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1590 buf = g_strdup(_("No topic is set"));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1591 purple_conv_chat_write(PURPLE_CONV_CHAT(conv), gc->account->username, buf,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1592 PURPLE_MESSAGE_SYSTEM|PURPLE_MESSAGE_NO_LOG, time(NULL));
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1593 g_free(buf);
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1594
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1595 }
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1596
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1597 if (args && args[0] && (strlen(args[0]) > 255)) {
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1598 *error = g_strdup(_("Topic too long"));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1599 return PURPLE_CMD_RET_FAILED;
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1600 }
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1601
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1602 silcpurple_chat_set_topic(gc, id, args ? args[0] : NULL);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1603
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1604 return PURPLE_CMD_RET_OK;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1605 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1606
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1607 static PurpleCmdRet silcpurple_cmd_chat_join(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1608 const char *cmd, char **args, char **error, void *data)
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1609 {
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1610 GHashTable *comp;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1611
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1612 if(!args || !args[0])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1613 return PURPLE_CMD_RET_FAILED;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1614
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1615 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
1616
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1617 g_hash_table_replace(comp, "channel", args[0]);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1618 if(args[1])
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1619 g_hash_table_replace(comp, "passphrase", args[1]);
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1620
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1621 silcpurple_chat_join(purple_conversation_get_gc(conv), comp);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1622
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1623 g_hash_table_destroy(comp);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1624 return PURPLE_CMD_RET_OK;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1625 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1626
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1627 static PurpleCmdRet silcpurple_cmd_chat_list(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1628 const char *cmd, char **args, char **error, void *data)
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1629 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1630 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1631 gc = purple_conversation_get_gc(conv);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1632 purple_roomlist_show_with_account(purple_connection_get_account(gc));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1633 return PURPLE_CMD_RET_OK;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1634 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1635
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1636 static PurpleCmdRet silcpurple_cmd_whois(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1637 const char *cmd, char **args, char **error, void *data)
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1638 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1639 PurpleConnection *gc;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1640
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1641 gc = purple_conversation_get_gc(conv);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1642
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1643 if (gc == NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1644 return PURPLE_CMD_RET_FAILED;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1645
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1646 silcpurple_get_info(gc, args[0]);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1647
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1648 return PURPLE_CMD_RET_OK;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1649 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1650
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1651 static PurpleCmdRet silcpurple_cmd_msg(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1652 const char *cmd, char **args, char **error, void *data)
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1653 {
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1654 int ret;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1655 PurpleConnection *gc;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1656
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1657 gc = purple_conversation_get_gc(conv);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1658
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1659 if (gc == NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1660 return PURPLE_CMD_RET_FAILED;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1661
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1662 ret = silcpurple_send_im(gc, args[0], args[1], PURPLE_MESSAGE_SEND);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1663
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1664 if (ret)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1665 return PURPLE_CMD_RET_OK;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1666 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1667 return PURPLE_CMD_RET_FAILED;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1668 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1669
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1670 static PurpleCmdRet silcpurple_cmd_query(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1671 const char *cmd, char **args, char **error, void *data)
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1672 {
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1673 int ret = 1;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1674 PurpleConversation *convo;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1675 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1676 PurpleAccount *account;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1677
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1678 if (!args || !args[0]) {
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1679 *error = g_strdup(_("You must specify a nick"));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1680 return PURPLE_CMD_RET_FAILED;
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1681 }
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1682
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1683 gc = purple_conversation_get_gc(conv);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1684
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1685 if (gc == NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1686 return PURPLE_CMD_RET_FAILED;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1687
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1688 account = purple_connection_get_account(gc);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1689
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1690 convo = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, args[0]);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1691
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1692 if (args[1]) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1693 ret = silcpurple_send_im(gc, args[0], args[1], PURPLE_MESSAGE_SEND);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1694 purple_conv_im_write(PURPLE_CONV_IM(convo), purple_connection_get_display_name(gc),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1695 args[1], PURPLE_MESSAGE_SEND, time(NULL));
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1696 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1697
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1698 if (ret)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1699 return PURPLE_CMD_RET_OK;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1700 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1701 return PURPLE_CMD_RET_FAILED;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1702 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1703
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1704 static PurpleCmdRet silcpurple_cmd_motd(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1705 const char *cmd, char **args, char **error, void *data)
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1706 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1707 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1708 SilcPurple sg;
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1709 char *tmp;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1710
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1711 gc = purple_conversation_get_gc(conv);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1712
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1713 if (gc == NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1714 return PURPLE_CMD_RET_FAILED;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1715
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1716 sg = gc->proto_data;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1717
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1718 if (sg == NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1719 return PURPLE_CMD_RET_FAILED;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1720
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1721 if (!sg->motd) {
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1722 *error = g_strdup(_("There is no Message of the Day associated with this connection"));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1723 return PURPLE_CMD_RET_FAILED;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1724 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1725
10732
5e314ab498bf [gaim-migrate @ 12334]
Richard Laager <rlaager@pidgin.im>
parents: 10547
diff changeset
1726 tmp = g_markup_escape_text(sg->motd, -1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1727 purple_notify_formatted(gc, NULL, _("Message of the Day"), NULL,
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1728 tmp, NULL, NULL);
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1729 g_free(tmp);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1730
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1731 return PURPLE_CMD_RET_OK;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1732 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1733
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1734 static PurpleCmdRet silcpurple_cmd_detach(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1735 const char *cmd, char **args, char **error, void *data)
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1736 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1737 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1738 SilcPurple sg;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1739
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1740 gc = purple_conversation_get_gc(conv);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1741
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1742 if (gc == NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1743 return PURPLE_CMD_RET_FAILED;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1744
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1745 sg = gc->proto_data;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1746
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1747 if (sg == NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1748 return PURPLE_CMD_RET_FAILED;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1749
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1750 silc_client_command_call(sg->client, sg->conn, "DETACH");
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1751 sg->detaching = TRUE;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1752
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1753 return PURPLE_CMD_RET_OK;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1754 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1755
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1756 static PurpleCmdRet silcpurple_cmd_cmode(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1757 const char *cmd, char **args, char **error, void *data)
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1758 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1759 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1760 SilcPurple sg;
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1761 SilcChannelEntry channel;
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1762 char *silccmd, *silcargs, *msg, tmp[256];
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1763 const char *chname;
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1764
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1765 gc = purple_conversation_get_gc(conv);
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1766
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1767 if (gc == NULL || !args || gc->proto_data == NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1768 return PURPLE_CMD_RET_FAILED;
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1769
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1770 sg = gc->proto_data;
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1771
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1772 if (args[0])
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1773 chname = args[0];
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1774 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1775 chname = purple_conversation_get_name(conv);
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1776
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1777 if (!args[1]) {
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1778 channel = silc_client_get_channel(sg->client, sg->conn,
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1779 (char *)chname);
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1780 if (!channel) {
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1781 *error = g_strdup_printf(_("channel %s not found"), chname);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1782 return PURPLE_CMD_RET_FAILED;
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1783 }
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1784 if (channel->mode) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1785 silcpurple_get_chmode_string(channel->mode, tmp, sizeof(tmp));
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1786 msg = g_strdup_printf(_("channel modes for %s: %s"), chname, tmp);
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1787 } else {
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1788 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
1789 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1790 purple_conv_chat_write(PURPLE_CONV_CHAT(conv), "",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1791 msg, PURPLE_MESSAGE_SYSTEM|PURPLE_MESSAGE_NO_LOG, time(NULL));
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1792 g_free(msg);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1793 return PURPLE_CMD_RET_OK;
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1794 }
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1795
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1796 silcargs = g_strjoinv(" ", args);
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1797 silccmd = g_strconcat(cmd, " ", args ? silcargs : NULL, NULL);
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1798 g_free(silcargs);
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1799 if (!silc_client_command_call(sg->client, sg->conn, silccmd)) {
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1800 g_free(silccmd);
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1801 *error = g_strdup_printf(_("Failed to set cmodes for %s"), args[0]);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1802 return PURPLE_CMD_RET_FAILED;
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1803 }
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1804 g_free(silccmd);
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1805
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1806 return PURPLE_CMD_RET_OK;
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1807 }
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1808
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1809 static PurpleCmdRet silcpurple_cmd_generic(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1810 const char *cmd, char **args, char **error, void *data)
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1811 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1812 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1813 SilcPurple sg;
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1814 char *silccmd, *silcargs;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1815
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1816 gc = purple_conversation_get_gc(conv);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1817
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1818 if (gc == NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1819 return PURPLE_CMD_RET_FAILED;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1820
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1821 sg = gc->proto_data;
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1822
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1823 if (sg == NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1824 return PURPLE_CMD_RET_FAILED;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1825
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1826 silcargs = g_strjoinv(" ", args);
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1827 silccmd = g_strconcat(cmd, " ", args ? silcargs : NULL, NULL);
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1828 g_free(silcargs);
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1829 if (!silc_client_command_call(sg->client, sg->conn, silccmd)) {
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1830 g_free(silccmd);
15444
b793ef258d23 I think this changes every user-visible string that contains 'Gaim.' We probably want the UI to be able
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1831 *error = g_strdup_printf(_("Unknown command: %s, (may be a client bug)"), cmd);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1832 return PURPLE_CMD_RET_FAILED;
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1833 }
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
1834 g_free(silccmd);
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1835
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1836 return PURPLE_CMD_RET_OK;
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1837 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1838
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1839 static PurpleCmdRet silcpurple_cmd_quit(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1840 const char *cmd, char **args, char **error, void *data)
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1841 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1842 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1843 SilcPurple sg;
23545
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
1844 GHashTable *ui_info;
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
1845 const char *ui_name = NULL, *ui_website = NULL;
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
1846 char *quit_msg;
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
1847
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1848 gc = purple_conversation_get_gc(conv);
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1849
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1850 if (gc == NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1851 return PURPLE_CMD_RET_FAILED;
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1852
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1853 sg = gc->proto_data;
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1854
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1855 if (sg == NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1856 return PURPLE_CMD_RET_FAILED;
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1857
23545
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
1858 ui_info = purple_core_get_ui_info();
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
1859
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
1860 if(ui_info) {
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
1861 ui_name = g_hash_table_lookup(ui_info, "name");
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
1862 ui_website = g_hash_table_lookup(ui_info, "website");
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
1863 }
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
1864
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
1865 if(!ui_name || !ui_website) {
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
1866 ui_name = "Pidgin";
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
1867 ui_website = PURPLE_WEBSITE;
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
1868 }
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
1869 quit_msg = g_strdup_printf(_("Download %s: %s"),
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
1870 ui_name, ui_website);
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
1871
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1872 silc_client_command_call(sg->client, sg->conn, NULL,
23545
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
1873 "QUIT", (args && args[0]) ? args[0] : quit_msg, NULL);
676b13ddfd2c Added "website" and "dev_website" items to the ui_info GHashTable,
Evan Schoenberg <evands@pidgin.im>
parents: 23542
diff changeset
1874 g_free(quit_msg);
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1875
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1876 return PURPLE_CMD_RET_OK;
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1877 }
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1878
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1879 static PurpleCmdRet silcpurple_cmd_call(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1880 const char *cmd, char **args, char **error, void *data)
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1881 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1882 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1883 SilcPurple sg;
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1884
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1885 gc = purple_conversation_get_gc(conv);
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1886
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1887 if (gc == NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1888 return PURPLE_CMD_RET_FAILED;
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1889
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1890 sg = gc->proto_data;
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1891
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1892 if (sg == NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1893 return PURPLE_CMD_RET_FAILED;
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1894
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1895 if (!silc_client_command_call(sg->client, sg->conn, args[0])) {
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1896 *error = g_strdup_printf(_("Unknown command: %s"), args[0]);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1897 return PURPLE_CMD_RET_FAILED;
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
1898 }
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1899
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1900 return PURPLE_CMD_RET_OK;
9359
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1901 }
89c40efa7f7b [gaim-migrate @ 10167]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9353
diff changeset
1902
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9024
diff changeset
1903
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1904 /************************** Plugin Initialization ****************************/
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1905
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1906 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1907 silcpurple_register_commands(void)
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1908 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1909 purple_cmd_register("part", "w", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1910 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1911 PURPLE_CMD_FLAG_PRPL_ONLY | PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1912 "prpl-silc", silcpurple_cmd_chat_part, _("part [channel]: Leave the chat"), NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1913 purple_cmd_register("leave", "w", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1914 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1915 PURPLE_CMD_FLAG_PRPL_ONLY | PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1916 "prpl-silc", silcpurple_cmd_chat_part, _("leave [channel]: Leave the chat"), NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1917 purple_cmd_register("topic", "s", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1918 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1919 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1920 silcpurple_cmd_chat_topic, _("topic [&lt;new topic&gt;]: View or change the topic"), NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1921 purple_cmd_register("join", "ws", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1922 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1923 PURPLE_CMD_FLAG_PRPL_ONLY | PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1924 "prpl-silc", silcpurple_cmd_chat_join,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1925 _("join &lt;channel&gt; [&lt;password&gt;]: Join a chat on this network"), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1926 purple_cmd_register("list", "", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1927 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1928 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1929 silcpurple_cmd_chat_list, _("list: List channels on this network"), NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1930 purple_cmd_register("whois", "w", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1931 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
1932 "prpl-silc",
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1933 silcpurple_cmd_whois, _("whois &lt;nick&gt;: View nick's information"), NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1934 purple_cmd_register("msg", "ws", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1935 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1936 "prpl-silc", silcpurple_cmd_msg,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1937 _("msg &lt;nick&gt; &lt;message&gt;: Send a private message to a user"), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1938 purple_cmd_register("query", "ws", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1939 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1940 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc", silcpurple_cmd_query,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1941 _("query &lt;nick&gt; [&lt;message&gt;]: Send a private message to a user"), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1942 purple_cmd_register("motd", "", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1943 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1944 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc", silcpurple_cmd_motd,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1945 _("motd: View the server's Message Of The Day"), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1946 purple_cmd_register("detach", "", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1947 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1948 "prpl-silc", silcpurple_cmd_detach,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1949 _("detach: Detach this session"), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1950 purple_cmd_register("quit", "s", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1951 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1952 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc", silcpurple_cmd_quit,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1953 _("quit [message]: Disconnect from the server, with an optional message"), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1954 purple_cmd_register("call", "s", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1955 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1956 "prpl-silc", silcpurple_cmd_call,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1957 _("call &lt;command&gt;: Call any silc client command"), NULL);
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1958 /* 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
1959 * with */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1960 purple_cmd_register("kill", "ws", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1961 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1962 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc", silcpurple_cmd_generic,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1963 _("kill &lt;nick&gt; [-pubkey|&lt;reason&gt;]: Kill nick"), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1964 purple_cmd_register("nick", "w", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1965 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1966 "prpl-silc", silcpurple_cmd_generic,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1967 _("nick &lt;newnick&gt;: Change your nickname"), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1968 purple_cmd_register("whowas", "ww", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1969 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1970 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc", silcpurple_cmd_generic,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1971 _("whowas &lt;nick&gt;: View nick's information"), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1972 purple_cmd_register("cmode", "wws", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1973 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1974 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc", silcpurple_cmd_cmode,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1975 _("cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]: Change or display channel modes"), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1976 purple_cmd_register("cumode", "wws", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1977 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1978 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc", silcpurple_cmd_generic,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1979 _("cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;: Change nick's modes on channel"), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1980 purple_cmd_register("umode", "w", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1981 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1982 "prpl-silc", silcpurple_cmd_generic,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1983 _("umode &lt;usermodes&gt;: Set your modes in the network"), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1984 purple_cmd_register("oper", "s", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1985 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1986 "prpl-silc", silcpurple_cmd_generic,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1987 _("oper &lt;nick&gt; [-pubkey]: Get server operator privileges"), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1988 purple_cmd_register("invite", "ws", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1989 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1990 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc", silcpurple_cmd_generic,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1991 _("invite &lt;channel&gt; [-|+]&lt;nick&gt;: invite nick or add/remove from channel invite list"), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1992 purple_cmd_register("kick", "wws", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1993 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1994 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc", silcpurple_cmd_generic,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1995 _("kick &lt;channel&gt; &lt;nick&gt; [comment]: Kick client from channel"), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1996 purple_cmd_register("info", "w", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1997 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
1998 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc", silcpurple_cmd_generic,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
1999 _("info [server]: View server administrative details"), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2000 purple_cmd_register("ban", "ww", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2001 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2002 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc", silcpurple_cmd_generic,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
2003 _("ban [&lt;channel&gt; +|-&lt;nick&gt;]: Ban client from channel"), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2004 purple_cmd_register("getkey", "w", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2005 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2006 "prpl-silc", silcpurple_cmd_generic,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
2007 _("getkey &lt;nick|server&gt;: Retrieve client's or server's public key"), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2008 purple_cmd_register("stats", "", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2009 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2010 "prpl-silc", silcpurple_cmd_generic,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
2011 _("stats: View server and network statistics"), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2012 purple_cmd_register("ping", "", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2013 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2014 "prpl-silc", silcpurple_cmd_generic,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9552
diff changeset
2015 _("ping: Send PING to the connected server"), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2016 #if 0 /* Purple doesn't handle these yet */
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2017 purple_cmd_register("users", "w", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2018 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2019 "prpl-silc", silcpurple_cmd_users,
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
2020 _("users &lt;channel&gt;: List users in channel"));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2021 purple_cmd_register("names", "ww", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2022 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2023 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-silc", silcpurple_cmd_names,
9488
9d6520fa53fd [gaim-migrate @ 10313]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
2024 _("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
2025 #endif
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
2026 }
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
2027
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2028 static PurpleWhiteboardPrplOps silcpurple_wb_ops =
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents: 11837
diff changeset
2029 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2030 silcpurple_wb_start,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2031 silcpurple_wb_end,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2032 silcpurple_wb_get_dimensions,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2033 silcpurple_wb_set_dimensions,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2034 silcpurple_wb_get_brush,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2035 silcpurple_wb_set_brush,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2036 silcpurple_wb_send,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2037 silcpurple_wb_clear,
16776
c9301dd6aa1f Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents: 16549
diff changeset
2038
c9301dd6aa1f Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents: 16549
diff changeset
2039 /* padding */
c9301dd6aa1f Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents: 16549
diff changeset
2040 NULL,
c9301dd6aa1f Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents: 16549
diff changeset
2041 NULL,
c9301dd6aa1f Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents: 16549
diff changeset
2042 NULL,
c9301dd6aa1f Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents: 16549
diff changeset
2043 NULL
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents: 11837
diff changeset
2044 };
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents: 11837
diff changeset
2045
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2046 static PurplePluginProtocolInfo prpl_info =
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2047 {
12217
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
2048 OPT_PROTO_CHAT_TOPIC | OPT_PROTO_UNIQUE_CHATNAME |
18092
1a2362194473 Mostly taken from the patch on ticket #410, don't send unknown slash
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17408
diff changeset
2049 OPT_PROTO_PASSWORD_OPTIONAL | OPT_PROTO_IM_IMAGE |
1a2362194473 Mostly taken from the patch on ticket #410, don't send unknown slash
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17408
diff changeset
2050 OPT_PROTO_SLASH_COMMANDS_NATIVE,
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2051 NULL, /* user_splits */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2052 NULL, /* protocol_options */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2053 {"jpeg,gif,png,bmp", 0, 0, 96, 96, 0, PURPLE_ICON_SCALE_DISPLAY}, /* icon_spec */
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2054 silcpurple_list_icon, /* list_icon */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2055 NULL, /* list_emblems */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2056 silcpurple_status_text, /* status_text */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2057 silcpurple_tooltip_text, /* tooltip_text */
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2058 silcpurple_away_states, /* away_states */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2059 silcpurple_blist_node_menu, /* blist_node_menu */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2060 silcpurple_chat_info, /* chat_info */
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2061 silcpurple_chat_info_defaults, /* chat_info_defaults */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2062 silcpurple_login, /* login */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2063 silcpurple_close, /* close */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2064 silcpurple_send_im, /* send_im */
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2065 silcpurple_set_info, /* set_info */
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2066 NULL, /* send_typing */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2067 silcpurple_get_info, /* get_info */
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2068 silcpurple_set_status, /* set_status */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2069 silcpurple_idle_set, /* set_idle */
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2070 silcpurple_change_passwd, /* change_passwd */
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2071 silcpurple_add_buddy, /* add_buddy */
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2072 NULL, /* add_buddies */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2073 silcpurple_remove_buddy, /* remove_buddy */
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2074 NULL, /* remove_buddies */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2075 NULL, /* add_permit */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2076 NULL, /* add_deny */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2077 NULL, /* rem_permit */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2078 NULL, /* rem_deny */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2079 NULL, /* set_permit_deny */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2080 silcpurple_chat_join, /* join_chat */
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2081 NULL, /* reject_chat */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2082 silcpurple_get_chat_name, /* get_chat_name */
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2083 silcpurple_chat_invite, /* chat_invite */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2084 silcpurple_chat_leave, /* chat_leave */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2085 NULL, /* chat_whisper */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2086 silcpurple_chat_send, /* chat_send */
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2087 silcpurple_keepalive, /* keepalive */
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2088 NULL, /* register_user */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2089 NULL, /* get_cb_info */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2090 NULL, /* get_cb_away */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2091 NULL, /* alias_buddy */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2092 NULL, /* group_buddy */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2093 NULL, /* rename_group */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2094 NULL, /* buddy_free */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2095 NULL, /* convo_closed */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2096 NULL, /* normalize */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2097 silcpurple_buddy_set_icon, /* set_buddy_icon */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2098 NULL, /* remove_group */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2099 NULL, /* get_cb_real_name */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2100 silcpurple_chat_set_topic, /* set_chat_topic */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2101 NULL, /* find_blist_chat */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2102 silcpurple_roomlist_get_list, /* roomlist_get_list */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2103 silcpurple_roomlist_cancel, /* roomlist_cancel */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2104 NULL, /* roomlist_expand_category */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2105 NULL, /* can_receive_file */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2106 silcpurple_ftp_send_file, /* send_file */
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2107 silcpurple_ftp_new_xfer, /* new_xfer */
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2108 NULL, /* offline_message */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2109 &silcpurple_wb_ops, /* whiteboard_prpl_ops */
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2110 NULL, /* send_raw */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2111 NULL, /* roomlist_room_serialize */
22071
4c47e360e467 Fix the prplinfo structs and get rid of some compile warnings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22069
diff changeset
2112 NULL, /* unregister_user */
4c47e360e467 Fix the prplinfo structs and get rid of some compile warnings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22069
diff changeset
2113 NULL, /* send_attention */
4c47e360e467 Fix the prplinfo structs and get rid of some compile warnings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22069
diff changeset
2114 NULL, /* get_attention_types */
23276
f4944cfaa1ff Use up the last padding for PurplePluginProtocolInfo in a way that allows
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22853
diff changeset
2115 sizeof(PurplePluginProtocolInfo), /* struct_size */
23707
480f94157418 propagate from branch 'im.pidgin.pidgin' (head bd5f7f61d9349053ee4738efc0d17453f0574057)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23325 22648
diff changeset
2116 NULL, /* get_account_text_table */
22648
e286d795c5f9 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22071
diff changeset
2117 NULL, /* initiate_media */
e286d795c5f9 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22071
diff changeset
2118 NULL /* can_do_media */
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2119 };
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2120
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2121 static PurplePluginInfo info =
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2122 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2123 PURPLE_PLUGIN_MAGIC,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2124 PURPLE_MAJOR_VERSION,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2125 PURPLE_MINOR_VERSION,
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2126 PURPLE_PLUGIN_PROTOCOL, /**< type */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2127 NULL, /**< ui_requirement */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2128 0, /**< flags */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2129 NULL, /**< dependencies */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2130 PURPLE_PRIORITY_DEFAULT, /**< priority */
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2131
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2132 "prpl-silc", /**< id */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2133 "SILC", /**< name */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2134 "1.1", /**< version */
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2135 /** summary */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2136 N_("SILC Protocol Plugin"),
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2137 /** description */
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2138 N_("Secure Internet Live Conferencing (SILC) Protocol"),
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2139 "Pekka Riikonen", /**< author */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2140 "http://silcnet.org/", /**< homepage */
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2141
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2142 NULL, /**< load */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2143 NULL, /**< unload */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2144 NULL, /**< destroy */
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2145
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2146 NULL, /**< ui_info */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2147 &prpl_info, /**< extra_info */
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2148 NULL, /**< prefs_info */
16776
c9301dd6aa1f Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents: 16549
diff changeset
2149 silcpurple_actions,
c9301dd6aa1f Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents: 16549
diff changeset
2150
c9301dd6aa1f Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents: 16549
diff changeset
2151 /* padding */
c9301dd6aa1f Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents: 16549
diff changeset
2152 NULL,
c9301dd6aa1f Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents: 16549
diff changeset
2153 NULL,
c9301dd6aa1f Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents: 16549
diff changeset
2154 NULL,
c9301dd6aa1f Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents: 16549
diff changeset
2155 NULL
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2156 };
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2157
22972
2942c1995c22 Cleanup allocations/frees to match and plug some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 22853
diff changeset
2158 #if 0
2942c1995c22 Cleanup allocations/frees to match and plug some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 22853
diff changeset
2159 static SilcBool silcpurple_debug_cb(char *file, char *function, int line,
2942c1995c22 Cleanup allocations/frees to match and plug some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 22853
diff changeset
2160 char *message, void *context)
2942c1995c22 Cleanup allocations/frees to match and plug some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 22853
diff changeset
2161 {
2942c1995c22 Cleanup allocations/frees to match and plug some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 22853
diff changeset
2162 purple_debug_info("SILC", "%s:%d:%s - %s\n", file ? file : "(null)", line, function ? function : "(null)", message ? message : "(null)");
2942c1995c22 Cleanup allocations/frees to match and plug some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 22853
diff changeset
2163 return TRUE;
2942c1995c22 Cleanup allocations/frees to match and plug some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 22853
diff changeset
2164 }
2942c1995c22 Cleanup allocations/frees to match and plug some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 22853
diff changeset
2165 #endif
2942c1995c22 Cleanup allocations/frees to match and plug some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 22853
diff changeset
2166
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2167 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2168 init_plugin(PurplePlugin *plugin)
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2169 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2170 PurpleAccountOption *option;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2171 PurpleAccountUserSplit *split;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2172 char tmp[256];
12217
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
2173 int i;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2174 PurpleKeyValuePair *kvp;
12217
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
2175 GList *list = NULL;
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2176
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2177 silc_plugin = plugin;
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2178
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2179 split = purple_account_user_split_new(_("Network"), "silcnet.org", '@');
10825
986d260851e8 [gaim-migrate @ 12490]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10802
diff changeset
2180 prpl_info.user_splits = g_list_append(prpl_info.user_splits, split);
986d260851e8 [gaim-migrate @ 12490]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10802
diff changeset
2181
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2182 /* Account options */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2183 option = purple_account_option_string_new(_("Connect server"),
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2184 "server",
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2185 "silc.silcnet.org");
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2186 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2187 option = purple_account_option_int_new(_("Port"), "port", 706);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2188 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2189 g_snprintf(tmp, sizeof(tmp), "%s" G_DIR_SEPARATOR_S "public_key.pub", silcpurple_silcdir());
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2190 option = purple_account_option_string_new(_("Public Key file"),
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2191 "public-key", tmp);
10825
986d260851e8 [gaim-migrate @ 12490]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10802
diff changeset
2192 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2193 g_snprintf(tmp, sizeof(tmp), "%s" G_DIR_SEPARATOR_S "private_key.prv", silcpurple_silcdir());
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2194 option = purple_account_option_string_new(_("Private Key file"),
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2195 "private-key", tmp);
10825
986d260851e8 [gaim-migrate @ 12490]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10802
diff changeset
2196 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
12217
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
2197
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
2198 for (i = 0; silc_default_ciphers[i].name; i++) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2199 kvp = g_new0(PurpleKeyValuePair, 1);
15081
7e978e8dc84a [gaim-migrate @ 17801]
Daniel Atallah <datallah@pidgin.im>
parents: 14899
diff changeset
2200 kvp->key = g_strdup(silc_default_ciphers[i].name);
7e978e8dc84a [gaim-migrate @ 17801]
Daniel Atallah <datallah@pidgin.im>
parents: 14899
diff changeset
2201 kvp->value = g_strdup(silc_default_ciphers[i].name);
12217
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
2202 list = g_list_append(list, kvp);
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
2203 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2204 option = purple_account_option_list_new(_("Cipher"), "cipher", list);
12217
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
2205 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
2206
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
2207 list = NULL;
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
2208 for (i = 0; silc_default_hmacs[i].name; i++) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2209 kvp = g_new0(PurpleKeyValuePair, 1);
15081
7e978e8dc84a [gaim-migrate @ 17801]
Daniel Atallah <datallah@pidgin.im>
parents: 14899
diff changeset
2210 kvp->key = g_strdup(silc_default_hmacs[i].name);
7e978e8dc84a [gaim-migrate @ 17801]
Daniel Atallah <datallah@pidgin.im>
parents: 14899
diff changeset
2211 kvp->value = g_strdup(silc_default_hmacs[i].name);
12217
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
2212 list = g_list_append(list, kvp);
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
2213 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2214 option = purple_account_option_list_new(_("HMAC"), "hmac", list);
12217
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
2215 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
ea610d8ab584 [gaim-migrate @ 14519]
Pekka Riikonen <priikone@silcnet.org>
parents: 12216
diff changeset
2216
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2217 option = purple_account_option_bool_new(_("Use Perfect Forward Secrecy"),
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2218 "pfs", FALSE);
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2219 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2220
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2221 option = purple_account_option_bool_new(_("Public key authentication"),
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2222 "pubkey-auth", FALSE);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2223 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2224 option = purple_account_option_bool_new(_("Block IMs without Key Exchange"),
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2225 "block-ims", FALSE);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2226 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2227 option = purple_account_option_bool_new(_("Block messages to whiteboard"),
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2228 "block-wb", FALSE);
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
2229 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2230 option = purple_account_option_bool_new(_("Automatically open whiteboard"),
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2231 "open-wb", FALSE);
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
2232 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2233 option = purple_account_option_bool_new(_("Digitally sign and verify all messages"),
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2234 "sign-verify", FALSE);
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12149
diff changeset
2235 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2236
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2237 purple_prefs_remove("/plugins/prpl/silc");
9272
41e74d91931f [gaim-migrate @ 10075]
Ethan Blanton <elb@pidgin.im>
parents: 9039
diff changeset
2238
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2239 silc_log_set_callback(SILC_LOG_ERROR, silcpurple_log_error, NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2240 silcpurple_register_commands();
9353
ff6546387358 [gaim-migrate @ 10161]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9308
diff changeset
2241
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2242 #if 0
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2243 silc_log_debug(TRUE);
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2244 silc_log_set_debug_string("*client*");
22972
2942c1995c22 Cleanup allocations/frees to match and plug some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 22853
diff changeset
2245 silc_log_quick(TRUE);
2942c1995c22 Cleanup allocations/frees to match and plug some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 22853
diff changeset
2246 silc_log_set_debug_callbacks(silcpurple_debug_cb, NULL, NULL, NULL);
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2247 #endif
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17570
diff changeset
2248
8849
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2249 }
4385d99b059c [gaim-migrate @ 9616]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2250
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
2251 PURPLE_INIT_PLUGIN(silc, init_plugin, info);

mercurial