diff options
author | Achim Gottinger <achim@gentoo.org> | 2000-10-05 18:22:52 +0000 |
---|---|---|
committer | Achim Gottinger <achim@gentoo.org> | 2000-10-05 18:22:52 +0000 |
commit | ea69e5afdd15784504bae9788964c88a5a968579 (patch) | |
tree | 2461886e3be33060c4bd018cd9c136041aa0b648 /net-misc | |
parent | *** empty log message *** (diff) | |
download | historical-ea69e5afdd15784504bae9788964c88a5a968579.tar.gz historical-ea69e5afdd15784504bae9788964c88a5a968579.tar.bz2 historical-ea69e5afdd15784504bae9788964c88a5a968579.zip |
*** empty log message ***
Diffstat (limited to 'net-misc')
-rw-r--r-- | net-misc/dhcp/dhcp-3.0_beta0206.ebuild | 6 | ||||
-rw-r--r-- | net-misc/nut/files/digest-nut-0.44.0-r1 | 1 | ||||
-rw-r--r-- | net-misc/nut/nut-0.44.0-r1.ebuild | 57 | ||||
-rw-r--r-- | net-misc/rsync/files/digest-rsync-2.4.4-r1 | 1 | ||||
-rw-r--r-- | net-misc/rsync/files/digest-rsync-2.4.5 | 1 | ||||
-rw-r--r-- | net-misc/rsync/rsync-2.4.4-r1.ebuild | 32 | ||||
-rw-r--r-- | net-misc/rsync/rsync-2.4.6.ebuild (renamed from net-misc/rsync/rsync-2.4.5.ebuild) | 3 | ||||
-rw-r--r-- | net-misc/snarf/files/digest-snarf-2.0.9-r1 | 1 | ||||
-rw-r--r-- | net-misc/snarf/snarf-2.0.9-r1.ebuild | 28 | ||||
-rw-r--r-- | net-misc/sslwrap/files/s_server.c | 877 | ||||
-rw-r--r-- | net-misc/sslwrap/files/s_socket.c | 684 | ||||
-rw-r--r-- | net-misc/sslwrap/sslwrap-2.0.5-r1.ebuild | 6 | ||||
-rw-r--r-- | net-misc/whois/files/digest-whois-4.5.0-r1 | 1 | ||||
-rw-r--r-- | net-misc/whois/files/digest-whois-4.5.1 | 1 | ||||
-rw-r--r-- | net-misc/whois/whois-4.5.1.ebuild (renamed from net-misc/whois/whois-4.5.0-r1.ebuild) | 9 |
15 files changed, 1574 insertions, 134 deletions
diff --git a/net-misc/dhcp/dhcp-3.0_beta0206.ebuild b/net-misc/dhcp/dhcp-3.0_beta0206.ebuild index e9a471d38edd..33235ce53857 100644 --- a/net-misc/dhcp/dhcp-3.0_beta0206.ebuild +++ b/net-misc/dhcp/dhcp-3.0_beta0206.ebuild @@ -1,7 +1,7 @@ # Copyright 1999-2000 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License, v2 or later # Author Achim Gottinger <achim@gentoo.org> -# $Header: /var/cvsroot/gentoo-x86/net-misc/dhcp/dhcp-3.0_beta0206.ebuild,v 1.1 2000/10/05 01:32:52 achim Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-misc/dhcp/dhcp-3.0_beta0206.ebuild,v 1.2 2000/10/05 18:22:51 achim Exp $ P=dhcp-3.0b2pl6 A="${P}.tar.gz" @@ -32,7 +32,7 @@ src_install () { cd ../dhcpctl dolib libdhcpctl.a - insinto /usr/include + insinto /usr/include doins dhcpctl.h cd ../omapip @@ -63,7 +63,7 @@ src_install () { doins boolean.h dst.h int.h lang.h list.h result.h types.h cd ${S} - dodoc ANONCVS CHANGES COPYRIGHT DOCUMENTATION ISC-LICENSE README RELNOTES + dodoc ANONCVS CHANGES COPYRIGHT README RELNOTES docinto doc dodoc doc/* } diff --git a/net-misc/nut/files/digest-nut-0.44.0-r1 b/net-misc/nut/files/digest-nut-0.44.0-r1 deleted file mode 100644 index 29002576f332..000000000000 --- a/net-misc/nut/files/digest-nut-0.44.0-r1 +++ /dev/null @@ -1 +0,0 @@ -MD5 98314d5eb66db0e0eb367623cff16e56 nut-0.44.0.tar.gz diff --git a/net-misc/nut/nut-0.44.0-r1.ebuild b/net-misc/nut/nut-0.44.0-r1.ebuild deleted file mode 100644 index 985d35585d93..000000000000 --- a/net-misc/nut/nut-0.44.0-r1.ebuild +++ /dev/null @@ -1,57 +0,0 @@ -# Copyright 1999-2000 Gentoo Technologies, Inc. -# Distributed under the terms of the GNU General Public License, v2 or later -# Author Achim Gottinger <achim@gentoo.org> -# $Header: /var/cvsroot/gentoo-x86/net-misc/nut/nut-0.44.0-r1.ebuild,v 1.3 2000/09/15 20:09:13 drobbins Exp $ - -P=nut-0.44.0 -A=${P}.tar.gz -S=${WORKDIR}/${P} -DESCRIPTION="Network-UPS Tools" -SRC_URI="http://www.exploits.org/nut/release/"${A} -HOMEPAGE="http://www.exploits.org/nut/" - - -src_unpack() { - unpack ${A} -} - -src_compile() { - cd ${S} - try ./configure --host=${CHOST} --prefix=/usr --sysconfdir=/etc/nut - try make - try make cgi -} - -src_install() { - cd ${S} - try make BASEPATH=${D}/usr CONFPATH=${D}/etc/nut STATEPATH=${D}/var/state/ups \ - install - cd clients - exeinto /usr/local/httpd/cgi-bin/nut - doexe *.cgi - into /usr - dolib upsfetch.o - insinto /usr/include - doins upsfetch.h - cd .. - rmdir ${D}/usr/misc - insinto /etc/rc.d/init.d - doins ${O}/files/upsd - dodoc COPYING CREDITS Changes QUICKSTART README - docinto docs - dodoc docs/*.txt docs/FAQ docs/Changes.trust - docinto cables - dodoc docs/cables/*.txt -} - - -pkg_config() { - - . ${ROOT}/etc/rc.d/config/functions - - einfo "Generating symlinks..." - ${ROOT}/usr/sbin/rc-update add upsd - -} - - diff --git a/net-misc/rsync/files/digest-rsync-2.4.4-r1 b/net-misc/rsync/files/digest-rsync-2.4.4-r1 deleted file mode 100644 index a52195267d10..000000000000 --- a/net-misc/rsync/files/digest-rsync-2.4.4-r1 +++ /dev/null @@ -1 +0,0 @@ -MD5 fb2653d816c87b1d7804651e65cc927d rsync-2.4.4.tar.gz diff --git a/net-misc/rsync/files/digest-rsync-2.4.5 b/net-misc/rsync/files/digest-rsync-2.4.5 deleted file mode 100644 index a2a8d16398bd..000000000000 --- a/net-misc/rsync/files/digest-rsync-2.4.5 +++ /dev/null @@ -1 +0,0 @@ -MD5 d8397f98cce56a090e9b3893ca451d62 rsync-2.4.5.tar.gz diff --git a/net-misc/rsync/rsync-2.4.4-r1.ebuild b/net-misc/rsync/rsync-2.4.4-r1.ebuild deleted file mode 100644 index 28b4a9adc59d..000000000000 --- a/net-misc/rsync/rsync-2.4.4-r1.ebuild +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright 1999-2000 Gentoo Technologies, Inc. -# Distributed under the terms of the GNU General Public License, v2 or later -# Author Achim Gottinger <achim@gentoo.org> -# $Header: /var/cvsroot/gentoo-x86/net-misc/rsync/rsync-2.4.4-r1.ebuild,v 1.3 2000/09/15 20:09:13 drobbins Exp $ - -P=rsync-2.4.4 -A=${P}.tar.gz -S=${WORKDIR}/${P} -DESCRIPTION="File transfer program to keep remote files into sync" -SRC_URI="ftp://rsync.samba.org/pub/rsync/${A}" -HOMEPAGE="http://rsync.samba.org" - - -src_compile() { - - cd ${S} - try ./configure --prefix=/usr --sysconfdir=/etc/rsync --host=${CHOST} - try make - -} - -src_install () { - - cd ${S} - try make prefix=${D}/usr install - prepman - dodir /etc/rsync - dodoc COPYING README - -} - - diff --git a/net-misc/rsync/rsync-2.4.5.ebuild b/net-misc/rsync/rsync-2.4.6.ebuild index f0bc7a7c589e..5ba611606e77 100644 --- a/net-misc/rsync/rsync-2.4.5.ebuild +++ b/net-misc/rsync/rsync-2.4.6.ebuild @@ -1,9 +1,8 @@ # Copyright 1999-2000 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License, v2 or later # Author Achim Gottinger <achim@gentoo.org> -# $Header: /var/cvsroot/gentoo-x86/net-misc/rsync/rsync-2.4.5.ebuild,v 1.2 2000/09/15 20:09:13 drobbins Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-misc/rsync/rsync-2.4.6.ebuild,v 1.1 2000/10/05 18:22:51 achim Exp $ -P=rsync-2.4.5 A=${P}.tar.gz S=${WORKDIR}/${P} DESCRIPTION="File transfer program to keep remote files into sync" diff --git a/net-misc/snarf/files/digest-snarf-2.0.9-r1 b/net-misc/snarf/files/digest-snarf-2.0.9-r1 deleted file mode 100644 index eea4197b031d..000000000000 --- a/net-misc/snarf/files/digest-snarf-2.0.9-r1 +++ /dev/null @@ -1 +0,0 @@ -MD5 a57813f477fcc4c0dc5bd2c5e3c38f33 snarf-2.0.9.tar.gz diff --git a/net-misc/snarf/snarf-2.0.9-r1.ebuild b/net-misc/snarf/snarf-2.0.9-r1.ebuild deleted file mode 100644 index 6abe814286f7..000000000000 --- a/net-misc/snarf/snarf-2.0.9-r1.ebuild +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright 1999-2000 Gentoo Technologies, Inc. -# Distributed under the terms of the GNU General Public License, v2 or later -# Author Achim Gottinger <achim@gentoo.org> -# $Header: /var/cvsroot/gentoo-x86/net-misc/snarf/snarf-2.0.9-r1.ebuild,v 1.3 2000/09/15 20:09:13 drobbins Exp $ - -P=snarf-2.0.9 -A=${P}.tar.gz -S=${WORKDIR}/${P} -DESCRIPTION="A full featured small web-spider" -SRC_URI="http://www.xach.com/snarf/"${A} -HOMEPAGE="http://www.xach.com/snarf/" - -src_compile() { - cd ${S} - try ./configure --host=${CHOST} --prefix=/usr - try make -} - -src_install() { - cd ${S} - into /usr - dobin snarf - doman snarf.1 - dodoc COPYING ChangeLog README TODO -} - - - diff --git a/net-misc/sslwrap/files/s_server.c b/net-misc/sslwrap/files/s_server.c new file mode 100644 index 000000000000..9ab2cf3ab1a6 --- /dev/null +++ b/net-misc/sslwrap/files/s_server.c @@ -0,0 +1,877 @@ +/* + * sslwrap.c + * + * Wrapper that encrypts all data from a simple TCP-based service + * (POP3, IMAP, SMTP, telnet). Installs in inetd. + * + * Written by Rick Kaseguma + * <rickk@rickk.com> + * + * Version 1: + * December 28, 1997 + * + * Version 2: + * September 18, 1998 - Added support for SSLeay 0.9.1 and standalone mode + * instead of inetd mode. Added support for connecting to other hosts. + * + * Version 2.0.1 (user contributions) + * Added "-exec" option to directly run a program instead of having to connect + * to localhost + * Corrected a typo in the usage info for -accept + * Corrected a segmentation fault when -nocafile is used + * + * Version 2.0.2 (user contributions) + * Corrected missing ")" in call to RSA_generate_key for versions of SSLeay + * less than 9.0 + * + * Version 2.0.5 + * Compatibility with OpenSSL 0.9.4 + * + * Copyright 1997-9 Rick R. Kaseguma + * All rights reserved + * + * Feel free to use this as you want for commercial or non-commercial use, + * but no warranty is provided. Use at your own risk. + * + * Example inetd.conf entry (from Linux): + * + * imaps stream tcp nowait sslwrap /usr/sbin/tcpd + * /usr/local/ssl/bin/sslwrap -cert /usr/local/ssl/certs/mail.pem -port 143 + * + * This does not need to be run as root, but it does need to be able to access + * the (unencrypted) certificate file. + * + * You must specify a certificate file (-cert) but it can be self-signed. + * + * You must also specify the port the service actually exists on using -port. + * sslwrap will make a connection to localhost (127.0.0.1) and this port to + * do the actual work on the connection. The connection will not come from + * a privileged port, so you cannot use this to front-end a service that + * requires that. + */ + + +/* apps/s_server.c */ +/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/types.h> +#include <sys/stat.h> +#ifdef WIN16 +#define APPS_WIN16 +#endif +#include OPENSSL"lhash.h" +#include OPENSSL"bn.h" +#define USE_SOCKETS +#include "apps.h" +#include "err.h" +#include OPENSSL"pem.h" +#include OPENSSL"x509.h" +#include OPENSSL"ssl.h" +#include "s_apps.h" + +#ifndef NOPROTO +static RSA MS_CALLBACK *tmp_rsa_cb(SSL *s, int export +#if SSLEAY_VERSION_NUMBER >= 0x903101L +, int keylen +#endif +); +static int sv_body(char *hostname, int sin, int sout); +static void close_accept_socket(void ); +static void sv_usage(void); +static int init_ssl_connection(SSL *s); +static void print_stats(BIO *bp,SSL_CTX *ctx); +static DH *load_dh_param(void ); +static DH *get_dh512(void); +#else +static RSA MS_CALLBACK *tmp_rsa_cb(); +static int sv_body(); +static void close_accept_socket(); +static void sv_usage(); +static int init_ssl_connection(); +static void print_stats(); +static DH *load_dh_param(); +static DH *get_dh512(); +#endif + +#ifdef WIN32 +int errno; +#endif + +#ifndef S_ISDIR +#define S_ISDIR(a) (((a) & _S_IFMT) == _S_IFDIR) +#endif + +static unsigned char dh512_p[]={ + 0xDA,0x58,0x3C,0x16,0xD9,0x85,0x22,0x89,0xD0,0xE4,0xAF,0x75, + 0x6F,0x4C,0xCA,0x92,0xDD,0x4B,0xE5,0x33,0xB8,0x04,0xFB,0x0F, + 0xED,0x94,0xEF,0x9C,0x8A,0x44,0x03,0xED,0x57,0x46,0x50,0xD3, + 0x69,0x99,0xDB,0x29,0xD7,0x76,0x27,0x6B,0xA2,0xD3,0xD4,0x12, + 0xE2,0x18,0xF4,0xDD,0x1E,0x08,0x4C,0xF6,0xD8,0x00,0x3E,0x7C, + 0x47,0x74,0xE8,0x33, + }; +static unsigned char dh512_g[]={ + 0x02, + }; + +static DH *get_dh512() + { + DH *dh=NULL; + +#ifndef NO_DH + if ((dh=DH_new()) == NULL) return(NULL); + dh->p=BN_bin2bn(dh512_p,sizeof(dh512_p),NULL); + dh->g=BN_bin2bn(dh512_g,sizeof(dh512_g),NULL); + if ((dh->p == NULL) || (dh->g == NULL)) + return(NULL); +#endif + return(dh); + } + +/* static int load_CA(SSL_CTX *ctx, char *file);*/ + +#undef BUFSIZZ +#define BUFSIZZ 1024 +static int accept_socket= -1; + +#define TEST_CERT "server.pem" +#undef PROG +#define PROG s_server_main + +#define DH_PARAM "server.pem" + +extern int verify_depth; + +static char *cipher=NULL; +int verify=SSL_VERIFY_NONE; +char *s_cert_file=TEST_CERT,*s_key_file=NULL; +#ifdef FIONBIO +static int s_nbio=0; +#endif +static int s_nbio_test=0; +static SSL_CTX *ctx=NULL; + +static BIO *bio_s_out=NULL; +static int s_debug=0; +static int s_quiet=1; + +static unsigned long dstAddr = (127 << 24) | 1; +static short dstPort = 0; +#ifndef NO_EXEC +static char *exec_pgm = NULL; +#endif /*NO_EXEC*/ + +static void sv_usage() + { + BIO_printf(bio_err,"usage: sslwrap [args ...]\n"); + BIO_printf(bio_err,"\n"); + BIO_printf(bio_err," -addr arg - address to connect to (default is 127.0.0.1)\n"); + BIO_printf(bio_err," -port arg - port to connect to\n"); + BIO_printf(bio_err," -accept arg - port to accept on (default is stdin for inetd)\n"); + BIO_printf(bio_err," -verify arg - turn on peer certificate verification\n"); + BIO_printf(bio_err," -Verify arg - turn on peer certificate verification, must have a cert.\n"); + BIO_printf(bio_err," -cert arg - certificate file to use, PEM format assumed\n"); + BIO_printf(bio_err," (default is %s)\n",TEST_CERT); + BIO_printf(bio_err," -key arg - RSA file to use, PEM format assumed, in cert file if\n"); + BIO_printf(bio_err," not specified (default is %s)\n",TEST_CERT); +#ifdef FIONBIO + BIO_printf(bio_err," -nbio - Run with non-blocking IO\n"); +#endif + BIO_printf(bio_err," -nbio_test - test with the non-blocking test bio\n"); + BIO_printf(bio_err," -debug - Print more output\n"); + BIO_printf(bio_err," -state - Print the SSL states\n"); +#if 0 + BIO_printf(bio_err," -CApath arg - PEM format directory of CA's\n"); + BIO_printf(bio_err," -CAfile arg - PEM format file of CA's\n"); +#endif + BIO_printf(bio_err," -nocert - Don't use any certificates (Anon-DH)\n"); + BIO_printf(bio_err," -cipher arg - play with 'ssleay ciphers' to see what goes here\n"); + BIO_printf(bio_err," -quiet - No server output\n"); + BIO_printf(bio_err," -no_tmp_rsa - Do not generate a tmp RSA key\n"); + BIO_printf(bio_err," -ssl2 - Just talk SSLv2\n"); + BIO_printf(bio_err," -ssl3 - Just talk SSLv3\n"); + BIO_printf(bio_err," -bugs - Turn on SSL bug compatability\n"); + } + +static int local_argc; +static char **local_argv; +static int hack; + +int MAIN(argc, argv) +int argc; +char *argv[]; + { + short port=0; + char *CApath=NULL,*CAfile=NULL; + int badop=0,bugs=0; + int ret=1; + int no_tmp_rsa=0,nocert=0; + int state=0; + SSL_METHOD *meth=NULL; + DH *dh=NULL; + +#if !defined(NO_SSL2) && !defined(NO_SSL3) + meth=SSLv23_server_method(); +#elif !defined(NO_SSL3) + meth=SSLv3_server_method(); +#elif !defined(NO_SSL2) + meth=SSLv2_server_method(); +#endif + + local_argc=argc; + local_argv=argv; + + apps_startup(); + s_quiet=0; + s_debug=0; + + if (bio_err == NULL) + bio_err=BIO_new_fp(stderr,BIO_NOCLOSE); + + verify_depth=0; +#ifdef FIONBIO + s_nbio=0; +#endif + s_nbio_test=0; + + argc--; + argv++; + + while (argc >= 1) + { + if ((strcmp(*argv,"-port") == 0)) + { + if (--argc < 1) goto bad; + if (!extract_port(*(++argv),&dstPort)) + goto bad; + } + else if ((strcmp(*argv,"-addr") == 0)) + { + int v1, v2, v3, v4; + if (--argc < 1) goto bad; + if (sscanf(*(++argv), "%u.%u.%u.%u", &v1, &v2, &v3, &v4) != 4) + goto bad; + + dstAddr = ((v1 << 24) & 0xFF000000) | ((v2 << 16) & 0xFF0000) | + ((v3 << 8) & 0xFF00) | (v4 & 0xFF); + } +#ifndef NO_EXEC + else if ((strcmp(*argv,"-exec") == 0)) + { + if (--argc < 1) goto bad; + exec_pgm = *(++argv); + } +#endif /*NO_EXEC*/ + else if (strcmp(*argv,"-accept") == 0) + { + if (--argc < 1) goto bad; + if (!extract_port(*(++argv),&port)) + goto bad; + } + else if (strcmp(*argv,"-verify") == 0) + { + verify=SSL_VERIFY_PEER|SSL_VERIFY_CLIENT_ONCE; + if (--argc < 1) goto bad; + verify_depth=atoi(*(++argv)); + BIO_printf(bio_err,"verify depth is %d\n",verify_depth); + } + else if (strcmp(*argv,"-Verify") == 0) + { + verify=SSL_VERIFY_PEER|SSL_VERIFY_FAIL_IF_NO_PEER_CERT| + SSL_VERIFY_CLIENT_ONCE; + if (--argc < 1) goto bad; + verify_depth=atoi(*(++argv)); + BIO_printf(bio_err,"verify depth is %d, must return a certificate\n",verify_depth); + } + else if (strcmp(*argv,"-cert") == 0) + { + if (--argc < 1) goto bad; + s_cert_file= *(++argv); + } + else if (strcmp(*argv,"-key") == 0) + { + if (--argc < 1) goto bad; + s_key_file= *(++argv); + } + else if (strcmp(*argv,"-nocert") == 0) + { + nocert=1; + } + else if (strcmp(*argv,"-CApath") == 0) + { + if (--argc < 1) goto bad; + CApath= *(++argv); + } + else if (strcmp(*argv,"-cipher") == 0) + { + if (--argc < 1) goto bad; + cipher= *(++argv); + } + else if (strcmp(*argv,"-CAfile") == 0) + { + if (--argc < 1) goto bad; + CAfile= *(++argv); + } +#ifdef FIONBIO + else if (strcmp(*argv,"-nbio") == 0) + { s_nbio=1; } +#endif + else if (strcmp(*argv,"-nbio_test") == 0) + { +#ifdef FIONBIO + s_nbio=1; +#endif + s_nbio_test=1; + } + else if (strcmp(*argv,"-debug") == 0) + { s_debug=1; } + else if (strcmp(*argv,"-hack") == 0) + { hack=1; } + else if (strcmp(*argv,"-state") == 0) + { state=1; } + else if (strcmp(*argv,"-quiet") == 0) + { s_quiet=1; } + else if (strcmp(*argv,"-bugs") == 0) + { bugs=1; } + else if (strcmp(*argv,"-no_tmp_rsa") == 0) + { no_tmp_rsa=1; } +#ifndef NO_SSL2 + else if (strcmp(*argv,"-ssl2") == 0) + { meth=SSLv2_server_method(); } +#endif +#ifndef NO_SSL3 + else if (strcmp(*argv,"-ssl3") == 0) + { meth=SSLv3_server_method(); } +#endif + else + { + BIO_printf(bio_err,"unknown option %s\n",*argv); + badop=1; + break; + } + argc--; + argv++; + } +#ifndef NO_EXEC + if (exec_pgm && dstPort) { + BIO_printf(bio_err,"options -port and -exec are incompatible\n"); + badop=1; + } + if (!exec_pgm && !dstPort) { + BIO_printf(bio_err,"one of -port or -exec must be supplied\n"); + badop=1; + } +#else /*NO_EXEC*/ + if (!dstPort) { + BIO_printf(bio_err,"-port must be supplied\n"); + badop=1; + } +#endif /*NO_EXEC*/ + if (badop) + { +bad: + sv_usage(); + goto end; + } + + if (bio_s_out == NULL) + { + if (s_quiet && !s_debug) + { + bio_s_out=BIO_new(BIO_s_null()); + } + else + { + if (bio_s_out == NULL) + bio_s_out=BIO_new_fp(stdout,BIO_NOCLOSE); + } + } + +#if !defined(NO_RSA) || !defined(NO_DSA) + if (nocert) +#endif + { + s_cert_file=NULL; + s_key_file=NULL; + } + + SSL_load_error_strings(); + SSLeay_add_ssl_algorithms(); + + ctx=SSL_CTX_new(meth); + if (ctx == NULL) + { + ERR_print_errors(bio_err); + goto end; + } + + if (bugs) SSL_CTX_set_options(ctx,SSL_OP_ALL); + if (hack) SSL_CTX_set_options(ctx,SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG); + if (hack) SSL_CTX_set_options(ctx,SSL_OP_NON_EXPORT_FIRST); + + if (state) SSL_CTX_set_info_callback(ctx,apps_ssl_info_callback); + +#if 0 + if (cipher == NULL) cipher=getenv("SSL_CIPHER"); +#endif + +#if 0 + if (s_cert_file == NULL) + { + BIO_printf(bio_err,"You must specify a certificate file for the server to use\n"); + goto end; + } +#endif + + /* 980921 RRK - Removed this code; not necessary for sslwrap */ +#if 0 + if ((!SSL_CTX_load_verify_locations(ctx,CAfile,CApath)) || + (!SSL_CTX_set_default_verify_paths(ctx))) + { + BIO_printf(bio_err,"X509_load_verify_locations\n"); + ERR_print_errors(bio_err); + goto end; + } +#endif + +#ifndef NO_DH + /* EAY EAY EAY evil hack */ + dh=load_dh_param(); + if (dh != NULL) + { + /* BIO_printf(bio_s_out,"Setting temp DH parameters\n"); */ + } + else + { + /* BIO_printf(bio_s_out,"Using default temp DH parameters\n"); */ + dh=get_dh512(); + } + /* BIO_flush(bio_s_out); */ + + SSL_CTX_set_tmp_dh(ctx,dh); + DH_free(dh); +#endif + + if (!set_cert_stuff(ctx,s_cert_file,s_key_file)) + goto end; + +#if 1 + SSL_CTX_set_tmp_rsa_callback(ctx,tmp_rsa_cb); +#else + if (!no_tmp_rsa && SSL_CTX_need_tmp_RSA(ctx)) + { + RSA *rsa; + + /* BIO_printf(bio_s_out,"Generating temp (512 bit) RSA key..."); */ + /* BIO_flush(bio_s_out); */ + + rsa=RSA_generate_key(512,RSA_F4,NULL); + + if (!SSL_CTX_set_tmp_rsa(ctx,rsa)) + { + ERR_print_errors(bio_err); + goto end; + } + RSA_free(rsa); + /* BIO_printf(bio_s_out,"\n"); */ + } +#endif + + if (cipher != NULL) + SSL_CTX_set_cipher_list(ctx,cipher); + SSL_CTX_set_verify(ctx,verify,verify_callback); + + if (s_cert_file != NULL) { + SSL_CTX_set_client_CA_list(ctx,SSL_load_client_CA_file(s_cert_file)); + } + + if (port) { + /* BIO_printf(bio_s_out,"ACCEPT\n"); */ + do_server(port,&accept_socket,sv_body); + /* print_stats(bio_s_out,ctx); */ + ret=0; + } else { + /* stdin/stdout for inetd */ + sv_body( "", fileno(stdin), fileno(stdout) ); + } +end: + if (ctx != NULL) SSL_CTX_free(ctx); + if (bio_s_out != NULL) + { + BIO_free(bio_s_out); + bio_s_out=NULL; + } + EXIT(ret); + } + +static void print_stats(bio,ssl_ctx) +BIO *bio; +SSL_CTX *ssl_ctx; + { + BIO_printf(bio,"%4ld items in the session cache\n", + SSL_CTX_sess_number(ssl_ctx)); + BIO_printf(bio,"%4d client connects (SSL_connect())\n", + SSL_CTX_sess_connect(ssl_ctx)); + BIO_printf(bio,"%4d client connects that finished\n", + SSL_CTX_sess_connect_good(ssl_ctx)); + BIO_printf(bio,"%4d server accepts (SSL_accept())\n", + SSL_CTX_sess_accept(ssl_ctx)); + BIO_printf(bio,"%4d server accepts that finished\n", + SSL_CTX_sess_accept_good(ssl_ctx)); + BIO_printf(bio,"%4d session cache hits\n",SSL_CTX_sess_hits(ssl_ctx)); + BIO_printf(bio,"%4d session cache misses\n",SSL_CTX_sess_misses(ssl_ctx)); + BIO_printf(bio,"%4d session cache timeouts\n",SSL_CTX_sess_timeouts(ssl_ctx)); + BIO_printf(bio,"%4d callback cache hits\n",SSL_CTX_sess_cb_hits(ssl_ctx)); + } + +static int sv_body(hostname, s_stdin, s_stdout) +char *hostname; +int s_stdin; +int s_stdout; + { + char *buf=NULL; + fd_set readfds; + int ret=1,width; + int k,i; + unsigned long l; + SSL *con=NULL; + BIO *sbi, *sbo; + int s_in, s_out; + struct sockaddr_in srvr; + + if (dstPort) { + s_in = s_out = socket( AF_INET, SOCK_STREAM, 0 ); + + memset((void *)&srvr, 0, sizeof(srvr)); + srvr.sin_family = AF_INET; + srvr.sin_port = htons( dstPort ); + srvr.sin_addr.s_addr = htonl( dstAddr ); + + connect(s_in, (struct sockaddr *) &srvr, sizeof(srvr)); +#ifndef NO_EXEC + } else { + char *exec_argv[2]; + exec_argv[0] = exec_pgm; + exec_argv[1] = NULL; + + if (spawn(1, exec_argv, &s_in, &s_out) < 0) { + BIO_printf(bio_err,"could not run %s\n", exec_pgm); + goto err; + } +#endif /*NO_EXEC*/ + } + + if ((buf=CRYPTO_malloc(BUFSIZZ,__FILE__,__LINE__)) == NULL) + { + BIO_printf(bio_err,"out of memory\n"); + goto err; + } + + if (con == NULL) + con=(SSL *)SSL_new(ctx); + SSL_clear(con); + + sbi=BIO_new_socket(s_stdin,BIO_NOCLOSE); + sbo=BIO_new_socket(s_stdout,BIO_NOCLOSE); + + SSL_set_bio(con,sbi,sbo); + SSL_set_accept_state(con); + /* SSL_set_fd(con,s); */ + + width=s_stdin; + if (s_stdout > width) width = s_stdout; + if (s_in > width) width = s_in; + width++; + for(;;) + { + FD_ZERO(&readfds); + FD_SET(s_in,&readfds); + FD_SET(s_stdin,&readfds); + i=select(width,&readfds,NULL,NULL,NULL); + if (i <= 0) continue; + if (FD_ISSET(s_in,&readfds)) + { + i=read(s_in,buf,BUFSIZZ); + if (!s_quiet) + { + if (i <= 0) + { + goto err; + } + + } + l=k=0; + for (;;) + { + /* should do a select for the write */ + k=SSL_write(con,&(buf[l]),(unsigned int)i); + if ( + BIO_sock_should_retry(k)) + { + continue; + } + if (k <= 0) + { + ERR_print_errors(bio_err); + ret=1; + goto err; + } + l+=k; + i-=k; + if (i <= 0) break; + } + } + if (FD_ISSET(s_stdin,&readfds)) + { + if (!SSL_is_init_finished(con)) + { + i=init_ssl_connection(con); + + if (i < 0) + { + ret=0; + goto err; + } + else if (i == 0) + { + ret=1; + goto err; + } + } + else + { + i=SSL_read(con,(char *)buf,BUFSIZZ); + if ((i <= 0) && + BIO_sock_should_retry(i)) + { + } + else if (i <= 0) + { + ERR_print_errors(bio_err); + ret=1; + goto err; + } + else + write(s_out,buf, + (unsigned int)i); + } + } + } +err: + +#if 1 + SSL_set_shutdown(con,SSL_SENT_SHUTDOWN|SSL_RECEIVED_SHUTDOWN); +#else + SSL_shutdown(con); +#endif + if (con != NULL) SSL_free(con); + if (buf != NULL) + { + memset(buf,0,BUFSIZZ); + CRYPTO_free(buf); + } + + return(ret); + } + +static void close_accept_socket() + { + BIO_printf(bio_err,"shutdown accept socket\n"); + if (accept_socket >= 0) + { + SHUTDOWN2(accept_socket); + } + } + +static int init_ssl_connection(con) +SSL *con; + { + int i; + X509 *peer; + int verify_error; + /* + char *str; + MS_STATIC char buf[BUFSIZ]; + */ + + if ((i=SSL_accept(con)) <= 0) + { + if (BIO_sock_should_retry(i)) + { + /* BIO_printf(bio_s_out,"DELAY\n"); */ + return(1); + } + + BIO_printf(bio_err,"ERROR\n"); + verify_error=SSL_get_verify_result(con); + if (verify_error != X509_V_OK) + { + BIO_printf(bio_err,"verify error:%s\n", + X509_verify_cert_error_string(verify_error)); + } + else + ERR_print_errors(bio_err); + return(0); + } + + /* PEM_write_bio_SSL_SESSION(bio_s_out,SSL_get_session(con)); */ + + peer=SSL_get_peer_certificate(con); + if (peer != NULL) + { + /* + BIO_printf(bio_s_out,"Client certificate\n"); + PEM_write_bio_X509(bio_s_out,peer); + X509_NAME_oneline(X509_get_subject_name(peer),buf,BUFSIZ); + BIO_printf(bio_s_out,"subject=%s\n",buf); + X509_NAME_oneline(X509_get_issuer_name(peer),buf,BUFSIZ); + BIO_printf(bio_s_out,"issuer=%s\n",buf); + X509_free(peer); + */ + } + /* + if (SSL_get_shared_ciphers(con,buf,BUFSIZ) != NULL) + BIO_printf(bio_s_out,"Shared ciphers:%s\n",buf); + str=SSL_CIPHER_get_name(SSL_get_current_cipher(con)); + BIO_printf(bio_s_out,"CIPHER is %s\n",(str != NULL)?str:"(NONE)"); + if (con->hit) BIO_printf(bio_s_out,"Reused session-id\n"); + */ + return(1); + } + +static DH *load_dh_param() + { + DH *ret=NULL; + BIO *bio; + +#ifndef NO_DH + if ((bio=BIO_new_file(DH_PARAM,"r")) == NULL) + goto err; + ret=PEM_read_bio_DHparams(bio,NULL,NULL +#if SSLEAY_VERSION_NUMBER >= 0x904100L + , NULL +#endif +); +err: + if (bio != NULL) BIO_free(bio); +#endif + return(ret); + } + +#if 0 +static int load_CA(ctx,file) +SSL_CTX *ctx; +char *file; + { + FILE *in; + X509 *x=NULL; + + if ((in=fopen(file,"r")) == NULL) + return(0); + + for (;;) + { + if (PEM_read_X509(in,&x,NULL) == NULL) + break; + SSL_CTX_add_client_CA(ctx,x); + } + if (x != NULL) X509_free(x); + fclose(in); + return(1); + } +#endif + + +static RSA MS_CALLBACK *tmp_rsa_cb(s,export +#if SSLEAY_VERSION_NUMBER >= 0x903101L +,keylen +#endif + +) +SSL *s; +int export; +#if SSLEAY_VERSION_NUMBER >= 0x903101L +int keylen; +#endif + { + static RSA *rsa_tmp=NULL; + + if (rsa_tmp == NULL) + { + if (!s_quiet) + { + /* BIO_printf(bio_err,"Generating temp (512 bit) RSA key..."); + BIO_flush(bio_err); */ + } +#ifndef NO_RSA +#if SSLEAY_VERSION_NUMBER >= 0x0900 + rsa_tmp=RSA_generate_key(512,RSA_F4,NULL,NULL); +#else + rsa_tmp=RSA_generate_key(512,RSA_F4,NULL); +#endif +#endif + if (!s_quiet) + { + /* BIO_printf(bio_err,"\n"); + BIO_flush(bio_err); */ + } + } + return(rsa_tmp); + } diff --git a/net-misc/sslwrap/files/s_socket.c b/net-misc/sslwrap/files/s_socket.c new file mode 100644 index 000000000000..06aa9087a2f9 --- /dev/null +++ b/net-misc/sslwrap/files/s_socket.c @@ -0,0 +1,684 @@ +/* apps/s_socket.c */ +/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <errno.h> +#include <signal.h> +#define USE_SOCKETS +#define NON_MAIN +#include "apps.h" +#undef USE_SOCKETS +#undef NON_MAIN +#include "s_apps.h" +#include OPENSSL"ssl.h" + +#ifndef NOPROTO +static struct hostent *GetHostByName(char *name); +int sock_init(void ); +#else +static struct hostent *GetHostByName(); +int sock_init(); +#endif + +#ifdef WIN16 +#define SOCKET_PROTOCOL 0 /* more microsoft stupidity */ +#else +#define SOCKET_PROTOCOL IPPROTO_TCP +#endif + +#ifdef WINDOWS +static struct WSAData wsa_state; +static int wsa_init_done=0; + +#ifdef WIN16 +static HWND topWnd=0; +static FARPROC lpTopWndProc=NULL; +static FARPROC lpTopHookProc=NULL; +extern HINSTANCE _hInstance; /* nice global CRT provides */ + +static LONG FAR PASCAL topHookProc(hwnd,message,wParam,lParam) +HWND hwnd; +UINT message; +WPARAM wParam; +LPARAM lParam; + { + if (hwnd == topWnd) + { + switch(message) + { + case WM_DESTROY: + case WM_CLOSE: + SetWindowLong(topWnd,GWL_WNDPROC,(LONG)lpTopWndProc); + sock_cleanup(); + break; + } + } + return CallWindowProc(lpTopWndProc,hwnd,message,wParam,lParam); + } + +static BOOL CALLBACK enumproc(HWND hwnd,LPARAM lParam) + { + topWnd=hwnd; + return(FALSE); + } + +#endif /* WIN32 */ +#endif /* WINDOWS */ + +void sock_cleanup() + { +#ifdef WINDOWS + if (wsa_init_done) + { + wsa_init_done=0; + WSACancelBlockingCall(); + WSACleanup(); + } +#endif + } + +int sock_init() + { +#ifdef WINDOWS + if (!wsa_init_done) + { + int err; + +#ifdef SIGINT + signal(SIGINT,(void (*)(int))sock_cleanup); +#endif + wsa_init_done=1; + memset(&wsa_state,0,sizeof(wsa_state)); + if (WSAStartup(0x0101,&wsa_state)!=0) + { + err=WSAGetLastError(); + BIO_printf(bio_err,"unable to start WINSOCK, error code=%d\n",err); + return(0); + } + +#ifdef WIN16 + EnumTaskWindows(GetCurrentTask(),enumproc,0L); + lpTopWndProc=(FARPROC)GetWindowLong(topWnd,GWL_WNDPROC); + lpTopHookProc=MakeProcInstance((FARPROC)topHookProc,_hInstance); + + SetWindowLong(topWnd,GWL_WNDPROC,(LONG)lpTopHookProc); +#endif /* WIN16 */ + } +#endif /* WINDOWS */ + return(1); + } + +int init_client(sock, host, port) +int *sock; +char *host; +int port; + { + unsigned char ip[4]; + short p=0; + + if (!host_ip(host,&(ip[0]))) + { + return(0); + } + if (p != 0) port=p; + return(init_client_ip(sock,ip,port)); + } + +int init_client_ip(sock, ip, port) +int *sock; +unsigned char ip[4]; +int port; + { + unsigned long addr; + struct sockaddr_in them; + int s,i; + + if (!sock_init()) return(0); + + memset((char *)&them,0,sizeof(them)); + them.sin_family=AF_INET; + them.sin_port=htons((unsigned short)port); + addr=(unsigned long) + ((unsigned long)ip[0]<<24L)| + ((unsigned long)ip[1]<<16L)| + ((unsigned long)ip[2]<< 8L)| + ((unsigned long)ip[3]); + them.sin_addr.s_addr=htonl(addr); + + s=socket(AF_INET,SOCK_STREAM,SOCKET_PROTOCOL); + if (s == INVALID_SOCKET) { perror("socket"); return(0); } + + i=0; + i=setsockopt(s,SOL_SOCKET,SO_KEEPALIVE,(char *)&i,sizeof(i)); + if (i < 0) { perror("keepalive"); return(0); } + + if (connect(s,(struct sockaddr *)&them,sizeof(them)) == -1) + { close(s); perror("connect"); return(0); } + *sock=s; + return(1); + } + +int nbio_sock_error(sock) +int sock; + { + int j,i,size; + + size=sizeof(int); + i=getsockopt(sock,SOL_SOCKET,SO_ERROR,(char *)&j,&size); + if (i < 0) + return(1); + else + return(j); + } + +int nbio_init_client_ip(sock, ip, port) +int *sock; +unsigned char ip[4]; +int port; + { + unsigned long addr; + struct sockaddr_in them; + int s,i; + + if (!sock_init()) return(0); + + memset((char *)&them,0,sizeof(them)); + them.sin_family=AF_INET; + them.sin_port=htons((unsigned short)port); + addr= (unsigned long) + ((unsigned long)ip[0]<<24L)| + ((unsigned long)ip[1]<<16L)| + ((unsigned long)ip[2]<< 8L)| + ((unsigned long)ip[3]); + them.sin_addr.s_addr=htonl(addr); + + if (*sock <= 0) + { + unsigned long l=1; + + s=socket(AF_INET,SOCK_STREAM,SOCKET_PROTOCOL); + if (s == INVALID_SOCKET) { perror("socket"); return(0); } + + i=0; + i=setsockopt(s,SOL_SOCKET,SO_KEEPALIVE,(char *)&i,sizeof(i)); + if (i < 0) { perror("keepalive"); return(0); } + *sock=s; + +#ifdef FIONBIO + socket_ioctl(s,FIONBIO,&l); +#endif + } + else + s= *sock; + + i=connect(s,(struct sockaddr *)&them,sizeof(them)); + if (i == INVALID_SOCKET) + { + if (BIO_sock_should_retry(i)) + return(-1); + else + return(0); + } + else + return(1); + } + +int do_server(port, ret, cb) +int port; +int *ret; +int (*cb)(); + { + int sock; + char *name; + int accept_socket; + int i; + + if (!init_server(&accept_socket,port)) return(0); + + if (ret != NULL) + { + *ret=accept_socket; + /* return(1);*/ + } + for (;;) + { + if (do_accept(accept_socket,&sock,&name) == 0) + { + SHUTDOWN(accept_socket); + return(0); + } + i=(*cb)(name,sock, sock); + if (name != NULL) CRYPTO_free(name); + SHUTDOWN(sock); + if (i < 0) + { + SHUTDOWN(accept_socket); + return(i); + } + } + } + +int init_server(sock, port) +int *sock; +int port; + { + int ret=0; + struct sockaddr_in server; + int s= -1,i; + + if (!sock_init()) return(0); + + memset((char *)&server,0,sizeof(server)); + server.sin_family=AF_INET; + server.sin_port=htons((unsigned short)port); + server.sin_addr.s_addr=INADDR_ANY; + s=socket(AF_INET,SOCK_STREAM,SOCKET_PROTOCOL); + + if (s == INVALID_SOCKET) goto err; + if (bind(s,(struct sockaddr *)&server,sizeof(server)) == -1) + { +#ifndef WINDOWS + perror("bind"); +#endif + goto err; + } + if (listen(s,5) == -1) goto err; + i=0; + *sock=s; + ret=1; +err: + if ((ret == 0) && (s != -1)) + { + SHUTDOWN(s); + } + return(ret); + } + +int do_accept(acc_sock, sock, host) +int acc_sock; +int *sock; +char **host; + { + int ret,i; + struct hostent *h1,*h2; + static struct sockaddr_in from; + int len; +/* struct linger ling; */ + + if (!sock_init()) return(0); + +#ifndef WINDOWS +redoit: +#endif + + memset((char *)&from,0,sizeof(from)); + len=sizeof(from); + ret=accept(acc_sock,(struct sockaddr *)&from,&len); + if (ret == INVALID_SOCKET) + { +#ifdef WINDOWS + i=WSAGetLastError(); + BIO_printf(bio_err,"accept error %d\n",i); +#else + if (errno == EINTR) + { + /*check_timeout(); */ + goto redoit; + } + fprintf(stderr,"errno=%d ",errno); + perror("accept"); +#endif + return(0); + } + +/* + ling.l_onoff=1; + ling.l_linger=0; + i=setsockopt(ret,SOL_SOCKET,SO_LINGER,(char *)&ling,sizeof(ling)); + if (i < 0) { perror("linger"); return(0); } + i=0; + i=setsockopt(ret,SOL_SOCKET,SO_KEEPALIVE,(char *)&i,sizeof(i)); + if (i < 0) { perror("keepalive"); return(0); } +*/ + + if (host == NULL) goto end; + /* I should use WSAAsyncGetHostByName() under windows */ + h1=gethostbyaddr((char *)&from.sin_addr.s_addr, + sizeof(from.sin_addr.s_addr),AF_INET); + if (h1 == NULL) + { + BIO_printf(bio_err,"bad gethostbyaddr\n"); + *host=NULL; + /* return(0); */ + } + else + { + if ((*host=(char *)CRYPTO_malloc(strlen(h1->h_name)+1,__FILE__,__LINE__)) == NULL) + { + perror("Malloc"); + return(0); + } + strcpy(*host,h1->h_name); + + h2=GetHostByName(*host); + if (h2 == NULL) + { + BIO_printf(bio_err,"gethostbyname failure\n"); + return(0); + } + i=0; + if (h2->h_addrtype != AF_INET) + { + BIO_printf(bio_err,"gethostbyname addr is not AF_INET\n"); + return(0); + } + } +end: + *sock=ret; + return(1); + } + +int socket_ioctl(fd,type,arg) +int fd; +long type; +unsigned long *arg; + { + int i,err; +#ifdef WINDOWS + i=ioctlsocket(fd,type,arg); +#else + i=ioctl(fd,type,arg); +#endif + if (i < 0) + { +#ifdef WINDOWS + err=WSAGetLastError(); +#else + err=errno; +#endif + BIO_printf(bio_err,"ioctl on socket failed:error %d\n",err); + } + return(i); + } + +int sock_err() + { +#ifdef WINDOWS + return(WSAGetLastError()); +#else + return(errno); +#endif + } + +int extract_host_port(str,host_ptr,ip,port_ptr) +char *str; +char **host_ptr; +unsigned char *ip; +short *port_ptr; + { + char *h,*p; + + h=str; + p=strchr(str,':'); + if (p == NULL) + { + BIO_printf(bio_err,"no port defined\n"); + return(0); + } + *(p++)='\0'; + + if ((ip != NULL) && !host_ip(str,ip)) + goto err; + if (host_ptr != NULL) *host_ptr=h; + + if (!extract_port(p,port_ptr)) + goto err; + return(1); +err: + return(0); + } + +int host_ip(str,ip) +char *str; +unsigned char ip[4]; + { + unsigned int in[4]; + int i; + + if (sscanf(str,"%d.%d.%d.%d",&(in[0]),&(in[1]),&(in[2]),&(in[3])) == 4) + { + for (i=0; i<4; i++) + if (in[i] > 255) + { + BIO_printf(bio_err,"invalid IP address\n"); + goto err; + } + ip[0]=in[0]; + ip[1]=in[1]; + ip[2]=in[2]; + ip[3]=in[3]; + } + else + { /* do a gethostbyname */ + struct hostent *he; + + if (!sock_init()) return(0); + + he=GetHostByName(str); + if (he == NULL) + { + BIO_printf(bio_err,"gethostbyname failure\n"); + goto err; + } + /* cast to short because of win16 winsock definition */ + if ((short)he->h_addrtype != AF_INET) + { + BIO_printf(bio_err,"gethostbyname addr is not AF_INET\n"); + return(0); + } + ip[0]=he->h_addr_list[0][0]; + ip[1]=he->h_addr_list[0][1]; + ip[2]=he->h_addr_list[0][2]; + ip[3]=he->h_addr_list[0][3]; + } + return(1); +err: + return(0); + } + +int extract_port(str,port_ptr) +char *str; +short *port_ptr; + { + int i; + struct servent *s; + + i=atoi(str); + if (i != 0) + *port_ptr=(unsigned short)i; + else + { + s=getservbyname(str,"tcp"); + if (s == NULL) + { + BIO_printf(bio_err,"getservbyname failure for %s\n",str); + return(0); + } + *port_ptr=ntohs((unsigned short)s->s_port); + } + return(1); + } + +#define GHBN_NUM 4 +static struct ghbn_cache_st + { + char name[128]; + struct hostent ent; + unsigned long order; + } ghbn_cache[GHBN_NUM]; + +static unsigned long ghbn_hits=0L; +static unsigned long ghbn_miss=0L; + +static struct hostent *GetHostByName(name) +char *name; + { + struct hostent *ret; + int i,lowi=0; + unsigned long low= (unsigned long)-1; + + for (i=0; i<GHBN_NUM; i++) + { + if (low > ghbn_cache[i].order) + { + low=ghbn_cache[i].order; + lowi=i; + } + if (ghbn_cache[i].order > 0) + { + if (strncmp(name,ghbn_cache[i].name,128) == 0) + break; + } + } + if (i == GHBN_NUM) /* no hit*/ + { + ghbn_miss++; + ret=gethostbyname(name); + if (ret == NULL) return(NULL); + /* else add to cache */ + strncpy(ghbn_cache[lowi].name,name,128); + memcpy((char *)&(ghbn_cache[lowi].ent),ret,sizeof(struct hostent)); + ghbn_cache[lowi].order=ghbn_miss+ghbn_hits; + return(ret); + } + else + { + ghbn_hits++; + ret= &(ghbn_cache[i].ent); + ghbn_cache[i].order=ghbn_miss+ghbn_hits; + return(ret); + } + } + +#ifndef MSDOS +int spawn(argc, argv, in, out) +int argc; +char **argv; +int *in; +int *out; + { + int pid; +#define CHILD_READ p1[0] +#define CHILD_WRITE p2[1] +#define PARENT_READ p2[0] +#define PARENT_WRITE p1[1] + int p1[2],p2[2]; + + if ((pipe(p1) < 0) || (pipe(p2) < 0)) return(-1); + + if ((pid=fork()) == 0) + { /* child */ + if (dup2(CHILD_WRITE,fileno(stdout)) < 0) + perror("dup2"); + if (dup2(CHILD_WRITE,fileno(stderr)) < 0) + perror("dup2"); + if (dup2(CHILD_READ,fileno(stdin)) < 0) + perror("dup2"); + close(CHILD_READ); + close(CHILD_WRITE); + + close(PARENT_READ); + close(PARENT_WRITE); + execvp(argv[0],argv); + perror("child"); + exit(1); + } + + /* parent */ + *in= PARENT_READ; + *out=PARENT_WRITE; + close(CHILD_READ); + close(CHILD_WRITE); + return(pid); + } +#endif /* MSDOS */ + + +#ifdef undef + /* Turn on synchronous sockets so that we can do a WaitForMultipleObjects + * on sockets */ + { + SOCKET s; + int optionValue = SO_SYNCHRONOUS_NONALERT; + int err; + + err = setsockopt( + INVALID_SOCKET, + SOL_SOCKET, + SO_OPENTYPE, + (char *)&optionValue, + sizeof(optionValue)); + if (err != NO_ERROR) { + /* failed for some reason... */ + BIO_printf(bio_err, "failed to setsockopt(SO_OPENTYPE, SO_SYNCHRONOUS_ALERT) - %d\n", + WSAGetLastError()); + } + } +#endif diff --git a/net-misc/sslwrap/sslwrap-2.0.5-r1.ebuild b/net-misc/sslwrap/sslwrap-2.0.5-r1.ebuild index 6816c31e861f..0a3959babbe6 100644 --- a/net-misc/sslwrap/sslwrap-2.0.5-r1.ebuild +++ b/net-misc/sslwrap/sslwrap-2.0.5-r1.ebuild @@ -1,7 +1,7 @@ # Copyright 1999-2000 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License, v2 or later # Author Achim Gottinger <achim@gentoo.org> -# $Header: /var/cvsroot/gentoo-x86/net-misc/sslwrap/sslwrap-2.0.5-r1.ebuild,v 1.3 2000/09/15 20:09:13 drobbins Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-misc/sslwrap/sslwrap-2.0.5-r1.ebuild,v 1.4 2000/10/05 18:22:52 achim Exp $ P=sslwrap-2.0.5 A=sslwrap.tar.gz @@ -14,7 +14,9 @@ src_unpack () { unpack ${A} cd ${S} cp Makefile Makefile.orig - sed -e "s/-O2/${CFLAGS}/" Makefile.orig > Makefile + sed -e "s/-O2/${CFLAGS}/" \ + -e "s:/usr/local/ssl/include:/usr/include/openssl:" Makefile.orig > Makefile + cp ${FILESDIR}/*.c ${S} } src_compile() { diff --git a/net-misc/whois/files/digest-whois-4.5.0-r1 b/net-misc/whois/files/digest-whois-4.5.0-r1 deleted file mode 100644 index 539eb5307e7e..000000000000 --- a/net-misc/whois/files/digest-whois-4.5.0-r1 +++ /dev/null @@ -1 +0,0 @@ -MD5 8308d14315d9f1202abb1c21e9b1abf2 whois_4.5.0.tar.gz diff --git a/net-misc/whois/files/digest-whois-4.5.1 b/net-misc/whois/files/digest-whois-4.5.1 new file mode 100644 index 000000000000..d88be4962e11 --- /dev/null +++ b/net-misc/whois/files/digest-whois-4.5.1 @@ -0,0 +1 @@ +MD5 c3dc5602ca39b13a0bc7cec92d83ba7c whois_4.5.1.tar.gz diff --git a/net-misc/whois/whois-4.5.0-r1.ebuild b/net-misc/whois/whois-4.5.1.ebuild index 550c34738cac..5d74afbf9bb2 100644 --- a/net-misc/whois/whois-4.5.0-r1.ebuild +++ b/net-misc/whois/whois-4.5.1.ebuild @@ -1,11 +1,10 @@ # Copyright 1999-2000 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License, v2 or later # Author Achim Gottinger <achim@gentoo.org> -# $Header: /var/cvsroot/gentoo-x86/net-misc/whois/whois-4.5.0-r1.ebuild,v 1.3 2000/09/15 20:09:14 drobbins Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-misc/whois/whois-4.5.1.ebuild,v 1.1 2000/10/05 18:22:52 achim Exp $ -P=whois-4.5.0 -A=whois_4.5.0.tar.gz -S=${WORKDIR}/whois-4.4.15 +A=whois_4.5.1.tar.gz +S=${WORKDIR}/${P} DESCRIPTION="Whois Client" SRC_URI="http://www.linux.it/~md/software/${A}" @@ -16,7 +15,7 @@ src_unpack() { sed -e "s/-O2/$CFLAGS/" Makefile.orig > Makefile cd po cp Makefile Makefile.orig - sed -e "s:/usr/bin/install:install:" Makefile.orig > Makefile + sed -e "s:/usr/bin/install:/bin/install:" Makefile.orig > Makefile } src_compile() { |