author | Mikael Hallendal <micke@imendio.com> |
Sat, 24 Feb 2007 16:52:45 +0100 | |
changeset 246 | ef2e388b8412 |
parent 167 | 7bcccfa734e2 |
permissions | -rw-r--r-- |
83 | 1 |
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ |
2 |
/* |
|
99
81e9d035de02
2004-10-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
83
diff
changeset
|
3 |
* Copyright (C) 2004 Imendio AB |
83 | 4 |
* |
5 |
* This library is free software; you can redistribute it and/or |
|
6 |
* modify it under the terms of the GNU Library General Public |
|
7 |
* License as published by the Free Software Foundation; either |
|
8 |
* version 2 of the License, or (at your option) any later version. |
|
9 |
* |
|
10 |
* This library is distributed in the hope that it will be useful, |
|
11 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
12 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
13 |
* Library General Public License for more details. |
|
14 |
* |
|
15 |
* You should have received a copy of the GNU Library General Public |
|
16 |
* License along with this library; if not, write to the |
|
17 |
* Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
|
18 |
* Boston, MA 02111-1307, USA. |
|
19 |
*/ |
|
20 |
||
21 |
/* |
|
22 |
* Description: |
|
23 |
* A little program that let you send jabber messages to another person. |
|
24 |
* |
|
25 |
* Build instructions: |
|
26 |
* gcc -o lm-send-sync `pkg-config --cflags --libs loudmouth-1.0` lm-send-sync.c |
|
27 |
*/ |
|
28 |
||
29 |
#include <string.h> |
|
30 |
#include <stdlib.h> |
|
31 |
||
140
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
32 |
#include <loudmouth/loudmouth.h> |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
33 |
|
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
34 |
static gchar expected_fingerprint[20]; |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
35 |
|
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
36 |
static gchar *server = NULL; |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
37 |
static gint port = 5222; |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
38 |
static gchar *username = NULL; |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
39 |
static gchar *password = NULL; |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
40 |
static gchar *resource = "lm-send-sync"; |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
41 |
static gchar *recipient = NULL; |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
42 |
static gchar *fingerprint = NULL; |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
43 |
static gchar *message = "test synchronous message"; |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
44 |
|
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
45 |
static GOptionEntry entries[] = |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
46 |
{ |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
47 |
{ "server", 's', 0, G_OPTION_ARG_STRING, &server, |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
48 |
"Server to connect to", NULL }, |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
49 |
{ "port", 'P', 0, G_OPTION_ARG_INT, &port, |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
50 |
"Port to connect to [default=5222]", NULL }, |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
51 |
{ "username", 'u', 0, G_OPTION_ARG_STRING, &username, |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
52 |
"Username to connect with (e.g. 'user' in user@server.org)", NULL }, |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
53 |
{ "password", 'p', 0, G_OPTION_ARG_STRING, &password, |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
54 |
"Password to try", NULL }, |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
55 |
{ "resource", 'r', 0, G_OPTION_ARG_STRING, &resource, |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
56 |
"Resource connect with [default=lm-send-sync]", NULL }, |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
57 |
{ "recipient", 'R', 0, G_OPTION_ARG_STRING, &recipient, |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
58 |
"Recipient to send the message to (e.g. user@server.org)", NULL }, |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
59 |
{ "fingerprint", 'f', 0, G_OPTION_ARG_STRING, &fingerprint, |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
60 |
"SSL Fingerprint to use", NULL }, |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
61 |
{ "message", 'm', 0, G_OPTION_ARG_STRING, &message, |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
62 |
"Message to send to recipient [default=test synchronous message]", NULL }, |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
63 |
{ NULL } |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
64 |
}; |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
65 |
|
167 | 66 |
static gchar * |
67 |
get_part_name (const gchar *username) |
|
68 |
{ |
|
69 |
const gchar *ch; |
|
70 |
||
71 |
g_return_val_if_fail (username != NULL, NULL); |
|
72 |
||
73 |
ch = strchr (username, '@'); |
|
74 |
if (!ch) { |
|
75 |
return NULL; |
|
76 |
} |
|
77 |
||
78 |
return g_strndup (username, ch - username); |
|
79 |
} |
|
80 |
||
83 | 81 |
static void |
140
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
82 |
print_finger (const char *fpr, |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
83 |
unsigned int size) |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
84 |
{ |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
85 |
gint i; |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
86 |
for (i = 0; i < size-1; i++) { |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
87 |
g_printerr ("%02X:", fpr[i]); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
88 |
} |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
89 |
|
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
90 |
g_printerr ("%02X", fpr[size-1]); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
91 |
} |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
92 |
|
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
93 |
static LmSSLResponse |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
94 |
ssl_cb (LmSSL *ssl, |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
95 |
LmSSLStatus status, |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
96 |
gpointer ud) |
83 | 97 |
{ |
140
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
98 |
g_print ("LmSendSync: SSL status:%d\n", status); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
99 |
|
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
100 |
switch (status) { |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
101 |
case LM_SSL_STATUS_NO_CERT_FOUND: |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
102 |
g_printerr ("LmSendSync: No certificate found!\n"); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
103 |
break; |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
104 |
case LM_SSL_STATUS_UNTRUSTED_CERT: |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
105 |
g_printerr ("LmSendSync: Certificate is not trusted!\n"); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
106 |
break; |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
107 |
case LM_SSL_STATUS_CERT_EXPIRED: |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
108 |
g_printerr ("LmSendSync: Certificate has expired!\n"); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
109 |
break; |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
110 |
case LM_SSL_STATUS_CERT_NOT_ACTIVATED: |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
111 |
g_printerr ("LmSendSync: Certificate has not been activated!\n"); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
112 |
break; |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
113 |
case LM_SSL_STATUS_CERT_HOSTNAME_MISMATCH: |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
114 |
g_printerr ("LmSendSync: Certificate hostname does not match expected hostname!\n"); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
115 |
break; |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
116 |
case LM_SSL_STATUS_CERT_FINGERPRINT_MISMATCH: { |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
117 |
const char *fpr = lm_ssl_get_fingerprint (ssl); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
118 |
g_printerr ("LmSendSync: Certificate fingerprint does not match expected fingerprint!\n"); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
119 |
g_printerr ("LmSendSync: Remote fingerprint: "); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
120 |
print_finger (fpr, 16); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
121 |
|
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
122 |
g_printerr ("\n" |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
123 |
"LmSendSync: Expected fingerprint: "); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
124 |
print_finger (expected_fingerprint, 16); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
125 |
g_printerr ("\n"); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
126 |
break; |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
127 |
} |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
128 |
case LM_SSL_STATUS_GENERIC_ERROR: |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
129 |
g_printerr ("LmSendSync: Generic SSL error!\n"); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
130 |
break; |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
131 |
} |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
132 |
|
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
133 |
return LM_SSL_RESPONSE_CONTINUE; |
83 | 134 |
} |
135 |
||
136 |
int |
|
137 |
main (int argc, char **argv) |
|
138 |
{ |
|
140
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
139 |
GOptionContext *context; |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
140 |
GError *error = NULL; |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
141 |
LmConnection *connection; |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
142 |
LmMessage *m; |
167 | 143 |
gchar *user; |
140
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
144 |
|
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
145 |
context = g_option_context_new ("- test send message synchronously"); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
146 |
g_option_context_add_main_entries (context, entries, NULL); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
147 |
g_option_context_parse (context, &argc, &argv, NULL); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
148 |
g_option_context_free (context); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
149 |
|
246
ef2e388b8412
Remove the requirement to set server explicit from the examples.
Mikael Hallendal <micke@imendio.com>
parents:
167
diff
changeset
|
150 |
if (!username || !password || !recipient) { |
140
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
151 |
g_printerr ("For usage, try %s --help\n", argv[0]); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
152 |
return EXIT_FAILURE; |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
153 |
} |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
154 |
|
167 | 155 |
if (username && strchr (username, '@') == NULL) { |
156 |
g_printerr ("LmSendSync: Username must have an '@' included\n"); |
|
157 |
return EXIT_FAILURE; |
|
158 |
} |
|
159 |
||
140
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
160 |
connection = lm_connection_new (server); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
161 |
lm_connection_set_port (connection, port); |
167 | 162 |
lm_connection_set_jid (connection, username); |
83 | 163 |
|
140
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
164 |
if (fingerprint) { |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
165 |
LmSSL *ssl; |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
166 |
char *p; |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
167 |
int i; |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
168 |
|
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
169 |
if (port == LM_CONNECTION_DEFAULT_PORT) { |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
170 |
lm_connection_set_port (connection, |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
171 |
LM_CONNECTION_DEFAULT_PORT_SSL); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
172 |
} |
83 | 173 |
|
140
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
174 |
for (i = 0, p = fingerprint; *p && *(p+1); i++, p += 3) { |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
175 |
expected_fingerprint[i] = (unsigned char) g_ascii_strtoull (p, NULL, 16); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
176 |
} |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
177 |
|
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
178 |
ssl = lm_ssl_new (expected_fingerprint, |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
179 |
(LmSSLFunction) ssl_cb, |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
180 |
NULL, NULL); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
181 |
|
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
182 |
lm_connection_set_ssl (connection, ssl); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
183 |
lm_ssl_unref (ssl); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
184 |
} |
83 | 185 |
|
186 |
if (!lm_connection_open_and_block (connection, &error)) { |
|
140
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
187 |
g_printerr ("LmSendSync: Could not open a connection: %s\n", error->message); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
188 |
return EXIT_FAILURE; |
83 | 189 |
} |
190 |
||
167 | 191 |
user = get_part_name (username); |
83 | 192 |
if (!lm_connection_authenticate_and_block (connection, |
167 | 193 |
user, password, resource, |
83 | 194 |
&error)) { |
167 | 195 |
g_free (user); |
140
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
196 |
g_printerr ("LmSendSync: Failed to authenticate: %s\n", error->message); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
197 |
return EXIT_FAILURE; |
83 | 198 |
} |
167 | 199 |
g_free (user); |
83 | 200 |
|
201 |
m = lm_message_new (recipient, LM_MESSAGE_TYPE_MESSAGE); |
|
202 |
lm_message_node_add_child (m->node, "body", message); |
|
203 |
||
204 |
if (!lm_connection_send (connection, m, &error)) { |
|
140
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
205 |
g_printerr ("LmSendSync: Failed to send message: %s\n", error->message); |
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
206 |
return EXIT_FAILURE; |
83 | 207 |
} |
208 |
||
209 |
lm_message_unref (m); |
|
210 |
||
211 |
lm_connection_close (connection, NULL); |
|
212 |
lm_connection_unref (connection); |
|
213 |
||
140
103227122f45
2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
99
diff
changeset
|
214 |
return EXIT_SUCCESS; |
83 | 215 |
} |
216 |