mirror of
https://github.com/nmap/nmap.git
synced 2026-01-06 14:39:03 +00:00
Style fixes.
indent -nut -i2 -kr -br -brs -brf -l0 -bad -npcs -nprs -ncs <files> and manual adjustments.
This commit is contained in:
@@ -78,6 +78,7 @@ int socket_errno();
|
||||
|
||||
|
||||
extern char *optarg;
|
||||
|
||||
extern int optind;
|
||||
|
||||
struct telnet_state {
|
||||
@@ -94,13 +95,13 @@ struct telnet_state {
|
||||
int resolve(char *hostname, struct in_addr *ip) {
|
||||
struct hostent *h;
|
||||
|
||||
if (!hostname || !*hostname) {
|
||||
if (!hostname || !*hostname) {
|
||||
fprintf(stderr, "NULL or zero-length hostname passed to resolve(). Quitting.\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (inet_aton(hostname, ip))
|
||||
return 1; /* damn, that was easy ;) */
|
||||
return 1; /* damn, that was easy ;) */
|
||||
if ((h = gethostbyname(hostname))) {
|
||||
memcpy(ip, h->h_addr_list[0], sizeof(struct in_addr));
|
||||
return 1;
|
||||
@@ -109,83 +110,79 @@ int resolve(char *hostname, struct in_addr *ip) {
|
||||
}
|
||||
|
||||
void telnet_event_handler(nsock_pool nsp, nsock_event nse, void *mydata) {
|
||||
nsock_iod nsi = nse_iod(nse);
|
||||
enum nse_status status = nse_status(nse);
|
||||
enum nse_type type = nse_type(nse);
|
||||
struct sockaddr_in peer;
|
||||
struct telnet_state *ts;
|
||||
int nbytes;
|
||||
char *str;
|
||||
int read_timeout = -1;
|
||||
int write_timeout = 2000;
|
||||
ts = (struct telnet_state *)mydata;
|
||||
|
||||
nsock_iod nsi = nse_iod(nse);
|
||||
enum nse_status status = nse_status(nse);
|
||||
enum nse_type type = nse_type(nse);
|
||||
struct sockaddr_in peer;
|
||||
struct telnet_state *ts;
|
||||
int nbytes;
|
||||
char *str;
|
||||
int read_timeout = -1;
|
||||
int write_timeout = 2000;
|
||||
printf("telnet_event_handler: Received callback of type %s with status %s\n", nse_type2str(type), nse_status2str(status));
|
||||
|
||||
ts = (struct telnet_state *) mydata;
|
||||
if (status == NSE_STATUS_SUCCESS) {
|
||||
switch (type) {
|
||||
case NSE_TYPE_CONNECT:
|
||||
case NSE_TYPE_CONNECT_SSL:
|
||||
nsi_getlastcommunicationinfo(nsi, NULL, NULL, NULL, (struct sockaddr *)&peer, sizeof peer);
|
||||
printf("Successfully connected %sto %s:%hu -- start typing lines\n", (type == NSE_TYPE_CONNECT_SSL) ? "(SSL!) " : "", inet_ntoa(peer.sin_addr), peer.sin_port);
|
||||
/* First of all, lets add STDIN to our list of watched filehandles */
|
||||
if ((ts->stdin_nsi = nsi_new2(nsp, STDIN_FILENO, NULL)) == NULL) {
|
||||
fprintf(stderr, "Failed to create stdin msi\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
printf("telnet_event_handler: Received callback of type %s with status %s\n",
|
||||
nse_type2str(type), nse_status2str(status));
|
||||
|
||||
if (status == NSE_STATUS_SUCCESS ) {
|
||||
switch(type) {
|
||||
case NSE_TYPE_CONNECT:
|
||||
case NSE_TYPE_CONNECT_SSL:
|
||||
nsi_getlastcommunicationinfo(nsi, NULL, NULL, NULL, (struct sockaddr*)&peer, sizeof peer);
|
||||
printf("Successfully connected %sto %s:%hu -- start typing lines\n", (type == NSE_TYPE_CONNECT_SSL)? "(SSL!) " : "", inet_ntoa(peer.sin_addr), peer.sin_port);
|
||||
/* First of all, lets add STDIN to our list of watched filehandles */
|
||||
if ((ts->stdin_nsi = nsi_new2(nsp, STDIN_FILENO, NULL)) == NULL) {
|
||||
fprintf(stderr, "Failed to create stdin msi\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* Now lets read from stdin and the network, line buffered (by nsock) */
|
||||
ts->latest_readtcpev = nsock_readlines(nsp, ts->tcp_nsi, telnet_event_handler, read_timeout, ts, 1);
|
||||
ts->latest_readstdinev = nsock_readlines(nsp, ts->stdin_nsi, telnet_event_handler, read_timeout, ts, 1);
|
||||
break;
|
||||
case NSE_TYPE_READ:
|
||||
str = nse_readbuf(nse, &nbytes);
|
||||
if (nsi == ts->tcp_nsi) {
|
||||
printf("%s", str);
|
||||
/* printf("Read from tcp socket (%d bytes):\n%s", nbytes, str); */
|
||||
ts->latest_readtcpev = nsock_readlines(nsp, ts->tcp_nsi, telnet_event_handler, read_timeout, ts, 1);
|
||||
} else {
|
||||
/* printf("Read from stdin (%d bytes):\n%s", nbytes, str); */
|
||||
nsock_write(nsp, ts->tcp_nsi, telnet_event_handler, write_timeout, ts, str, nbytes);
|
||||
ts->latest_readstdinev = nsock_readlines(nsp, ts->stdin_nsi, telnet_event_handler, read_timeout, ts, 1);
|
||||
}
|
||||
break;
|
||||
case NSE_TYPE_WRITE:
|
||||
/* Nothing to do, really */
|
||||
break;
|
||||
case NSE_TYPE_TIMER:
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "telnet_event_handler: Got bogus type -- quitting\n");
|
||||
exit(1);
|
||||
break;
|
||||
}
|
||||
} else if (status == NSE_STATUS_EOF) {
|
||||
printf("Got EOF from %s\nCancelling outstanding readevents.\n", (nsi == ts->tcp_nsi)? "tcp socket" : "stdin");
|
||||
/* One of these is the event I am currently handling! But I wanted to
|
||||
be evil when testing this out... */
|
||||
if (nsock_event_cancel(nsp, ts->latest_readtcpev, 1) != 0) {
|
||||
printf("Cancelled tcp event: %li\n", ts->latest_readtcpev);
|
||||
}
|
||||
if (nsock_event_cancel(nsp, ts->latest_readstdinev, 1) != 0) {
|
||||
printf("Cancelled stdin event: %li\n", ts->latest_readstdinev);
|
||||
}
|
||||
} else if (status == NSE_STATUS_ERROR) {
|
||||
if (nsi_checkssl(nsi)) {
|
||||
printf("SSL %s failed: %s\n", nse_type2str(type), ERR_error_string(ERR_get_error(), NULL));
|
||||
} else {
|
||||
printf("%s failed: %s\n", nse_type2str(type), strerror(socket_errno()));
|
||||
}
|
||||
}
|
||||
return;
|
||||
/* Now lets read from stdin and the network, line buffered (by nsock) */
|
||||
ts->latest_readtcpev = nsock_readlines(nsp, ts->tcp_nsi, telnet_event_handler, read_timeout, ts, 1);
|
||||
ts->latest_readstdinev = nsock_readlines(nsp, ts->stdin_nsi, telnet_event_handler, read_timeout, ts, 1);
|
||||
break;
|
||||
case NSE_TYPE_READ:
|
||||
str = nse_readbuf(nse, &nbytes);
|
||||
if (nsi == ts->tcp_nsi) {
|
||||
printf("%s", str);
|
||||
/* printf("Read from tcp socket (%d bytes):\n%s", nbytes, str); */
|
||||
ts->latest_readtcpev = nsock_readlines(nsp, ts->tcp_nsi, telnet_event_handler, read_timeout, ts, 1);
|
||||
} else {
|
||||
/* printf("Read from stdin (%d bytes):\n%s", nbytes, str); */
|
||||
nsock_write(nsp, ts->tcp_nsi, telnet_event_handler, write_timeout, ts, str, nbytes);
|
||||
ts->latest_readstdinev = nsock_readlines(nsp, ts->stdin_nsi, telnet_event_handler, read_timeout, ts, 1);
|
||||
}
|
||||
break;
|
||||
case NSE_TYPE_WRITE:
|
||||
/* Nothing to do, really */
|
||||
break;
|
||||
case NSE_TYPE_TIMER:
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "telnet_event_handler: Got bogus type -- quitting\n");
|
||||
exit(1);
|
||||
break;
|
||||
}
|
||||
} else if (status == NSE_STATUS_EOF) {
|
||||
printf("Got EOF from %s\nCancelling outstanding readevents.\n", (nsi == ts->tcp_nsi) ? "tcp socket" : "stdin");
|
||||
/* One of these is the event I am currently handling! But I wanted to
|
||||
be evil when testing this out... */
|
||||
if (nsock_event_cancel(nsp, ts->latest_readtcpev, 1) != 0) {
|
||||
printf("Cancelled tcp event: %li\n", ts->latest_readtcpev);
|
||||
}
|
||||
if (nsock_event_cancel(nsp, ts->latest_readstdinev, 1) != 0) {
|
||||
printf("Cancelled stdin event: %li\n", ts->latest_readstdinev);
|
||||
}
|
||||
} else if (status == NSE_STATUS_ERROR) {
|
||||
if (nsi_checkssl(nsi)) {
|
||||
printf("SSL %s failed: %s\n", nse_type2str(type), ERR_error_string(ERR_get_error(), NULL));
|
||||
} else {
|
||||
printf("%s failed: %s\n", nse_type2str(type), strerror(socket_errno()));
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
void usage() {
|
||||
fprintf(stderr, "\nUsage: nsock_telnet [-s] [-t tracelevel] <hostnameorip> [portnum]\n"
|
||||
" Where -s enables SSL for the connection\n\n");
|
||||
fprintf(stderr, "\nUsage: nsock_telnet [-s] [-t tracelevel] <hostnameorip> [portnum]\n" " Where -s enables SSL for the connection\n\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -204,8 +201,8 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
ts.stdin_nsi = NULL;
|
||||
|
||||
while((c = getopt(argc, argv, "st:")) != -1) {
|
||||
switch(c) {
|
||||
while ((c = getopt(argc, argv, "st:")) != -1) {
|
||||
switch (c) {
|
||||
case 's':
|
||||
usessl = 1;
|
||||
break;
|
||||
@@ -214,7 +211,8 @@ int main(int argc, char *argv[]) {
|
||||
assert(tracelevel >= 0);
|
||||
break;
|
||||
default:
|
||||
usage(); break;
|
||||
usage();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -230,7 +228,8 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
if (optind < argc)
|
||||
portno = atoi(argv[optind]);
|
||||
else portno = 23;
|
||||
else
|
||||
portno = 23;
|
||||
|
||||
/* OK, we start with creating a p00l */
|
||||
if ((nsp = nsp_new(NULL)) == NULL) {
|
||||
@@ -251,12 +250,10 @@ int main(int argc, char *argv[]) {
|
||||
taddr.sin_addr = target;
|
||||
taddr.sin_port = portno;
|
||||
|
||||
if (usessl)
|
||||
{
|
||||
if (usessl) {
|
||||
ts.ssl_session = NULL;
|
||||
ev = nsock_connect_ssl(nsp, ts.tcp_nsi, telnet_event_handler, 10000, &ts, (struct sockaddr *)&taddr, sizeof taddr, IPPROTO_TCP, portno, ts.ssl_session);
|
||||
}
|
||||
else
|
||||
} else
|
||||
ev = nsock_connect_tcp(nsp, ts.tcp_nsi, telnet_event_handler, 10000, &ts, (struct sockaddr *)&taddr, sizeof taddr, portno);
|
||||
|
||||
printf("The event id is %lu -- initiating l00p\n", ev);
|
||||
@@ -264,7 +261,7 @@ int main(int argc, char *argv[]) {
|
||||
/* Now lets get this party started right! */
|
||||
loopret = nsock_loop(nsp, -1);
|
||||
|
||||
printf("nsock_loop returned %d\n", (int) loopret);
|
||||
printf("nsock_loop returned %d\n", (int)loopret);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -68,73 +68,71 @@
|
||||
#include <assert.h>
|
||||
|
||||
nsock_event_id ev_ids[2048];
|
||||
|
||||
int num_ids = 0;
|
||||
|
||||
nsock_event_id request_timer(nsock_pool nsp, nsock_ev_handler handler,
|
||||
int timeout_msecs, void *userdata) {
|
||||
|
||||
nsock_event_id request_timer(nsock_pool nsp, nsock_ev_handler handler, int timeout_msecs, void *userdata) {
|
||||
nsock_event_id id;
|
||||
|
||||
id = nsock_timer_create(nsp, handler, timeout_msecs, userdata);
|
||||
printf("%ld: Created timer ID %li for %d ms from now\n", time(NULL), id,
|
||||
timeout_msecs);
|
||||
printf("%ld: Created timer ID %li for %d ms from now\n", time(NULL), id, timeout_msecs);
|
||||
|
||||
return id;
|
||||
|
||||
}
|
||||
|
||||
int try_cancel_timer(nsock_pool *nsp, int idx, int notify) {
|
||||
int try_cancel_timer(nsock_pool * nsp, int idx, int notify) {
|
||||
int res;
|
||||
|
||||
printf("%ld:Attempting to cancel id %li (idx %d) %s notify.\n",
|
||||
time(NULL), ev_ids[idx], idx, ((notify)? "WITH" : "WITHOUT"));
|
||||
|
||||
printf("%ld:Attempting to cancel id %li (idx %d) %s notify.\n", time(NULL), ev_ids[idx], idx, ((notify) ? "WITH" : "WITHOUT"));
|
||||
res = nsock_event_cancel(nsp, ev_ids[idx], notify);
|
||||
printf("Kill of %li %s\n", ev_ids[idx], (res == 0)? "FAILED" : "SUCCEEDED");
|
||||
printf("Kill of %li %s\n", ev_ids[idx], (res == 0) ? "FAILED" : "SUCCEEDED");
|
||||
return res;
|
||||
}
|
||||
|
||||
void timer_handler(nsock_pool nsp, nsock_event nse, void *mydata) {
|
||||
enum nse_status status = nse_status(nse);
|
||||
enum nse_type type = nse_type(nse);
|
||||
int rnd, rnd2;
|
||||
printf("%ld:timer_handler: Received callback of type %s; status %s; id %li\n",
|
||||
time(NULL), nse_type2str(type), nse_status2str(status), nse_id(nse));
|
||||
enum nse_status status = nse_status(nse);
|
||||
enum nse_type type = nse_type(nse);
|
||||
int rnd, rnd2;
|
||||
|
||||
rnd = rand() % num_ids;
|
||||
rnd2 = rand() % 3;
|
||||
printf("%ld:timer_handler: Received callback of type %s; status %s; id %li\n", time(NULL), nse_type2str(type), nse_status2str(status), nse_id(nse));
|
||||
|
||||
if (num_ids > (sizeof(ev_ids) / sizeof(nsock_event_id)) - 3) {
|
||||
printf("\n\nSUCCEEDED DUE TO CREATING ENOUGH EVENTS THAT IT WAS GOING TO OVERFLOW MY BUFFER :)\n\n");
|
||||
exit(0);
|
||||
}
|
||||
rnd = rand() % num_ids;
|
||||
rnd2 = rand() % 3;
|
||||
|
||||
if (status == NSE_STATUS_SUCCESS) {
|
||||
switch(rnd2) {
|
||||
case 0:
|
||||
/* do nothing */
|
||||
/* Actually I think I'll create two timers :) */
|
||||
ev_ids[num_ids++] = request_timer(nsp, timer_handler, rand() % 3000, NULL);
|
||||
ev_ids[num_ids++] = request_timer(nsp, timer_handler, rand() % 3000, NULL);
|
||||
break;
|
||||
case 1:
|
||||
/* Kill another id (which may or may not be active */
|
||||
try_cancel_timer(nsp, rnd, rand() % 2);
|
||||
break;
|
||||
case 2:
|
||||
/* Create a new timer */
|
||||
ev_ids[num_ids++] = request_timer(nsp, timer_handler, rand() % 3000, NULL);
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
}
|
||||
}
|
||||
if (num_ids > (sizeof(ev_ids) / sizeof(nsock_event_id)) - 3) {
|
||||
printf("\n\nSUCCEEDED DUE TO CREATING ENOUGH EVENTS THAT IT WAS GOING TO OVERFLOW MY BUFFER :)\n\n");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
if (status == NSE_STATUS_SUCCESS) {
|
||||
switch (rnd2) {
|
||||
case 0:
|
||||
/* do nothing */
|
||||
/* Actually I think I'll create two timers :) */
|
||||
ev_ids[num_ids++] = request_timer(nsp, timer_handler, rand() % 3000, NULL);
|
||||
ev_ids[num_ids++] = request_timer(nsp, timer_handler, rand() % 3000, NULL);
|
||||
break;
|
||||
case 1:
|
||||
/* Kill another id (which may or may not be active */
|
||||
try_cancel_timer(nsp, rnd, rand() % 2);
|
||||
break;
|
||||
case 2:
|
||||
/* Create a new timer */
|
||||
ev_ids[num_ids++] = request_timer(nsp, timer_handler, rand() % 3000, NULL);
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
nsock_pool nsp;
|
||||
enum nsock_loopstatus loopret;
|
||||
int num_loops = 0;
|
||||
srand(time(NULL));
|
||||
nsock_pool nsp;
|
||||
enum nsock_loopstatus loopret;
|
||||
int num_loops = 0;
|
||||
|
||||
srand(time(NULL));
|
||||
/* OK, we start with creating a p00l */
|
||||
if ((nsp = nsp_new(NULL)) == NULL) {
|
||||
fprintf(stderr, "Failed to create new pool. QUITTING.\n");
|
||||
@@ -150,7 +148,7 @@ int main(int argc, char *argv[]) {
|
||||
ev_ids[num_ids++] = request_timer(nsp, timer_handler, 100, NULL);
|
||||
|
||||
/* Now lets get this party started right! */
|
||||
while(num_loops++ < 5) {
|
||||
while (num_loops++ < 5) {
|
||||
loopret = nsock_loop(nsp, 1500);
|
||||
if (loopret == NSOCK_LOOP_TIMEOUT)
|
||||
printf("Finished l00p #%d due to l00p timeout :) I may do another\n", num_loops);
|
||||
@@ -168,4 +166,3 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user