1 --- Makefile.in 2004-03-27 06:50:00.000000000 +0000
2 +++ Makefile.in 2004-03-27 06:50:00.000000000 +0000
4 INSTALL_DATA = @INSTALL_DATA@
5 INSTALL_SCRIPT = @INSTALL_SCRIPT@
8 +XSSL_LIBS = @SSL_LIBS@
9 +XSSL_INCLUDE = @SSL_INCLUDE@
15 MAKE_MODEGG = $(MAKE) 'MAKE=$(MAKE)' 'CC=$(MOD_CC)' 'LD=$(MOD_LD)' \
16 'STRIP=$(MOD_STRIP)' 'RANLIB=$(RANLIB)' 'CFLGS=$(CFLGS)' \
17 'TCLLIB=$(TCLLIB)' 'TCLLIBFN=$(TCLLIBFN)' 'XREQS=$(XREQS)' \
18 -'XLIBS=$(XLIBS)' 'EGGEXEC=$(EGGEXEC)' 'EGGBUILD=(standard build)' 'MODOBJS='
19 +'XSSL_LIBS=$(XSSL_LIBS)' 'XLIBS=$(XLIBS)' 'EGGEXEC=$(EGGEXEC)' \
20 +'XSSL_INCLUDE=$(XSSL_INCLUDE)' 'EGGBUILD=' 'MODOBJS='
22 MAKE_MODULES = $(MAKE) 'MAKE=$(MAKE)' 'CC=$(SHLIB_CC)' 'LD=$(SHLIB_LD)' \
23 'STRIP=$(SHLIB_STRIP)' 'CFLGS=$(CFLGS)' 'XLIBS=$(XLIBS)' \
25 'STRIP=$(STRIP)' 'RANLIB=$(RANLIB)' 'CFLGS=$(CFLGS) -DSTATIC' \
26 'TCLLIB=$(TCLLIB)' 'TCLLIBFN=$(TCLLIBFN)' 'XREQS=$(XREQS)' \
27 'XLIBS=$(XLIBS)' 'EGGEXEC=$(EGGEXEC)' 'EGGBUILD=(static version)' \
29 +'XSSL_INCLUDE=$(XSSL_INCLUDE)' 'XSSL_LIBS=$(XSSL_LIBS)' 'MODOBJS=mod/*.o'
31 MAKE_DEBEGG = $(MAKE) 'MAKE=$(MAKE)' 'CC=$(MOD_CC)' 'LD=$(MOD_LD)' \
32 'STRIP=touch' 'RANLIB=$(RANLIB)' 'CFLGS=$(DEBCFLGS) $(CFLGS)' \
33 'TCLLIB=$(TCLLIB)' 'TCLLIBFN=$(TCLLIBFN)' 'XREQS=$(XREQS)' \
34 -'XLIBS=$(XLIBS)' 'EGGEXEC=$(EGGEXEC)' 'EGGBUILD=(debug version)' 'MODOBJS='
35 +'XSSL_LIBS=$(XSSL_LIBS)' 'XLIBS=$(XLIBS)' 'EGGEXEC=$(EGGEXEC)' \
36 +'XSSL_INCLUDE=$(XSSL_INCLUDE)' 'EGGBUILD=(debug version)' 'MODOBJS='
38 MAKE_DEBMODULES = $(MAKE) 'MAKE=$(MAKE)' 'CC=$(SHLIB_CC)' 'LD=$(SHLIB_LD)' \
39 'XLIBS=$(XLIBS)' 'STRIP=touch' 'CFLGS=$(DEBCFLGS) $(CFLGS)' \
41 MAKE_SDEBUG = $(MAKE) 'MAKE=$(MAKE)' 'CC=$(CC)' 'LD=$(LD)' \
42 'STRIP=touch' 'RANLIB=$(RANLIB)' 'CFLGS=$(DEBCFLGS) $(CFLGS) -DSTATIC' \
43 'TCLLIB=$(TCLLIB)' 'TCLLIBFN=$(TCLLIBFN)' 'XREQS=$(XREQS)' 'XLIBS=$(XLIBS)' \
44 -'EGGEXEC=$(EGGEXEC)' 'EGGBUILD=(static debug version)' 'MODOBJS=mod/*.o'
45 +'XSSL_INCLUDE=$(XSSL_INCLUDE)' 'XSSL_LIBS=$(XSSL_LIBS)' 'EGGEXEC=$(EGGEXEC)' \
46 +'EGGBUILD=(static and debug version)' 'MODOBJS=mod/*.o'
48 MAKE_DEPEND = $(MAKE) 'MAKE=$(MAKE)' 'CC=$(CC)'
50 --- aclocal.m4 2004-03-27 06:50:00.000000000 +0000
51 +++ aclocal.m4 2004-03-27 06:50:00.000000000 +0000
58 +AC_DEFUN(EGG_SSL_CRAP, [dnl
60 +AC_MSG_CHECKING(whether to include SSL support)
62 +[ --with-ssl[=PATH] Include SSL support (DIR is OpenSSL's install dir).],
66 + AC_MSG_RESULT(no) ;;
69 + AC_CHECK_LIB(ssl,SSL_accept,[AC_DEFINE(EGG_SSL_EXT)
70 + SSL_LIBS="-lssl -lcrypto"],[AC_MSG_ERROR([You requested SSL support, but OpenSSL was not found. Please supply a pathname to OpenSSL])],-lcrypto)
73 +dnl A whole whack of possible places where this might be
74 + test -f $withval/openssl/ssl.h && SSL_INCLUDE="$withval"
75 + test -f $withval/include/openssl/ssl.h && SSL_INCLUDE="$withval/include"
77 + test -f $withval/lib/libssl.a && SSL_LIB="$withval/lib"
78 + test -f $withval/lib/ssl/libssl.a && SSL_LIB="$withval/lib/ssl"
79 + test -f $withval/lib/openssl/libssl.a && SSL_LIB="$withval/lib/openssl/ssl"
80 + test -f $withval/libssl.a && SSL_LIB="$withval"
81 + test -f $withval/ssl/libssl.a && SSL_LIB="$withval/ssl"
82 + test -f $withval/openssl/libssl.a && SSL_LIB="$withval/openssl"
84 + test -f $withval/lib/libcrypto.a && CRYPTO_LIB="$withval/lib"
85 + test -f $withval/lib/ssl/libcrypto.a && CRYPTO_LIB="$withval/lib/ssl"
86 + test -f $withval/lib/openssl/libcrypto.a && CRYPTO_LIB="$withval/lib/openssl/ssl"
87 + test -f $withval/libcrypto.a && CRYPTO_LIB="$withval"
88 + test -f $withval/ssl/libcrypto.a && CRYPTO_LIB="$withval/ssl"
89 + test -f $withval/openssl/libcrypto.a && CRYPTO_LIB="$withval/openssl"
91 + if test -n "$SSL_INCLUDE" && test -n "$SSL_LIB" && test -n "$CRYPTO_LIB"; then
92 + SSL_LIBS="-lssl -lcrypto -L$SSL_LIB -L$CRYPTO_LIB";
93 + AC_DEFINE(EGG_SSL_EXT)
97 + AC_MSG_ERROR([You requested SSL support, but OpenSSL was not found. Please supply a pathname to OpenSSL])
101 + AC_MSG_RESULT(will try to find)
102 + AC_CHECK_LIB(ssl,SSL_accept,[AC_DEFINE(EGG_SSL_EXT)
103 + SSL_LIBS="-lssl -lcrypto"],[AC_MSG_ERROR([OpenSSL was not found. Please supply a pathname to OpenSSL])],-lcrypto)
104 + AC_CHECK_HEADERS("openssl/ssl.h",,[AC_MSG_ERROR([OpenSSL was not found. Please supply a pathname to OpenSSL])],)
106 + AC_SUBST(SSL_LIBS)dnl
107 + AC_SUBST(SSL_INCLUDE)dnl
114 dnl EGG_MSG_CONFIGURE_END()
116 AC_DEFUN([EGG_MSG_CONFIGURE_END],
117 --- config.h.in 2004-03-27 06:50:00.000000000 +0000
118 +++ config.h.in 2004-03-27 06:50:00.000000000 +0000
121 #undef HAVE_DECL_TZNAME
123 +/* Defines ssl mode */
126 /* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
129 --- configure.ac 2004-03-27 06:50:00.000000000 +0000
130 +++ configure.ac 2004-03-27 06:50:00.000000000 +0000
132 /usr/local/pkgs/tcl/include /sys/include \
133 /usr/pkg/lib /beos/system/include /beos/devel/include $HOME"
137 # We save the cache (if used) here to speed things up if we can't find Tcl.
139 --- src/Makefile.in 2004-03-27 06:50:00.000000000 +0000
140 +++ src/Makefile.in 2004-03-27 06:50:00.000000000 +0000
142 INSTALL_PROGRAM = @INSTALL_PROGRAM@
143 INSTALL_DATA = @INSTALL_DATA@
144 INSTALL_SCRIPT = @INSTALL_SCRIPT@
145 +XSSL_LIBS = @SSL_LIBS@
146 +XSSL_INCLUDE = @SSL_INCLUDE@
151 @echo "Linking eggdrop $(EGGBUILD)."
154 - $(LD) -o ../$(EGGEXEC) $(eggdrop_objs) $(MODOBJS) $(XLIBS) md5/md5c.o compat/*.o `cat mod/mod.xlibs`
155 + $(LD) -o ../$(EGGEXEC) $(eggdrop_objs) $(MODOBJS) $(XLIBS) md5/md5c.o compat/*.o `cat mod/mod.xlibs` $(XSSL_LIBS) $(XSSL_INCLUDE)
156 $(STRIP) ../$(EGGEXEC)
158 @echo "Successful compile: $(EGGEXEC)"
159 --- src/dcc.c 2004-03-27 06:50:00.000000000 +0000
160 +++ src/dcc.c 2004-03-27 06:50:00.000000000 +0000
164 /* Includes for botnet md5 challenge/response code <cybah> */
168 +#include "openssl/md5.h"
171 extern struct userrec *userlist;
172 extern struct chanset_t *chanset;
173 --- src/dccutil.c 2004-03-27 06:50:00.000000000 +0000
174 +++ src/dccutil.c 2004-03-27 06:50:00.000000000 +0000
181 extern struct dcc_t *dcc;
182 extern int dcc_total, dcc_flood_thr, backgrd, copy_to_tmp, max_socks;
183 --- src/eggdrop.h 2004-03-27 06:50:00.000000000 +0000
184 +++ src/eggdrop.h 2004-03-27 06:50:00.000000000 +0000
189 -typedef struct sock_list {
193 - struct sock_handler sock;
194 - struct tclsock_handler tclsock;
199 EGG_OPTION_SET = 1, /* Set option(s). */
200 EGG_OPTION_UNSET = 2 /* Unset option(s). */
201 --- src/main.c 2004-03-27 06:50:00.000000000 +0000
202 +++ src/main.c 2004-03-27 06:50:00.000000000 +0000
212 void fatal(const char *s, int recoverable)
215 for (i = 0; i < dcc_total; i++)
216 if (dcc[i].sock >= 0)
217 killsock(dcc[i].sock);
223 bg_send_quit(BG_ABORT);
224 @@ -1029,6 +1036,9 @@
234 --- src/md5/md5.h 2004-03-27 06:50:00.000000000 +0000
235 +++ src/md5/md5.h 2004-03-27 06:50:00.000000000 +0000
237 * Written by Solar Designer <solar@openwall.com> in 2001, and placed in
238 * the public domain. See md5c.c for more information.
240 +#include "../config.h"
247 extern void MD5_Final(unsigned char *result, MD5_CTX *ctx);
251 --- src/md5/md5c.c 2004-03-27 06:50:00.000000000 +0000
252 +++ src/md5/md5c.c 2004-03-27 06:50:00.000000000 +0000
260 +#include "openssl/md5.h"
263 #include "compat/compat.h"
265 +typedef unsigned long MD5_u32plus;
268 + MD5_u32plus lo, hi;
269 + MD5_u32plus a, b, c, d;
270 + unsigned char buffer[64];
271 + MD5_u32plus block[16];
275 * The basic MD5 functions.
277 --- src/mod/compress.mod/compress.c 2004-03-27 06:50:00.000000000 +0000
278 +++ src/mod/compress.mod/compress.c 2004-03-27 06:50:00.000000000 +0000
280 #include "src/mod/module.h"
281 #include "share.mod/share.h"
287 # include <sys/types.h>
288 --- src/mod/irc.mod/chan.c 2004-03-27 06:50:00.000000000 +0000
289 +++ src/mod/irc.mod/chan.c 2004-03-27 06:50:00.000000000 +0000
290 @@ -991,10 +991,10 @@
295 + set_keyegg(chan, p);
299 + set_keyegg(chan, p);
303 --- src/mod/irc.mod/irc.c 2004-03-27 06:50:00.000000000 +0000
304 +++ src/mod/irc.mod/irc.c 2004-03-27 06:50:00.000000000 +0000
309 -static void set_key(struct chanset_t *chan, char *k)
310 +static void set_keyegg(struct chanset_t *chan, char *k)
312 nfree(chan->channel.key);
314 --- src/mod/irc.mod/irc.h 2004-03-27 06:50:00.000000000 +0000
315 +++ src/mod/irc.mod/irc.h 2004-03-27 06:50:00.000000000 +0000
318 static void reset_chan_info(struct chanset_t *, int);
319 static void recheck_channel(struct chanset_t *, int);
320 -static void set_key(struct chanset_t *, char *);
321 +static void set_keyegg(struct chanset_t *, char *);
322 static void maybe_revenge(struct chanset_t *, char *, char *, int);
323 static int detect_chan_flood(char *, char *, char *, struct chanset_t *, int,
325 --- src/mod/irc.mod/mode.c 2004-03-27 06:50:00.000000000 +0000
326 +++ src/mod/irc.mod/mode.c 2004-03-27 06:50:00.000000000 +0000
327 @@ -1209,7 +1209,7 @@
328 if (!(chan = modebind_refresh(ch, from, &user, NULL, NULL)))
332 + set_keyegg(chan, op);
333 if (channel_active(chan))
334 got_key(chan, nick, from, op);
336 @@ -1220,7 +1220,7 @@
337 !chan_master(user) && !match_my_nick(nick))
338 add_mode(chan, '+', 'k', chan->key_prot);
340 - set_key(chan, NULL);
341 + set_keyegg(chan, NULL);
345 --- src/mod/module.h 2004-03-27 06:50:00.000000000 +0000
346 +++ src/mod/module.h 2004-03-27 06:50:00.000000000 +0000
348 /* IPv6 leftovers: 286 */
349 /* IPv6 leftovers: 287 */
352 +#define net_switch_to_ssl ((int (*)(int))global[289])
353 +#define ssl_use (*(int *)global[290])
354 +#define strip_mirc_codes ((void (*)(int, char *))global[291])
355 +#define check_ansi ((int (*) (char *))global[292])
356 +#define oatoi ((int (*) (const char *))global[293])
358 +#define str_isdigit ((int (*) (const char *))global[294])
359 +#define remove_crlf ((void (*)(char **))global[295])
361 /* IPv6 leftovers: 288 */
362 #define strip_mirc_codes ((void (*)(int, char *))global[289])
363 #define check_ansi ((int (*) (char *))global[290])
366 #define str_isdigit ((int (*) (const char *))global[292])
367 #define remove_crlf ((void (*) (char **))global[293])
369 #define addr_match ((int (*)(const char *, const char *, int, int))global[294])
370 #define mask_match ((int (*)(const char *, const char *))global[295])
372 --- src/mod/server.mod/servmsg.c 2004-03-27 06:50:00.000000000 +0000
373 +++ src/mod/server.mod/servmsg.c 2004-03-27 06:50:00.000000000 +0000
374 @@ -1360,6 +1360,14 @@
375 fatal("NO SERVERS WILL ACCEPT MY CONNECTION.", 0);
377 dcc[servidx].sock = serv;
380 + if (net_switch_to_ssl(serv)==0) {
381 + putlog(LOG_SERV, "*", "SSL %s %s (Error while switching to SSL)", IRC_FAILEDCONNECT, dcc[servidx].host);
386 /* Queue standard login */
387 dcc[servidx].timeval = now;
388 SERVER_SOCKET.timeout_val = &server_timeout;
389 --- src/modules.c 2004-03-27 06:50:00.000000000 +0000
390 +++ src/modules.c 2004-03-27 06:50:00.000000000 +0000
399 +#include "openssl/md5.h"
410 password_timeout, force_expire, protect_readonly, reserved_port_min,
411 reserved_port_max, copy_to_tmp, quiet_reject;
417 extern party_t *party;
418 extern time_t now, online_since;
419 extern tand_t *tandbot;
425 +int net_switch_to_ssl(int);
429 /* The null functions */
432 (Function) 0, /* IPv6 leftovers: 286 */
433 (Function) 0, /* IPv6 leftovers: 287 */
436 (Function) 0, /* IPv6 leftovers: 288 */
437 + (Function) net_switch_to_ssl,
438 + (Function) & ssl_use,
440 + (Function) 0, /* IPv6 leftovers: 288 */
442 (Function) strip_mirc_codes,
443 (Function) check_ansi,
445 --- src/net.c 2004-03-27 06:50:00.000000000 +0000
446 +++ src/net.c 2004-03-27 06:50:00.000000000 +0000
452 +# ifndef EGG_SSL_INCS
453 +# include <openssl/ssl.h>
454 +# include <openssl/err.h>
455 +# include <openssl/rand.h>
456 +# define EGG_SSL_INCS 1
463 extern struct dcc_t *dcc;
464 extern int backgrd, use_stderr, resolve_timeout, dcc_total;
465 extern unsigned long otraffic_irc_today, otraffic_bn_today, otraffic_dcc_today,
467 int firewallport = 1080; /* Default port of socks 4/5 firewalls. */
468 char botuser[21] = "eggdrop"; /* Username of the user running the bot. */
469 int dcc_sanitycheck = 0; /* Do some sanity checking on dcc connections. */
472 +SSL_CTX *ssl_ctx=NULL;
473 +char *tls_rand_file = NULL;
476 sock_list *socklist = NULL; /* Enough to be safe. */
477 sigjmp_buf alarmret; /* Env buffer for alarm() returns. */
486 + char stackdata[1024];
487 + static char rand_file[300];
490 +#if OPENSSL_VERSION_NUMBER >= 0x00905100
492 + return 0; /* PRNG already good seeded */
494 + /* if the device '/dev/urandom' is present, OpenSSL uses it by default.
495 + * check if it's present, else we have to make random data ourselfs.
497 + if ((fh = fopen("/dev/urandom", "r"))) {
501 + if (RAND_file_name(rand_file, sizeof(rand_file)))
502 + tls_rand_file = rand_file;
505 + if (!RAND_load_file(rand_file, 1024)) {
506 + /* no .rnd file found, create new seed */
509 + RAND_seed(&c, sizeof(c));
511 + RAND_seed(&c, sizeof(c));
512 + RAND_seed(stackdata, sizeof(stackdata));
514 +#if OPENSSL_VERSION_NUMBER >= 0x00905100
515 + if (!RAND_status())
516 + return 2; /* PRNG still badly seeded */
524 + struct threaddata *td = threaddata();
526 + for (i = 0; i < td->MAXSOCKS; i++) {
527 + td->socklist[i].ssl = NULL;
530 + SSL_load_error_strings();
531 + OpenSSL_add_ssl_algorithms();
532 + ssl_ctx=SSL_CTX_new(SSLv23_client_method());
534 + fatal("SSL_CTX_new() failed",0);
536 + fatal("Wasn't able to properly seed the PRNG!",0);
541 + SSL_CTX_free(ssl_ctx);
545 + RAND_write_file(tls_rand_file);
554 td->socklist[i].handler.sock.outbuflen = 0;
555 td->socklist[i].flags = options;
556 td->socklist[i].sock = sock;
557 + td->socklist[i].ssl = NULL;
563 for (i = 0; i < td->MAXSOCKS; i++) {
564 if ((td->socklist[i].sock == sock) && !(td->socklist[i].flags & SOCK_UNUSED)) {
566 + if (td->socklist[i].ssl) {
567 + SSL_shutdown(td->socklist[i].ssl);
568 + SSL_free(td->socklist[i].ssl);
569 + td->socklist[i].ssl = NULL;
572 if (!(td->socklist[i].flags & SOCK_TCL)) { /* nothing to free for tclsocks */
573 close(td->socklist[i].sock);
574 if (td->socklist[i].handler.sock.inbuf != NULL) {
580 +int net_switch_to_ssl(int sock) {
583 +struct threaddata *td = threaddata();
585 + debug0("net_switch_to_ssl()");
586 + while (i < td->MAXSOCKS) {
587 + if (td->socklist[i].sock==sock) {
592 + if (i == td->MAXSOCKS) {
593 + debug0("Error while swithing to SSL - sock not found in list");
597 + if (td->socklist[i].ssl) {
598 + debug0("Error while swithing to SSL - already in ssl");
601 + td->socklist[i].ssl = SSL_new(ssl_ctx);
602 + if (!td->socklist[i].ssl) {
603 + debug0("Error while swithing to SSL - SSL_new() error");
607 + SSL_set_fd(td->socklist[i].ssl, td->socklist[i].sock);
608 + err = SSL_connect(td->socklist[i].ssl);
612 + errs=SSL_get_error(td->socklist[i].ssl,err);
613 + if ((errs!=SSL_ERROR_WANT_READ)&&(errs!=SSL_ERROR_WANT_WRITE)&&
614 + (errs!=SSL_ERROR_WANT_X509_LOOKUP)) {
615 + putlog(LOG_DEBUG,"*", "SSL_connect() = %d, %s", err,
616 + (char *)ERR_error_string(ERR_get_error(), NULL));
617 + SSL_shutdown(td->socklist[i].ssl);
618 + SSL_free(td->socklist[i].ssl);
619 + td->socklist[i].ssl = NULL;
623 + err = SSL_connect(td->socklist[i].ssl);
627 + debug0("SSL_connect() success");
630 + debug0("Error while SSL_connect()");
631 + SSL_shutdown(td->socklist[i].ssl);
632 + SSL_free(td->socklist[i].ssl);
633 + td->socklist[i].ssl = NULL;
638 /* Ordinary non-binary connection attempt */
639 int open_telnet(char *server, int port)
642 for (i = 0; i < slistmax; i++) {
643 if (!tclonly && ((!(slist[i].flags & (SOCK_UNUSED | SOCK_TCL))) &&
644 ((FD_ISSET(slist[i].sock, &fdr)) ||
646 + ((slist[i].ssl)&&(SSL_pending(slist[i].ssl))) ||
648 ((slist[i].sock == STDOUT) && (!backgrd) &&
649 (FD_ISSET(STDIN, &fdr)))))) {
650 if (slist[i].flags & (SOCK_LISTEN | SOCK_CONNECT)) {
652 if ((slist[i].sock == STDOUT) && !backgrd)
653 x = read(STDIN, s, grab);
655 - x = read(slist[i].sock, s, grab);
658 + if (slist[i].ssl) {
659 + x = SSL_read(slist[i].ssl, s, grab);
662 + int err = SSL_get_error(slist[i].ssl, x);
666 + case SSL_ERROR_WANT_READ:
669 + case SSL_ERROR_WANT_WRITE:
672 + case SSL_ERROR_WANT_X509_LOOKUP:
678 + x = read(slist[i].sock, s, grab);
681 + x = read(slist[i].sock, s, grab);
683 if (x <= 0) { /* eof */
684 if (errno != EAGAIN) { /* EAGAIN happens when the operation would
685 * block on a non-blocking socket, if the
686 @@ -1046,6 +1225,26 @@
687 socklist[i].handler.sock.outbuflen += len;
691 + if (socklist[i].ssl) {
692 + x=SSL_write(socklist[i].ssl,s,len);
694 + int err = SSL_get_error(socklist[i].ssl, x);
697 + case SSL_ERROR_WANT_READ:
700 + case SSL_ERROR_WANT_WRITE:
703 + case SSL_ERROR_WANT_X509_LOOKUP:
711 x = write(z, s, len);
713 @@ -1113,6 +1312,29 @@
714 (socklist[i].handler.sock.outbuf != NULL) && (FD_ISSET(socklist[i].sock, &wfds))) {
715 /* Trick tputs into doing the work */
718 + if (socklist[i].ssl) {
719 + x = write(socklist[i].sock, socklist[i].handler.sock.outbuf,
720 + socklist[i].handler.sock.outbuflen);
723 + int err = SSL_get_error(socklist[i].ssl, x);
727 + case SSL_ERROR_WANT_READ:
730 + case SSL_ERROR_WANT_WRITE:
733 + case SSL_ERROR_WANT_X509_LOOKUP:
740 x = write(socklist[i].sock, socklist[i].handler.sock.outbuf, socklist[i].handler.sock.outbuflen);
741 if ((x < 0) && (errno != EAGAIN)
743 --- src/net.h 1970-01-01 01:00:00.000000000 +0100
744 +++ src/net.h 2004-03-27 06:50:00.000000000 +0000
749 +# ifndef EGG_SSL_INCS
750 +# include <openssl/ssl.h>
751 +# include <openssl/err.h>
752 +# include <openssl/rand.h>
753 +# define EGG_SSL_INCS 1
757 +/* This is used by the net module to keep track of sockets and what's
760 +typedef struct sock_list {
767 + struct sock_handler sock;
768 + struct tclsock_handler tclsock;
771 +#endif /* _EGG_NET_H */
772 --- src/patch.h 2004-03-27 06:50:00.000000000 +0000
773 +++ src/patch.h 2004-03-27 06:50:00.000000000 +0000
778 -/* PATCH GOES HERE */
785 --- src/proto.h 2004-03-27 06:50:00.000000000 +0000
786 +++ src/proto.h 2004-03-27 06:50:00.000000000 +0000
790 #include "misc_file.h"
793 #define dprintf dprintf_eggdrop
795 --- src/tcl.c 2004-03-27 06:50:00.000000000 +0000
796 +++ src/tcl.c 2004-03-27 06:50:00.000000000 +0000
800 extern time_t online_since;
805 extern char origbotname[], botuser[], motdfile[], admin[], userfile[],
806 firewall[], helpdir[], notify_new[], hostname[], myip[], moddir[],
808 {"enable-simul", &enable_simul, 0}, /* compat */
809 {"debug-output", &debug_output, 0}, /* compat */
810 {"use-console-r", &use_console_r, 0}, /* compat */
812 + {"use-ssl", &ssl_use, 0},
817 --- src/tclhash.h 2004-03-27 06:50:00.000000000 +0000
818 +++ src/tclhash.h 2004-03-27 06:50:00.000000000 +0000
820 #ifndef _EGG_TCLHASH_H
821 #define _EGG_TCLHASH_H
825 #define TC_DELETED 0x0001 /* This command/trigger was deleted. */
827 --- src/tclmisc.c 2004-03-27 06:50:00.000000000 +0000
828 +++ src/tclmisc.c 2004-03-27 06:50:00.000000000 +0000
837 +#include "openssl/md5.h"
840 #ifdef TIME_WITH_SYS_TIME
841 # include <sys/time.h>