34 |
#include <termios.h> |
#include <termios.h> |
35 |
#include <unistd.h> |
#include <unistd.h> |
36 |
|
|
37 |
|
#include "log.h" |
38 |
#include "modem.h" |
#include "modem.h" |
39 |
#include "devlock.h" |
#include "devlock.h" |
40 |
#include "options.h" |
#include "options.h" |
142 |
if (!modem_open |
if (!modem_open |
143 |
(PARAM_MODEM_DEVICE, PARAM_MODEM_LINE_SPEED, PARAM_MODEM_RTSCTS)) |
(PARAM_MODEM_DEVICE, PARAM_MODEM_LINE_SPEED, PARAM_MODEM_RTSCTS)) |
144 |
return 0; |
return 0; |
145 |
printf ("Device %s opened\n", PARAM_MODEM_DEVICE); |
debug (1, "Device %s opened\n", PARAM_MODEM_DEVICE); |
146 |
|
|
147 |
if (!modem_init () || !modem_dial ()) |
if (!modem_init () || !modem_dial ()) |
148 |
return 0; |
return 0; |
236 |
switch (modem_response_value (response)) |
switch (modem_response_value (response)) |
237 |
{ |
{ |
238 |
case RESPONSE_ERROR: /* ERROR */ |
case RESPONSE_ERROR: /* ERROR */ |
239 |
fprintf (stderr, "Bad string\n" |
log (LOG_ERR, "Bad string\n" |
240 |
"Please verify the phone number, dial string and prefix\n"); |
"Please verify the phone number, dial string and prefix\n"); |
241 |
return 0; |
return 0; |
242 |
break; |
break; |
246 |
break; |
break; |
247 |
|
|
248 |
case RESPONSE_NO_CARRIER: /* NO CARRIER */ |
case RESPONSE_NO_CARRIER: /* NO CARRIER */ |
249 |
fprintf (stderr, "No carrier detected\n"); |
log (LOG_ERR, "No carrier detected\n"); |
250 |
return 0; |
return 0; |
251 |
break; |
break; |
252 |
|
|
253 |
case RESPONSE_NO_DIALTONE: /* NO DIALTONE */ |
case RESPONSE_NO_DIALTONE: /* NO DIALTONE */ |
254 |
fprintf (stderr, "No dial tone detected\n"); |
log (LOG_ERR, "No dial tone detected\n"); |
255 |
return 0; |
return 0; |
256 |
break; |
break; |
257 |
|
|
258 |
case RESPONSE_BUSY: /* BUSY */ |
case RESPONSE_BUSY: /* BUSY */ |
259 |
fprintf (stderr, "Provider is busy\n"); |
log (LOG_ERR, "Provider is busy\n"); |
260 |
return 0; |
return 0; |
261 |
break; |
break; |
262 |
|
|
263 |
case RESPONSE_DELAYED: /* DELAYED */ |
case RESPONSE_DELAYED: /* DELAYED */ |
264 |
fprintf (stderr, "?\n"); |
log (LOG_ERR, "Response delayed\n"); |
265 |
return 0; |
return 0; |
266 |
break; |
break; |
267 |
|
|
268 |
case RESPONSE_VOICE: /* VOICE */ |
case RESPONSE_VOICE: /* VOICE */ |
269 |
fprintf (stderr, "?\n"); |
log (LOG_ERR, "Response voice\n"); |
270 |
return 0; |
return 0; |
271 |
break; |
break; |
272 |
|
|
273 |
case RESPONSE_FAX: /* FCLASS */ |
case RESPONSE_FAX: /* FCLASS */ |
274 |
fprintf (stderr, "You have been connected to a fax\n" |
log (LOG_ERR, "You have been connected to a fax\n" |
275 |
"Please verify the phone number\n"); |
"Please verify the phone number\n"); |
276 |
return 0; |
return 0; |
277 |
break; |
break; |
278 |
|
|
279 |
case RESPONSE_NO_ANSWER: /* NO ANSWER */ |
case RESPONSE_NO_ANSWER: /* NO ANSWER */ |
280 |
fprintf (stderr, "There was no answer\n"); |
log (LOG_ERR, "There was no answer\n"); |
281 |
return 0; |
return 0; |
282 |
break; |
break; |
283 |
|
|
285 |
break; |
break; |
286 |
|
|
287 |
default: /* TIMEOUT */ |
default: /* TIMEOUT */ |
288 |
fprintf (stderr, "Modem timed out during dialing\n"); |
log (LOG_ERR, "Modem timed out during dialing\n"); |
289 |
return 0; |
return 0; |
290 |
} |
} |
291 |
return 0; |
return 0; |
294 |
int |
int |
295 |
modem_log_into_aol () |
modem_log_into_aol () |
296 |
{ |
{ |
297 |
printf ("Waiting for login prompt\n"); |
debug (1, "Waiting for login prompt\n"); |
298 |
if (!modem_wait_for (PARAM_MODEM_LOGIN_PROMPT, 60 * 1000)) |
if (!modem_wait_for (PARAM_MODEM_LOGIN_PROMPT, 60 * 1000)) |
299 |
return 0; |
return 0; |
300 |
printf ("Sending server's login\n"); |
debug (1, "Sending server's login\n"); |
301 |
write (fd, PARAM_MODEM_SERVER_LOGIN, strlen (PARAM_MODEM_SERVER_LOGIN)); |
write (fd, PARAM_MODEM_SERVER_LOGIN, strlen (PARAM_MODEM_SERVER_LOGIN)); |
302 |
write (fd, "\r", 1); |
write (fd, "\r", 1); |
303 |
tcdrain (fd); |
tcdrain (fd); |
304 |
printf ("Waiting for password prompt\n"); |
debug (1, "Waiting for password prompt\n"); |
305 |
if (!modem_wait_for (PARAM_MODEM_PASS_PROMPT, 60 * 1000)) |
if (!modem_wait_for (PARAM_MODEM_PASS_PROMPT, 60 * 1000)) |
306 |
return 0; |
return 0; |
307 |
printf ("Sending server's password\n"); |
debug (1, "Sending server's password\n"); |
308 |
write (fd, PARAM_MODEM_SERVER_PASS, strlen (PARAM_MODEM_SERVER_PASS)); |
write (fd, PARAM_MODEM_SERVER_PASS, strlen (PARAM_MODEM_SERVER_PASS)); |
309 |
write (fd, "\r", 1); |
write (fd, "\r", 1); |
310 |
tcdrain (fd); |
tcdrain (fd); |
311 |
if (!modem_wait_for ("onnected", 60 * 1000)) |
if (!modem_wait_for ("onnected", 60 * 1000)) |
312 |
return 0; |
return 0; |
313 |
printf ("Logged into server\n"); |
debug (0, "Logged into server\n"); |
314 |
return 1; |
return 1; |
315 |
} |
} |
316 |
|
|
325 |
|
|
326 |
if (!device_lock (filename)) |
if (!device_lock (filename)) |
327 |
{ |
{ |
328 |
fprintf (stderr, "Device %s is locked\n", filename); |
log (LOG_ERR, "Device %s is locked\n", filename); |
329 |
return 0; |
return 0; |
330 |
} |
} |
331 |
|
|
573 |
char *response; |
char *response; |
574 |
size_t size; |
size_t size; |
575 |
{ |
{ |
576 |
printf ("Sending: %s\n", command); |
debug (2, "Sending: %s\n", command); |
577 |
|
|
578 |
write (fd, command, strlen (command)); |
write (fd, command, strlen (command)); |
579 |
write (fd, "\r", 1); |
write (fd, "\r", 1); |
588 |
return 0; |
return 0; |
589 |
} |
} |
590 |
|
|
591 |
printf ("Received line : %s\n", response); |
debug (2, "Received line : %s\n", response); |
592 |
return 1; |
return 1; |
593 |
} |
} |
594 |
|
|