summaryrefslogtreecommitdiffstats
path: root/contrib/ipfilter/FWTK/fwtkp
diff options
context:
space:
mode:
authorcy <cy@FreeBSD.org>2013-07-19 05:41:57 +0000
committercy <cy@FreeBSD.org>2013-07-19 05:41:57 +0000
commit672af8808c0e7c15f330b401482f9271c2eb3fa6 (patch)
tree225b5acf68c01bc6a260b386c2b2dbf4fa2839e3 /contrib/ipfilter/FWTK/fwtkp
parent71e82d94e82560b20789833f60056506de34de8b (diff)
downloadFreeBSD-src-672af8808c0e7c15f330b401482f9271c2eb3fa6.zip
FreeBSD-src-672af8808c0e7c15f330b401482f9271c2eb3fa6.tar.gz
As per the developers handbook (5.3.1 step 1), prepare the vendor trees for
import of new ipfilter vendor sources by flattening them. To keep the tags consistent with dist, the tags are also flattened. Approved by: glebius (Mentor)
Diffstat (limited to 'contrib/ipfilter/FWTK/fwtkp')
-rw-r--r--contrib/ipfilter/FWTK/fwtkp812
1 files changed, 0 insertions, 812 deletions
diff --git a/contrib/ipfilter/FWTK/fwtkp b/contrib/ipfilter/FWTK/fwtkp
deleted file mode 100644
index aba869d..0000000
--- a/contrib/ipfilter/FWTK/fwtkp
+++ /dev/null
@@ -1,812 +0,0 @@
-diff -c -r ./ftp-gw/ftp-gw.c ../../NEW/fwtk/ftp-gw/ftp-gw.c
-*** ./ftp-gw/ftp-gw.c Fri Sep 6 12:55:05 1996
---- ../../NEW/fwtk/ftp-gw/ftp-gw.c Wed Oct 9 02:51:35 1996
-***************
-*** 40,47 ****
-
- extern char *optarg;
-
-! #include "firewall.h"
-
-
- #ifndef BSIZ
- #define BSIZ 2048
---- 40,48 ----
-
- extern char *optarg;
-
-! char *getdsthost();
-
-+ #include "firewall.h"
-
- #ifndef BSIZ
- #define BSIZ 2048
-***************
-*** 84,89 ****
---- 85,92 ----
- static int cmdcnt = 0;
- static int timeout = PROXY_TIMEOUT;
-
-+ static int do_transparent=0;
-+
-
- static int cmd_user();
- static int cmd_authorize();
-***************
-*** 98,103 ****
---- 101,107 ----
- static void saveline();
- static void flushsaved();
- static void trap_sigurg();
-+ static int connectdest();
-
- #define OP_CONN 001 /* only valid if connected */
- #define OP_WCON 002 /* writethrough if connected */
-***************
-*** 170,175 ****
---- 174,180 ----
- char xuf[1024];
- char huf[128];
- char *passuser = (char *)0; /* passed user as av */
-+ char *psychic, *hotline;
-
- #ifndef LOG_DAEMON
- openlog("ftp-gw",LOG_PID);
-***************
-*** 314,319 ****
---- 319,326 ----
- } else
- timeout = 60*60;
-
-+ psychic=getdsthost(0,NULL);
-+ if(psychic) { do_transparent++; }
-
- /* display a welcome file or message */
- if(passuser == (char *)0) {
-***************
-*** 322,327 ****
---- 329,340 ----
- syslog(LLEV,"fwtkcfgerr: welcome-msg must have one parameter, line %d",cf->ln);
- exit(1);
- }
-+ if(do_transparent) {
-+ if(sayfile2(0,cf->argv[0],220)) {
-+ syslog(LLEV,"fwtksyserr: cannot display welcome %s: %m",cf->argv[0]);
-+ exit(1);
-+ }
-+ } else
- if(sayfile(0,cf->argv[0],220)) {
- syslog(LLEV,"fwtksyserr: cannot display welcome %s: %m",cf->argv[0]);
- exit(1);
-***************
-*** 332,338 ****
- if(authallflg)
- if(say(0,"220-Proxy first requires authentication"))
- exit(1);
-! sprintf(xuf,"220 %s FTP proxy (Version %s) ready.",huf,FWTK_VERSION_MINOR);
- if(say(0,xuf))
- exit(1);
- }
---- 345,357 ----
- if(authallflg)
- if(say(0,"220-Proxy first requires authentication"))
- exit(1);
-! /* foo */
-! if(do_transparent)
-! sprintf(xuf,"220-%s FTP proxy (Version %s) ready.",huf,FWTK_VERSION_MINOR);
-! else
-! sprintf(xuf,"220 %s FTP Proxy (Version %s) ready.",huf,FWTK_VERSION_MINOR);
-! /* foo */
-!
- if(say(0,xuf))
- exit(1);
- }
-***************
-*** 353,358 ****
---- 372,381 ----
- exit(1);
- }
-
-+ if(do_transparent) {
-+ connectdest(psychic,21);
-+ }
-+
- /* main loop */
- while(1) {
- FD_ZERO(&rdy);
-***************
-*** 676,681 ****
---- 699,713 ----
- return(sayn(0,noad,sizeof(noad)-1));
- }
-
-+ if(do_transparent) {
-+ if((rfd==(-1)) && (x=connectdest(dest,port))) return x;
-+ sprintf(buf,"USER %s",user);
-+ if(say(rfd,buf)) return(1);
-+ x=getresp(rfd,buf,sizeof(buf),1);
-+ if(sendsaved(0,x)) return(1);
-+ return(say(0,buf));
-+ }
-+
- if(*dest == '\0')
- dest = "localhost";
-
-***************
-*** 701,708 ****
- if(msg_int == 1) {
- sprintf(mbuf,"Permission denied for user %s to connect to %s",authuser,dest);
- syslog(LLEV,"deny host=%s/%s connect to %s user=%s",rladdr,riaddr,dest,authuser);
-! say(0,mbuf);
-! return(1);
- } else {
- if(msg_int == -1) {
- sprintf(mbuf,"No match in netperm-table for %s to ftp to %s",authuser,dest);
---- 733,740 ----
- if(msg_int == 1) {
- sprintf(mbuf,"Permission denied for user %s to connect to %s",authuser,dest);
- syslog(LLEV,"deny host=%s/%s connect to %s user=%s",rladdr,riaddr,dest,authuser);
-! say(0,mbuf);
-! return(1);
- } else {
- if(msg_int == -1) {
- sprintf(mbuf,"No match in netperm-table for %s to ftp to %s",authuser,dest);
-***************
-*** 717,723 ****
- char ebuf[512];
-
- strcpy(ebuf,buf);
-! sprintf(buf,"521 %s: %s",dest,ebuf);
- rfd = -1;
- return(say(0,buf));
- }
---- 749,759 ----
- char ebuf[512];
-
- strcpy(ebuf,buf);
-! if(do_transparent) {
-! sprintf(buf,"521 %s,%d: %s",dest,ntohs(port),ebuf);
-! } else {
-! sprintf(buf,"521 %s: %s",dest,ebuf);
-! }
- rfd = -1;
- return(say(0,buf));
- }
-***************
-*** 732,737 ****
---- 768,778 ----
- }
- saveline(buf);
-
-+ /* if(do_transparent) {
-+ sendsaved(0,-1);
-+ return(0);
-+ } /* EEEk. I can't remember what this does. */
-+
- sprintf(buf,"USER %s",user);
- if(say(rfd,buf))
- return(1);
-***************
-*** 744,749 ****
---- 785,860 ----
- return 0;
- }
-
-+ static int connectdest(dest, port)
-+ char *dest;
-+ short port;
-+ {
-+ char buf[1024], mbuf[512];
-+ int msg_int, x;
-+
-+ if(*dest == '\0')
-+ dest = "localhost";
-+
-+ if(validests != (char **)0) {
-+ char **xp;
-+ int x;
-+
-+ for(xp = validests; *xp != (char *)0; xp++) {
-+ if(**xp == '!' && hostmatch(*xp + 1,dest)) {
-+ return(baddest(0,dest));
-+ } else {
-+ if(hostmatch(*xp,dest))
-+ break;
-+ }
-+ }
-+ if(*xp == (char *)0)
-+ return(baddest(0,dest));
-+ }
-+
-+ /* Extended permissions processing goes in here for destination */
-+ if(extendperm) {
-+ msg_int = auth_perm(confp, authuser, "ftp-gw", dest,(char *)0);
-+ if(msg_int == 1) {
-+ sprintf(mbuf,"Permission denied for user %s to connect to %s",authuser,dest);
-+ syslog(LLEV,"deny host=%s/%s connect to %s user=%s",rladdr,riaddr,dest,authuser);
-+ say(0,mbuf);
-+ return(1);
-+ } else {
-+ if(msg_int == -1) {
-+ sprintf(mbuf,"No match in netperm-table for %s to ftp to %s",authuser,dest);
-+ say(0,mbuf);
-+ return(1);
-+ }
-+ }
-+ }
-+
-+ syslog(LLEV,"permit host=%s/%s connect to %s",rladdr,riaddr,dest);
-+
-+ if((rfd = conn_server(dest,port,0,buf)) < 0) {
-+ char ebuf[512];
-+
-+ strcpy(ebuf,buf);
-+ sprintf(buf,"521 %s: %s",dest,ebuf);
-+ rfd = -1;
-+ return(say(0,buf));
-+ }
-+ if(!do_transparent) {
-+ sprintf(buf,"----GATEWAY CONNECTED TO %s----",dest);
-+ saveline(buf);
-+ }
-+
-+ /* we are now connected and need to try the autologin thing */
-+ x = getresp(rfd,buf,sizeof(buf),1);
-+ if(x / 100 != COMPLETE) {
-+ sendsaved(0,-1);
-+ return(say(0,buf));
-+ }
-+ saveline(buf);
-+
-+ sendsaved(0,-1);
-+ return 0;
-+ }
-+
-
-
- static int
-***************
-*** 1053,1058 ****
---- 1164,1171 ----
- static char nprn[] = "500 cannot get peername";
- char buf[512];
-
-+ /* syslog(LLEV,"DEBUG: port cmd"); */
-+
- if(ac < 2)
- return(sayn(0,narg,sizeof(narg)-1));
-
-***************
-*** 1119,1124 ****
---- 1232,1238 ----
- #define UC(c) (((int)c) & 0xff)
- sprintf(buf,"PORT %d,%d,%d,%d,%d,%d\r\n",UC(k[0]),UC(k[1]),UC(k[2]),
- UC(k[3]),UC(l[0]),UC(l[1]));
-+ /* syslog(LLEV,"DEBUG: %s",buf); */
- s = strlen(buf);
- if (write(rfd, buf, s) != s)
- return 1;
-***************
-*** 1330,1335 ****
---- 1444,1450 ----
- callback()
- {
- /* if we haven't gotten a valid PORT scrub the connection */
-+ /* syslog(LLEV,"DEBUG: callback()."); */
- if((outgoing = accept(boundport,(struct sockaddr *)0,(int *)0)) < 0 || clntport.sin_port == 0)
- goto bomb;
- if(pasvport != -1) { /* incoming handled by PASVcallback */
-***************
-*** 1796,1801 ****
---- 1911,1960 ----
- }
- return(0);
- }
-+
-+ /* ok, so i'm in a hurry. english paper due RSN. */
-+ sayfile2(fd,fn,code)
-+ int fd;
-+ char *fn;
-+ int code;
-+ {
-+ FILE *f;
-+ char buf[BUFSIZ];
-+ char yuf[BUFSIZ];
-+ char *c;
-+ int x;
-+ int saidsomething = 0;
-+
-+ if((f = fopen(fn,"r")) == (FILE *)0)
-+ return(1);
-+ while(fgets(buf,sizeof(buf),f) != (char *)0) {
-+ if((c = index(buf,'\n')) != (char *)0)
-+ *c = '\0';
-+ x = fgetc(f);
-+ if(feof(f))
-+ sprintf(yuf,"%3.3d-%s",code,buf);
-+ else {
-+ sprintf(yuf,"%3.3d-%s",code,buf);
-+ ungetc(x,f);
-+ }
-+ if(say(fd,yuf)) {
-+ fclose(f);
-+ return(1);
-+ }
-+ saidsomething++;
-+ }
-+ fclose(f);
-+ if (!saidsomething) {
-+ syslog(LLEV,"fwtkcfgerr: sayfile for %d is empty",code);
-+ sprintf(yuf, "%3.3d The file to display is empty",code);
-+ if(say(fd,yuf)) {
-+ fclose(f);
-+ return(1);
-+ }
-+ }
-+ return(0);
-+ }
-+
-
-
- porttoaddr(s,a)
-diff -c -r ./http-gw/http-gw.c ../../NEW/fwtk/http-gw/http-gw.c
-*** ./http-gw/http-gw.c Mon Sep 9 14:40:53 1996
---- ../../NEW/fwtk/http-gw/http-gw.c Wed Oct 9 02:51:57 1996
-***************
-*** 27,32 ****
---- 27,37 ----
- static char http_buffer[8192];
- static char reason[8192];
- static int checkBrowserType = 1;
-+ /* foo */
-+ static int do_transparent=0;
-+ /* foo */
-+
-+ char *getdsthost();
-
- static void do_logging()
- { char *proto = "GOPHER";
-***************
-*** 422,427 ****
---- 427,443 ----
- /*(NOT A SPECIAL FORM)*/
-
- if((rem_type & TYPE_LOCAL)== 0){
-+ /* foo */
-+ char *psychic=getdsthost(sockfd,&def_port);
-+ if(psychic) {
-+ if(strlen(psychic)<=MAXHOSTNAMELEN) {
-+ do_transparent++;
-+ strncpy(def_httpd,psychic,strlen(psychic));
-+ strncpy(def_server,psychic,strlen(psychic));
-+ }
-+ }
-+
-+ /* foo */
- /* See if it can be forwarded */
-
- if( can_forward(buf)){
-***************
-*** 1513,1519 ****
- parse_vec[0],
- parse_vec[1],
- ourname, ourport);
-! }else{
- sprintf(new_reply,"%s\tgopher://%s:%s/%c%s\t%s\t%u",
- parse_vec[0], parse_vec[2],
- parse_vec[3], chk_type_ch,
---- 1529,1541 ----
- parse_vec[0],
- parse_vec[1],
- ourname, ourport);
-! }
-! /* FOO */
-! else if(do_transparent) {
-! sprintf(new_reply,"%s\t%s\t%s\t%s",parse_vec[0],parse_vec[1],parse_vec[2],parse_vec[3]);
-! }
-! /* FOO */
-! else{
- sprintf(new_reply,"%s\tgopher://%s:%s/%c%s\t%s\t%u",
- parse_vec[0], parse_vec[2],
- parse_vec[3], chk_type_ch,
-diff -c -r ./lib/hnam.c ../../NEW/fwtk/lib/hnam.c
-*** ./lib/hnam.c Fri Nov 4 18:30:19 1994
---- ../../NEW/fwtk/lib/hnam.c Wed Oct 9 02:34:13 1996
-***************
-*** 22,27 ****
---- 22,31 ----
-
-
- #include "firewall.h"
-+ #ifdef __FreeBSD__
-+ #include <net/if.h>
-+ #include "ip_nat.h"
-+ #endif /* __FreeBSD__ */
-
-
- char *
-***************
-*** 44,47 ****
---- 48,115 ----
-
- bcopy(hp->h_addr,&sin.sin_addr,hp->h_length);
- return(inet_ntoa(sin.sin_addr));
-+ }
-+
-+ char *getdsthost(fd, ptr)
-+ int fd;
-+ int *ptr;
-+ {
-+ struct sockaddr_in sin;
-+ struct hostent *hp;
-+ int sl=sizeof(struct sockaddr_in), err=0, local_h=0, i=0;
-+ char buf[255], hostbuf[255];
-+ #ifdef __FreeBSD__
-+ struct sockaddr_in rsin;
-+ struct natlookup natlookup;
-+ #endif
-+
-+ #ifdef linux
-+ /* This should also work for UDP. Unfortunately, it doesn't.
-+ Maybe when the Linux UDP proxy code gets a little cleaner.
-+ */
-+ if(!(err=getsockname(0,&sin,&sl))) {
-+ if(ptr) *ptr=ntohs(sin.sin_port);
-+ sprintf(buf,"%s",inet_ntoa(sin.sin_addr));
-+ gethostname(hostbuf,254);
-+ hp=gethostbyname(hostbuf);
-+ while(hp->h_addr_list[i]) {
-+ bzero(&sin,&sl);
-+ memcpy(&sin.sin_addr,hp->h_addr_list[i++],sizeof(hp->h_addr_list[i++]));
-+ if(!strcmp(buf,inet_ntoa(sin.sin_addr))) local_h++;
-+ }
-+ if(local_h) { /* syslog(LLEV,"DEBUG: hnam.c: non-transparent."); */ return(NULL); }
-+ else { return(buf); }
-+ }
-+ #endif
-+
-+ #ifdef __FreeBSD__
-+ /* The basis for this block of code is Darren Reed's
-+ patches to the TIS ftwk's ftp-gw.
-+ */
-+ bzero((char*)&sin,sizeof(sin));
-+ bzero((char*)&rsin,sizeof(rsin));
-+ if(getsockname(fd,(struct sockaddr*)&sin,&sl)<0) {
-+ return NULL;
-+ }
-+ sl=sizeof(rsin);
-+ if(getpeername(fd,(struct sockaddr*)&rsin,&sl)<0) {
-+ return NULL;
-+ }
-+ natlookup.nl_inport=sin.sin_port;
-+ natlookup.nl_outport=rsin.sin_port;
-+ natlookup.nl_inip=sin.sin_addr;
-+ natlookup.nl_outip=rsin.sin_addr;
-+ if((natfd=open(IPL_NAT,O_RDONLY))<0) {
-+ return(NULL);
-+ }
-+ if(ioctl(natfd,SIOCGNATL,&natlookup)==(-1)) {
-+ return(NULL);
-+ }
-+ close(natfd);
-+ if(ptr) *ptr=ntohs(natlookup.nl_realport);
-+ sprintf(buf,"%s",inet_ntoa(natlookup.nl_realip));
-+ #endif
-+
-+ /* No transparent proxy support */
-+ return(NULL);
- }
-Only in ./lib: hnam.c.orig
-diff -c -r ./plug-gw/plug-gw.c ../../NEW/fwtk/plug-gw/plug-gw.c
-*** ./plug-gw/plug-gw.c Thu Sep 5 15:36:33 1996
---- ../../NEW/fwtk/plug-gw/plug-gw.c Wed Oct 9 02:46:48 1996
-***************
-*** 39,44 ****
---- 39,48 ----
- static char **validdests = (char **)0;
- static Cfg *confp;
-
-+ int do_transparent=0;
-+
-+ char *getdsthost();
-+
- main(ac,av)
- int ac;
- char *av[];
-***************
-*** 193,201 ****
---- 197,213 ----
- char *ptr;
- int state = 0;
- int ssl_plug = 0;
-+ int pport=0;
-
- struct timeval timo;
-
-+ /* Transparent plug-gw is probably a bad idea, but hey .. */
-+ dhost=getdsthost(0,&pport);
-+ if(dhost) {
-+ do_transparent++;
-+ portid=pport;
-+ }
-+
- if(c->flags & PERM_DENY) {
- if (p == -1)
- syslog(LLEV,"deny host=%s/%s port=any",rhost,raddr);
-***************
-*** 215,221 ****
- syslog(LLEV,"fwtkcfgerr: -plug-to takes an argument, line %d",c->ln);
- exit (1);
- }
-! dhost = av[x];
- continue;
- }
-
---- 227,234 ----
- syslog(LLEV,"fwtkcfgerr: -plug-to takes an argument, line %d",c->ln);
- exit (1);
- }
-! if(!dhost) dhost = av[x];
-! /* syslog(LLEV,"DEBUG: dhost now is [%s]",dhost); */
- continue;
- }
-
-diff -c -r ./rlogin-gw/rlogin-gw.c ../../NEW/fwtk/rlogin-gw/rlogin-gw.c
-*** ./rlogin-gw/rlogin-gw.c Fri Sep 6 12:56:33 1996
---- ../../NEW/fwtk/rlogin-gw/rlogin-gw.c Wed Oct 9 02:49:04 1996
-***************
-*** 39,45 ****
---- 39,47 ----
-
-
- extern char *maphostname();
-+ char *getdsthost();
-
-+ int do_transparent=0;
-
- static int cmd_quit();
- static int cmd_help();
-***************
-*** 120,125 ****
---- 122,130 ----
- static char *tokav[56];
- int tokac;
- struct timeval timo;
-+ /* foo */
-+ char *psychic;
-+ /* foo */
-
- #ifndef LOG_NDELAY
- openlog("rlogin-gw",LOG_PID);
-***************
-*** 185,191 ****
- xforwarder = cf->argv[0];
- }
-
-!
-
- if((cf = cfg_get("directory",confp)) != (Cfg *)0) {
- if(cf->argc != 1) {
---- 190,203 ----
- xforwarder = cf->argv[0];
- }
-
-! /* foo */
-! psychic=getdsthost(0,NULL);
-! if(psychic) {
-! do_transparent++;
-! strncpy(dest,psychic,511);
-! dest[511]='\0';
-! }
-! /* foo */
-
- if((cf = cfg_get("directory",confp)) != (Cfg *)0) {
- if(cf->argc != 1) {
-***************
-*** 260,269 ****
- }
-
- /* if present a host name, chop and save username and hostname */
-! dest[0] = '\0';
- if((p = index(rusername,'@')) != (char *)0) {
- char *namp;
-
- *p++ = '\0';
- if(*p == '\0')
- p = "localhost";
---- 272,282 ----
- }
-
- /* if present a host name, chop and save username and hostname */
-! /* dest[0] = '\0'; */
- if((p = index(rusername,'@')) != (char *)0) {
- char *namp;
-
-+ dest[0] = '\0';
- *p++ = '\0';
- if(*p == '\0')
- p = "localhost";
-***************
-*** 293,300 ****
---- 306,326 ----
- goto leave;
- }
-
-+ /* syslog(LLEV,"DEBUG: Uh-oh, $dest = %s\n",dest); */
-+
- if(dest[0] != '\0') {
- /* Setup connection directly to remote machine */
-+ if((cf = cfg_get("welcome-msg",confp)) != (Cfg *)0) {
-+ if(cf->argc != 1) {
-+ syslog(LLEV,"fwtkcfgerr: welcome-msg must have one parameter, line %d",cf->ln);
-+ exit(1);
-+ }
-+ if(sayfile(0,cf->argv[0])) {
-+ syslog(LLEV,"fwtksyserr: cannot display welcome %s: %m",cf->argv[0]);
-+ exit(1);
-+ }
-+ }
-+ /* Does this cmd_connect thing feel like a kludge or what? */
- sprintf(buf,"connect %.1000s",dest);
- tokac = enargv(buf, tokav, 56, tokbuf, sizeof(tokbuf));
- if (cmd_connect(tokac, tokav, buf) != 2)
-***************
-*** 526,539 ****
- char ebuf[512];
-
- syslog(LLEV,"permit host=%s/%s connect to %s",rhost,raddr,namp);
- if(strlen(namp) > 20)
- namp[20] = '\0';
- if(rusername[0] != '\0')
- sprintf(ebuf,"Trying %s@%s...",rusername,namp);
- else
- sprintf(ebuf,"Trying %s...",namp);
-! if(say(0,ebuf))
-! return(1);
- } else
- syslog(LLEV,"permit host=%s/%s connect to %s",rhost,raddr,av[1]);
- if((serfd = conn_server(av[1],RLOGINPORT,1,buf)) < 0) {
---- 552,567 ----
- char ebuf[512];
-
- syslog(LLEV,"permit host=%s/%s connect to %s",rhost,raddr,namp);
-+ if(!do_transparent) {
- if(strlen(namp) > 20)
- namp[20] = '\0';
- if(rusername[0] != '\0')
- sprintf(ebuf,"Trying %s@%s...",rusername,namp);
- else
- sprintf(ebuf,"Trying %s...",namp);
-! if(say(0,ebuf))
-! return(1);
-! }
- } else
- syslog(LLEV,"permit host=%s/%s connect to %s",rhost,raddr,av[1]);
- if((serfd = conn_server(av[1],RLOGINPORT,1,buf)) < 0) {
-diff -c -r ./tn-gw/tn-gw.c ../../NEW/fwtk/tn-gw/tn-gw.c
-*** ./tn-gw/tn-gw.c Fri Sep 6 12:55:48 1996
---- ../../NEW/fwtk/tn-gw/tn-gw.c Wed Oct 9 02:50:17 1996
-***************
-*** 87,92 ****
---- 87,94 ----
- static int cmd_xforward();
- static int cmd_timeout();
-
-+ char *getdsthost();
-+
- static int tn3270 = 1; /* don't do tn3270 stuff */
- static int doX;
-
-***************
-*** 97,102 ****
---- 99,106 ----
- static int timeout = PROXY_TIMEOUT;
- static char timed_out_msg[] = "\r\nConnection closed due to inactivity";
-
-+ int do_transparent=0;
-+
- typedef struct {
- char *name;
- char *hmsg;
-***************
-*** 140,145 ****
---- 144,151 ----
- char tokbuf[BSIZ];
- char *tokav[56];
- int tokac;
-+ int port;
-+ char *psychic;
-
- #ifndef LOG_DAEMON
- openlog("tn-gw",LOG_PID);
-***************
-*** 308,313 ****
---- 314,346 ----
- }
- }
-
-+ psychic=getdsthost(0,&port);
-+ if(psychic) {
-+ if((strlen(psychic) + 10) < 510) {
-+ do_transparent++;
-+ if(port)
-+ sprintf(dest,"%s:%d",psychic,port);
-+ else
-+ sprintf(dest,"%s",psychic);
-+
-+
-+ if(!welcomedone)
-+ if((cf = cfg_get("welcome-msg",confp)) != (Cfg *)0) {
-+ if(cf->argc != 1) {
-+ syslog(LLEV,"fwtkcfgerr: welcome-msg must have one parameter, line %d",cf->ln);
-+ exit(1);
-+ }
-+ if(sayfile(0,cf->argv[0])) {
-+ syslog(LLEV,"fwtksyserr: cannot display welcome %s:%m",cf->argv[0]);
-+ exit(1);
-+ }
-+ welcomedone = 1;
-+ }
-+
-+
-+ }
-+ }
-+
- while (argc > 1) {
- argc--;
- argv++;
-***************
-*** 864,877 ****
- }
- }
-
--
- if((namp = maphostname(av[1])) != (char *)0) {
- char ebuf[512];
-
- syslog(LLEV,"permit host=%s/%s destination=%s",rladdr,riaddr,namp);
-! sprintf(ebuf,"Trying %s port %d...",namp,port);
-! if(say(0,ebuf))
-! return(1);
- } else
- syslog(LLEV,"permit host=%s/%s destination=%s",rladdr,riaddr,av[1]);
-
---- 897,911 ----
- }
- }
-
- if((namp = maphostname(av[1])) != (char *)0) {
- char ebuf[512];
-
- syslog(LLEV,"permit host=%s/%s destination=%s",rladdr,riaddr,namp);
-! if(!do_transparent) {
-! sprintf(ebuf,"Trying %s port %d...",namp,port);
-! if(say(0,ebuf))
-! return(1);
-! }
- } else
- syslog(LLEV,"permit host=%s/%s destination=%s",rladdr,riaddr,av[1]);
-
-***************
-*** 903,910 ****
-
- syslog(LLEV,"connected host=%s/%s destination=%s",rladdr,riaddr,av[1]);
- strncpy(dest,av[1], 511);
-! sprintf(buf, "Connected to %s.", dest);
-! say(0, buf);
- return(2);
- }
-
---- 937,946 ----
-
- syslog(LLEV,"connected host=%s/%s destination=%s",rladdr,riaddr,av[1]);
- strncpy(dest,av[1], 511);
-! if(!do_transparent) {
-! sprintf(buf, "Connected to %s.", dest);
-! say(0, buf);
-! }
- return(2);
- }
-
-
-
OpenPOWER on IntegriCloud