View | Details | Raw Unified | Return to bug 133358
Collapse All | Expand All

(-)Makefile (-1 / +1 lines)
Lines 7-13 Link Here
7
7
8
PORTNAME=	bounce
8
PORTNAME=	bounce
9
PORTVERSION=	1.0
9
PORTVERSION=	1.0
10
PORTREVISION=	7
10
PORTREVISION=	8
11
CATEGORIES=	net security
11
CATEGORIES=	net security
12
MASTER_SITES=	http://www.iagora.com/~espel/ \
12
MASTER_SITES=	http://www.iagora.com/~espel/ \
13
		${MASTER_SITE_LOCAL}
13
		${MASTER_SITE_LOCAL}
(-)files/patch-bounce.c (-12 / +15 lines)
Lines 1-5 Link Here
1
--- bounce.c.old	2008-09-02 14:10:20.000000000 -0300
1
--- bounce.c.orig	2009-03-08 23:05:57.000000000 +0900
2
+++ bounce.c	2008-09-02 14:10:29.000000000 -0300
2
+++ bounce.c	2009-03-08 23:07:09.000000000 +0900
3
@@ -1,5 +1,7 @@
3
@@ -1,5 +1,7 @@
4
 /* socket bouncer, by orabidoo  12 Feb '95 
4
 /* socket bouncer, by orabidoo  12 Feb '95 
5
    using code from mark@cairo.anu.edu.au's general purpose telnet server.
5
    using code from mark@cairo.anu.edu.au's general purpose telnet server.
Lines 44-55 Link Here
44
 
44
 
45
     chead=ctail=cbuf;
45
     chead=ctail=cbuf;
46
     cpos=0;
46
     cpos=0;
47
@@ -134,31 +142,65 @@
47
@@ -134,31 +142,66 @@
48
 }
48
 }
49
 
49
 
50
 int main(int argc,char *argv[]) {
50
 int main(int argc,char *argv[]) {
51
-    int srv_fd, rem_fd, len, cl_fd, on=1;
51
-    int srv_fd, rem_fd, len, cl_fd, on=1;
52
+    int srv_fd, rem_fd, len, cl_fd, on=1, b=0, d=0;
52
+    int srv_fd, rem_fd, len, cl_fd, on=1, b=0, d=0, q=0;
53
     int myport=DEFAULT_PORT, remoteport;
53
     int myport=DEFAULT_PORT, remoteport;
54
-    struct sockaddr_in rem_addr, srv_addr, cl_addr;
54
-    struct sockaddr_in rem_addr, srv_addr, cl_addr;
55
+    struct sockaddr_in rem_addr, srv_addr, cl_addr, src_addr;
55
+    struct sockaddr_in rem_addr, srv_addr, cl_addr, src_addr;
Lines 78-84 Link Here
78
+
78
+
79
+    /* Process arguments */
79
+    /* Process arguments */
80
+
80
+
81
+    while( (ch = getopt(argc, argv, "p:a:b:dt:")) != -1  ) {
81
+    while( (ch = getopt(argc, argv, "p:a:b:dqt:")) != -1  ) {
82
+      switch(ch) { 
82
+      switch(ch) { 
83
+      case 'b': b = 1;
83
+      case 'b': b = 1;
84
+	sourcename = malloc( strlen(optarg) + 1);
84
+	sourcename = malloc( strlen(optarg) + 1);
Lines 98-103 Link Here
98
+	break;
98
+	break;
99
+
99
+
100
+      case 'd': d = 1; break;
100
+      case 'd': d = 1; break;
101
+      case 'q': q = 1; break;
101
+      case 'p':
102
+      case 'p':
102
+	if ((myport=atoi(optarg))==0) {
103
+	if ((myport=atoi(optarg))==0) {
103
+	  fprintf(stderr,"Bad port number.\n");
104
+	  fprintf(stderr,"Bad port number.\n");
Lines 119-125 Link Here
119
+    argv += optind;
120
+    argv += optind;
120
+
121
+
121
+    if (argc!=2) {
122
+    if (argc!=2) {
122
+	fprintf(stderr,"Use: %s [-a localaddr | -b localaddr] [-d] [-p localport] [-t timer] machine port \n",myname);
123
+	fprintf(stderr,"Use: %s [-a localaddr | -b localaddr] [-d] [-q] [-p localport] [-t timer] machine port \n",myname);
123
 	exit(-1);
124
 	exit(-1);
124
     }
125
     }
125
-    if ((remoteport=atoi(argv[2]))<=0) {
126
-    if ((remoteport=atoi(argv[2]))<=0) {
Lines 127-133 Link Here
127
 	fprintf(stderr, "Bad remote port number.\n");
128
 	fprintf(stderr, "Bad remote port number.\n");
128
 	exit(-1);
129
 	exit(-1);
129
     }
130
     }
130
@@ -166,11 +208,12 @@
131
@@ -166,11 +209,12 @@
131
     memset((char *) &rem_addr, 0, sizeof(rem_addr));
132
     memset((char *) &rem_addr, 0, sizeof(rem_addr));
132
     memset((char *) &srv_addr, 0, sizeof(srv_addr));
133
     memset((char *) &srv_addr, 0, sizeof(srv_addr));
133
     memset((char *) &cl_addr, 0, sizeof(cl_addr));
134
     memset((char *) &cl_addr, 0, sizeof(cl_addr));
Lines 142-148 Link Here
142
 	if (cl_addr.sin_addr.s_addr==-1) {
143
 	if (cl_addr.sin_addr.s_addr==-1) {
143
 	    fprintf(stderr, "Unknown host.\n");
144
 	    fprintf(stderr, "Unknown host.\n");
144
 	    exit(-1);
145
 	    exit(-1);
145
@@ -178,19 +221,43 @@
146
@@ -178,19 +222,43 @@
146
     } else
147
     } else
147
 	cl_addr.sin_addr=*(struct in_addr *)(hp->h_addr_list[0]);
148
 	cl_addr.sin_addr=*(struct in_addr *)(hp->h_addr_list[0]);
148
 
149
 
Lines 189-195 Link Here
189
     close(0); close(1); close(2);
190
     close(0); close(1); close(2);
190
     chdir("/");
191
     chdir("/");
191
 #ifdef TIOCNOTTY
192
 #ifdef TIOCNOTTY
192
@@ -202,11 +269,13 @@
193
@@ -202,11 +270,15 @@
193
     if (fork()) exit(0);
194
     if (fork()) exit(0);
194
     while (1) {
195
     while (1) {
195
 	len=sizeof(rem_addr);
196
 	len=sizeof(rem_addr);
Lines 199-210 Link Here
199
 	  if (errno==EINTR) continue;
200
 	  if (errno==EINTR) continue;
200
 	  exit(-1);
201
 	  exit(-1);
201
         }
202
         }
202
+	syslog( LOG_NOTICE, "connection from %s to local port %i.  Bouncing to %s, %i",
203
+        if (!q) {
203
+		inet_ntoa(rem_addr.sin_addr), myport, argv[0], remoteport );
204
+		syslog( LOG_NOTICE, "connection from %s to local port %i.  Bouncing to %s, %i",
205
+			inet_ntoa(rem_addr.sin_addr), myport, argv[0], remoteport );
206
+	}
204
 	switch(fork()) {
207
 	switch(fork()) {
205
 	  case -1:
208
 	  case -1:
206
 	    /* we're in the background.. no-one to complain to */
209
 	    /* we're in the background.. no-one to complain to */
207
@@ -220,6 +289,17 @@
210
@@ -220,6 +292,17 @@
208
 		close(rem_fd);
211
 		close(rem_fd);
209
 		exit(-1);
212
 		exit(-1);
210
 	    }
213
 	    }

Return to bug 133358