annotate mcabber/mcabber/carbons.c @ 2108:adfd962e1343

Allow the user to enable/disable carbons from the command line
author Roeland Jago Douma <roeland@famdouma.nl>
date Tue, 15 Oct 2013 19:07:18 +0200
parents 72876dcf9094
children 9b4b7941647c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2104
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
1 #include "carbons.h"
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
2 #include "settings.h"
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
3 #include "xmpp_helper.h"
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
4 #include "xmpp_defines.h"
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
5 #include "logprint.h"
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
6 #include "xmpp.h"
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
7
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
8 static int _carbons_available = 0;
2106
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
9 static int _carbons_enabled = 0;
2104
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
10
2108
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
11 static LmHandlerResult cb_carbons(LmMessageHandler *h, LmConnection *c,
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
12 LmMessage *m, gpointer user_data);
2104
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
13
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
14
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
15 void carbons_init()
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
16 {
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
17
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
18 }
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
19
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
20 void carbons_available()
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
21 {
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
22 int enable = 0;
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
23 _carbons_available = 1;
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
24
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
25 enable = settings_opt_get_int("carbons");
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
26
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
27 if (enable) {
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
28 carbons_enable();
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
29 }
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
30 }
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
31
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
32 void carbons_enable()
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
33 {
2108
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
34 //We cannot enable carbons if there is no carbons support
2106
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
35 if (_carbons_available == 0) {
2108
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
36 scr_LogPrint(LPRINT_NORMAL, "Carbons not available on this server!");
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
37 return;
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
38 }
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
39
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
40 //We only have to enable carbons once
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
41 if (_carbons_enabled == 1) {
2106
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
42 return;
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
43 }
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
44
2104
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
45 LmMessage *iq;
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
46 LmMessageNode *enable;
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
47 LmMessageHandler *handler;
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
48 GError *error = NULL;
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
49
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
50 iq = lm_message_new_with_sub_type(NULL, LM_MESSAGE_TYPE_IQ,
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
51 LM_MESSAGE_SUB_TYPE_SET);
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
52
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
53 enable = lm_message_node_add_child(iq->node, "enable", NULL);
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
54 lm_message_node_set_attribute(enable, "xmlns", NS_CARBONS_2);
2108
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
55 handler = lm_message_handler_new(cb_carbons, NULL, NULL);
2104
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
56
2106
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
57 if (!lm_connection_send_with_reply(lconnection, iq, handler, &error)) {
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
58 scr_LogPrint(LPRINT_DEBUG, "Error sending IQ request: %s.", error->message);
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
59 g_error_free(error);
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
60 }
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
61
2104
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
62 lm_message_handler_unref(handler);
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
63 lm_message_unref(iq);
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
64 }
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
65
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
66 void carbons_disable()
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
67 {
2108
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
68 //We cannot disable carbons if there is no carbon support on the server
2106
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
69 if (_carbons_available == 0) {
2108
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
70 scr_LogPrint(LPRINT_NORMAL, "Carbons not available on this server!");
2106
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
71 return;
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
72 }
2108
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
73
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
74 //We can only disable carbons if they are disabled
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
75 if (_carbons_enabled == 0) {
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
76 return;
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
77 }
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
78
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
79 LmMessage *iq;
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
80 LmMessageNode *disable;
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
81 LmMessageHandler *handler;
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
82 GError *error = NULL;
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
83
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
84 iq = lm_message_new_with_sub_type(NULL, LM_MESSAGE_TYPE_IQ,
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
85 LM_MESSAGE_SUB_TYPE_SET);
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
86
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
87 disable = lm_message_node_add_child(iq->node, "disable", NULL);
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
88 lm_message_node_set_attribute(disable, "xmlns", NS_CARBONS_2);
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
89 handler = lm_message_handler_new(cb_carbons, NULL, NULL);
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
90
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
91 if (!lm_connection_send_with_reply(lconnection, iq, handler, &error)) {
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
92 scr_LogPrint(LPRINT_DEBUG, "Error sending IQ request: %s.", error->message);
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
93 g_error_free(error);
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
94 }
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
95
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
96 lm_message_handler_unref(handler);
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
97 lm_message_unref(iq);
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
98
2106
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
99 }
2104
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
100
2106
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
101 void carbons_info()
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
102 {
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
103 if (_carbons_enabled) {
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
104 scr_LogPrint(LPRINT_NORMAL, "Carbons enabled.");
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
105 } else {
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
106 if (_carbons_available) {
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
107 scr_LogPrint(LPRINT_NORMAL, "Carbons available, but not enabled.");
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
108 } else {
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
109 scr_LogPrint(LPRINT_NORMAL, "Carbons not available.");
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
110 }
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
111 }
2104
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
112 }
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
113
2108
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
114 static LmHandlerResult cb_carbons(LmMessageHandler *h, LmConnection *c,
adfd962e1343 Allow the user to enable/disable carbons from the command line
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2106
diff changeset
115 LmMessage *m, gpointer user_data)
2104
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
116 {
2106
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
117 if (lm_message_get_sub_type(m) == LM_MESSAGE_SUB_TYPE_RESULT) {
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
118 _carbons_enabled = _carbons_enabled == 0 ? 1 : 0;
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
119 } else {
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
120 //Handle error cases
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
121 }
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
122
2104
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
123 return LM_HANDLER_RESULT_REMOVE_MESSAGE;
c7e9950fa741 Added option to enable carbons (set carbons = 1 in mcabberrc)
Roeland Jago Douma <roeland@famdouma.nl>
parents:
diff changeset
124 }
2106
72876dcf9094 Bit more checks for enabling carbons
Roeland Jago Douma <roeland@famdouma.nl>
parents: 2105
diff changeset
125