source: trunk/CrypPlugins/KeySearcher/ExternalClient/Main.cpp @ 2430

Last change on this file since 2430 was 2430, checked in by schwittmann, 10 years ago

Fixed exception on systems where no processorId is available

File size: 1.7 KB
Line 
1#include <ctype.h>
2#include <stdio.h>
3#include <stdlib.h>
4#include <unistd.h>
5#include <sys/types.h>
6#include <sys/socket.h>
7#include <netdb.h>
8#include <string.h>
9#include <netinet/in.h>
10#include <arpa/inet.h>
11
12#include "Network.h"
13
14#define RECONNECT_TIME  5
15
16void usage(char **argv)
17{
18    printf("Usage: %s $HOST $PORT [$PASSWORD]\n\n", argv[0]);
19    printf("    HOST       - PC running cryptool\n");
20    printf("    PORT       - Cryptool's listening port\n");
21    printf("    [PASSWORD] - Password used to auth with server\n");
22}
23
24bool lookup(const char* host, sockaddr_in & serv_addr)
25{
26    hostent *server = gethostbyname(host);
27
28    if(!server)
29        return false;
30
31    serv_addr.sin_family = AF_INET;
32    bcopy((char *)server->h_addr, 
33            (char *)&serv_addr.sin_addr.s_addr,
34            server->h_length);
35
36    return true;
37}
38
39int main (int argc, char **argv)
40{
41    if(argc != 3 && argc != 4)
42    {
43        usage(argv);
44        return 1;
45    }
46
47    int pwlen = (argc==4?strlen(argv[3]):0) +1;
48    char password[pwlen];
49    bzero(password, pwlen);
50    if(argc == 4)
51    {
52        strcpy(password, argv[3]);
53        bzero(argv[3], pwlen);
54    }
55
56    int port = atoi(argv[2]);
57
58    if(port == 0 || port <= 0 || port > 0xFFFF)
59    {
60        printf("Invalid port.\n");
61        return 1;
62    }
63
64    sockaddr_in serv_addr;
65    bzero((char *) &serv_addr, sizeof(serv_addr));
66    serv_addr.sin_port = htons(port);
67
68    while(true)
69    {
70        if(!lookup(argv[1], serv_addr))
71        {
72            printf("failed to lookup %s..\n", argv[1]);
73            continue;
74        }
75        networkThread(serv_addr, port, password);
76        printf("Reconnecting in %u seconds\n", RECONNECT_TIME);
77        sleep(RECONNECT_TIME);
78    }
79
80}
Note: See TracBrowser for help on using the repository browser.