6 * Copyright (C) 2010 SIPE Project <http://sipe.sourceforge.net/>
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
34 #include <gmime/gmime.h>
37 #include "sipe-common.h"
40 #include "sip-transport.h"
41 #include "sipe-backend.h"
42 #include "sipe-chat.h"
43 #include "sipe-conf.h"
44 #include "sipe-core.h"
45 #include "sipe-core-private.h"
47 #include "sipe-session.h"
48 #include "sipe-subscriptions.h"
49 #include "sipe-media.h"
52 /* locale_dir is unused if ENABLE_NLS is not defined */
53 void sipe_core_init(SIPE_UNUSED_PARAMETER
const char *locale_dir
)
59 SIPE_DEBUG_INFO("bindtextdomain = %s",
60 bindtextdomain(PACKAGE_NAME
, locale_dir
));
61 SIPE_DEBUG_INFO("bind_textdomain_codeset = %s",
62 bind_textdomain_codeset(PACKAGE_NAME
, "UTF-8"));
63 textdomain(PACKAGE_NAME
);
66 if (!NSS_IsInitialized()) {
68 SIPE_DEBUG_INFO_NOFORMAT("NSS initialised");
76 void sipe_core_destroy(void)
81 * We don't want accedently switch off NSS possibly used by other plugin -
82 * ssl-nss in Pidgin for example.
91 gchar
*sipe_core_about(void)
93 return g_strdup_printf(
95 * Non-translatable parts, like markup, are hard-coded
96 * into the format string. This requires more translatable
97 * texts but it makes the translations less error prone.
99 "<b><font size=\"+1\">SIPE " PACKAGE_VERSION
" </font></b><br/>"
102 "<li> - MS Office Communications Server 2007 R2</li><br/>"
103 "<li> - MS Office Communications Server 2007</li><br/>"
104 "<li> - MS Live Communications Server 2005</li><br/>"
105 "<li> - MS Live Communications Server 2003</li><br/>"
106 "<li> - Reuters Messaging</li><br/>"
108 /* 2 */ "%s: <a href=\"" PACKAGE_URL
"\">" PACKAGE_URL
"</a><br/>"
109 /* 3,4 */ "%s: <a href=\"http://sourceforge.net/projects/sipe/forums/forum/688534\">%s</a><br/>"
110 /* 5,6 */ "%s: <a href=\"" PACKAGE_BUGREPORT
"\">%s</a><br/>"
111 /* 7 */ "%s: <a href=\"https://transifex.net/projects/p/pidgin-sipe/c/mob-branch/\">Transifex.net</a><br/>"
112 /* 8 */ "%s: GPLv2+<br/>"
116 " - Reuters Messaging network<br/>"
117 " - Deutsche Bank<br/>"
118 " - Merrill Lynch<br/>"
127 " - Alcatel-Lucent<br/>"
130 /* 10,11 */ "%s<a href=\"https://transifex.net/projects/p/pidgin-sipe/c/mob-branch/\">Transifex.net</a>%s.<br/>"
132 /* 12 */ "<b>%s:</b><br/>"
133 " - Anibal Avelar<br/>"
134 " - Gabriel Burt<br/>"
135 " - Stefan Becker<br/>"
138 " - Tomáš Hrabčík<br/>"
142 /* The next 13 texts make up the SIPE about note text */
143 /* About note, part 1/13: introduction */
144 _("A third-party plugin implementing extended version of SIP/SIMPLE used by various products"),
145 /* About note, part 2/13: home page URL (label) */
147 /* About note, part 3/13: support forum URL (label) */
149 /* About note, part 4/13: support forum name (hyperlink text) */
151 /* About note, part 5/13: bug tracker URL (label) */
152 _("Report Problems"),
153 /* About note, part 6/13: bug tracker URL (hyperlink text) */
155 /* About note, part 7/13: translation service URL (label) */
157 /* About note, part 8/13: license type (label) */
159 /* About note, part 9/13: known users */
160 _("We support users in such organizations as"),
161 /* About note, part 10/13: translation request, text before Transifex.net URL */
162 /* append a space if text is not empty */
163 _("Please help us to translate SIPE to your native language here at "),
164 /* About note, part 11/13: translation request, text after Transifex.net URL */
165 /* start with a space if text is not empty */
166 _(" using convenient web interface"),
167 /* About note, part 12/13: author list (header) */
169 /* About note, part 13/13: Localization credit */
170 /* PLEASE NOTE: do *NOT* simply translate the english original */
171 /* but write something similar to the following sentence: */
172 /* "Localization for <language name> (<language code>): <name>" */
173 _("Original texts in English (en): SIPE developers")
177 void sipe_core_deallocate(struct sipe_core_public
*sipe_public
)
179 struct sipe_core_private
*sipe_private
= SIPE_CORE_PRIVATE
;
180 struct sipe_account_data
*sip
= SIPE_ACCOUNT_DATA_PRIVATE
;
183 if (sipe_private
->media_call
) {
184 sipe_media_handle_going_offline(sipe_private
->media_call
);
188 /* leave all conversations */
189 if (sipe_private
->sessions
) {
191 while ((entry
= sipe_private
->sessions
) != NULL
) {
192 sipe_session_close(sipe_private
, entry
->data
);
196 sipe_conf_cancel_unaccepted(sipe_private
, NULL
);
199 sip_csta_close(sipe_private
);
202 if (sipe_backend_connection_is_valid(SIPE_CORE_PUBLIC
)) {
203 sipe_subscriptions_unsubscribe(sipe_private
);
204 sip_transport_deregister(sipe_private
);
207 sipe_connection_cleanup(sipe_private
);
208 g_free(sipe_private
->public.sip_name
);
209 g_free(sipe_private
->public.sip_domain
);
210 g_free(sipe_private
->username
);
212 g_free(sip
->password
);
213 g_free(sip
->authdomain
);
214 g_free(sip
->authuser
);
217 g_free(sip
->user_states
);
219 sipe_buddy_free_all(sipe_private
);
220 g_hash_table_destroy(sipe_private
->buddies
);
221 g_hash_table_destroy(sip
->our_publications
);
222 g_hash_table_destroy(sip
->user_state_publications
);
223 sipe_subscriptions_destroy(sipe_private
);
226 GSList
*entry
= sip
->groups
;
228 struct sipe_group
*group
= entry
->data
;
234 g_slist_free(sip
->groups
);
236 if (sip
->our_publication_keys
) {
237 GSList
*entry
= sip
->our_publication_keys
;
243 g_slist_free(sip
->our_publication_keys
);
246 g_free(sipe_private
->mras_uri
);
247 g_free(sipe_private
->media_relay_username
);
248 g_free(sipe_private
->media_relay_password
);
249 sipe_media_relay_list_free(sipe_private
->media_relays
);
253 g_free(sipe_private
);