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 2012-03-31 19:46:26.881862392 +0300
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], [], [SSL support])
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~ 2012-03-31 15:38:27.000000000 +0300
346 +++ src/mod/module.h 2012-03-31 15:44:10.254563119 +0300
349 #define quiet_reject (*(int *)(global[284]))
350 #define file_readable ((int (*) (char *))global[285])
352 +#define net_switch_to_ssl ((int (*)(int))global[286])
353 +#define ssl_use (*(int *)global[287]) /* kyotou */
355 /* IPv6 leftovers: 286 */
356 /* IPv6 leftovers: 287 */
359 /* IPv6 leftovers: 288 */
360 #define strip_mirc_codes ((void (*)(int, char *))global[289])
361 --- src/mod/server.mod/servmsg.c 2004-03-27 06:50:00.000000000 +0000
362 +++ src/mod/server.mod/servmsg.c 2004-03-27 06:50:00.000000000 +0000
363 @@ -1360,6 +1360,14 @@
364 fatal("NO SERVERS WILL ACCEPT MY CONNECTION.", 0);
366 dcc[servidx].sock = serv;
369 + if (net_switch_to_ssl(serv)==0) {
370 + putlog(LOG_SERV, "*", "SSL %s %s (Error while switching to SSL)", IRC_FAILEDCONNECT, dcc[servidx].host);
375 /* Queue standard login */
376 dcc[servidx].timeval = now;
377 SERVER_SOCKET.timeout_val = &server_timeout;
378 --- src/modules.c 2004-03-27 06:50:00.000000000 +0000
379 +++ src/modules.c 2004-03-27 06:50:00.000000000 +0000
388 +#include "openssl/md5.h"
399 password_timeout, force_expire, protect_readonly, reserved_port_min,
400 reserved_port_max, copy_to_tmp, quiet_reject;
406 extern party_t *party;
407 extern time_t now, online_since;
408 extern tand_t *tandbot;
414 +int net_switch_to_ssl(int);
418 /* The null functions */
422 (Function) & quiet_reject, /* int */
423 (Function) file_readable,
425 + (Function) net_switch_to_ssl, /* 286 */
426 + (Function) &ssl_use, /* 287 kyotou */
428 (Function) 0, /* IPv6 leftovers: 286 */
429 (Function) 0, /* IPv6 leftovers: 287 */
432 (Function) 0, /* IPv6 leftovers: 288 */
433 (Function) strip_mirc_codes,
434 --- src/net.c 2004-03-27 06:50:00.000000000 +0000
435 +++ src/net.c 2004-03-27 06:50:00.000000000 +0000
441 +# ifndef EGG_SSL_INCS
442 +# include <openssl/ssl.h>
443 +# include <openssl/err.h>
444 +# include <openssl/rand.h>
445 +# define EGG_SSL_INCS 1
452 extern struct dcc_t *dcc;
453 extern int backgrd, use_stderr, resolve_timeout, dcc_total;
454 extern unsigned long otraffic_irc_today, otraffic_bn_today, otraffic_dcc_today,
456 int firewallport = 1080; /* Default port of socks 4/5 firewalls. */
457 char botuser[21] = "eggdrop"; /* Username of the user running the bot. */
458 int dcc_sanitycheck = 0; /* Do some sanity checking on dcc connections. */
461 +SSL_CTX *ssl_ctx=NULL;
462 +char *tls_rand_file = NULL;
465 sock_list *socklist = NULL; /* Enough to be safe. */
466 sigjmp_buf alarmret; /* Env buffer for alarm() returns. */
475 + char stackdata[1024];
476 + static char rand_file[300];
479 +#if OPENSSL_VERSION_NUMBER >= 0x00905100
481 + return 0; /* PRNG already good seeded */
483 + /* if the device '/dev/urandom' is present, OpenSSL uses it by default.
484 + * check if it's present, else we have to make random data ourselfs.
486 + if ((fh = fopen("/dev/urandom", "r"))) {
490 + if (RAND_file_name(rand_file, sizeof(rand_file)))
491 + tls_rand_file = rand_file;
494 + if (!RAND_load_file(rand_file, 1024)) {
495 + /* no .rnd file found, create new seed */
498 + RAND_seed(&c, sizeof(c));
500 + RAND_seed(&c, sizeof(c));
501 + RAND_seed(stackdata, sizeof(stackdata));
503 +#if OPENSSL_VERSION_NUMBER >= 0x00905100
504 + if (!RAND_status())
505 + return 2; /* PRNG still badly seeded */
513 + struct threaddata *td = threaddata();
515 + for (i = 0; i < td->MAXSOCKS; i++) {
516 + td->socklist[i].ssl = NULL;
519 + SSL_load_error_strings();
520 + OpenSSL_add_ssl_algorithms();
521 + ssl_ctx=SSL_CTX_new(SSLv23_client_method());
523 + fatal("SSL_CTX_new() failed",0);
525 + fatal("Wasn't able to properly seed the PRNG!",0);
530 + SSL_CTX_free(ssl_ctx);
534 + RAND_write_file(tls_rand_file);
543 td->socklist[i].handler.sock.outbuflen = 0;
544 td->socklist[i].flags = options;
545 td->socklist[i].sock = sock;
546 + td->socklist[i].ssl = NULL;
552 for (i = 0; i < td->MAXSOCKS; i++) {
553 if ((td->socklist[i].sock == sock) && !(td->socklist[i].flags & SOCK_UNUSED)) {
555 + if (td->socklist[i].ssl) {
556 + SSL_shutdown(td->socklist[i].ssl);
557 + SSL_free(td->socklist[i].ssl);
558 + td->socklist[i].ssl = NULL;
561 if (!(td->socklist[i].flags & SOCK_TCL)) { /* nothing to free for tclsocks */
562 close(td->socklist[i].sock);
563 if (td->socklist[i].handler.sock.inbuf != NULL) {
569 +int net_switch_to_ssl(int sock) {
572 +struct threaddata *td = threaddata();
574 + debug0("net_switch_to_ssl()");
575 + while (i < td->MAXSOCKS) {
576 + if (td->socklist[i].sock==sock) {
581 + if (i == td->MAXSOCKS) {
582 + debug0("Error while swithing to SSL - sock not found in list");
586 + if (td->socklist[i].ssl) {
587 + debug0("Error while swithing to SSL - already in ssl");
590 + td->socklist[i].ssl = SSL_new(ssl_ctx);
591 + if (!td->socklist[i].ssl) {
592 + debug0("Error while swithing to SSL - SSL_new() error");
596 + SSL_set_fd(td->socklist[i].ssl, td->socklist[i].sock);
597 + err = SSL_connect(td->socklist[i].ssl);
601 + errs=SSL_get_error(td->socklist[i].ssl,err);
602 + if ((errs!=SSL_ERROR_WANT_READ)&&(errs!=SSL_ERROR_WANT_WRITE)&&
603 + (errs!=SSL_ERROR_WANT_X509_LOOKUP)) {
604 + putlog(LOG_DEBUG,"*", "SSL_connect() = %d, %s", err,
605 + (char *)ERR_error_string(ERR_get_error(), NULL));
606 + SSL_shutdown(td->socklist[i].ssl);
607 + SSL_free(td->socklist[i].ssl);
608 + td->socklist[i].ssl = NULL;
612 + err = SSL_connect(td->socklist[i].ssl);
616 + debug0("SSL_connect() success");
619 + debug0("Error while SSL_connect()");
620 + SSL_shutdown(td->socklist[i].ssl);
621 + SSL_free(td->socklist[i].ssl);
622 + td->socklist[i].ssl = NULL;
627 /* Ordinary non-binary connection attempt */
628 int open_telnet(char *server, int port)
631 for (i = 0; i < slistmax; i++) {
632 if (!tclonly && ((!(slist[i].flags & (SOCK_UNUSED | SOCK_TCL))) &&
633 ((FD_ISSET(slist[i].sock, &fdr)) ||
635 + ((slist[i].ssl)&&(SSL_pending(slist[i].ssl))) ||
637 ((slist[i].sock == STDOUT) && (!backgrd) &&
638 (FD_ISSET(STDIN, &fdr)))))) {
639 if (slist[i].flags & (SOCK_LISTEN | SOCK_CONNECT)) {
641 if ((slist[i].sock == STDOUT) && !backgrd)
642 x = read(STDIN, s, grab);
644 - x = read(slist[i].sock, s, grab);
647 + if (slist[i].ssl) {
648 + x = SSL_read(slist[i].ssl, s, grab);
651 + int err = SSL_get_error(slist[i].ssl, x);
655 + case SSL_ERROR_WANT_READ:
658 + case SSL_ERROR_WANT_WRITE:
661 + case SSL_ERROR_WANT_X509_LOOKUP:
667 + x = read(slist[i].sock, s, grab);
670 + x = read(slist[i].sock, s, grab);
672 if (x <= 0) { /* eof */
673 if (errno != EAGAIN) { /* EAGAIN happens when the operation would
674 * block on a non-blocking socket, if the
675 @@ -1046,6 +1225,26 @@
676 socklist[i].handler.sock.outbuflen += len;
680 + if (socklist[i].ssl) {
681 + x=SSL_write(socklist[i].ssl,s,len);
683 + int err = SSL_get_error(socklist[i].ssl, x);
686 + case SSL_ERROR_WANT_READ:
689 + case SSL_ERROR_WANT_WRITE:
692 + case SSL_ERROR_WANT_X509_LOOKUP:
700 x = write(z, s, len);
702 @@ -1113,6 +1312,29 @@
703 (socklist[i].handler.sock.outbuf != NULL) && (FD_ISSET(socklist[i].sock, &wfds))) {
704 /* Trick tputs into doing the work */
707 + if (socklist[i].ssl) {
708 + x = write(socklist[i].sock, socklist[i].handler.sock.outbuf,
709 + socklist[i].handler.sock.outbuflen);
712 + int err = SSL_get_error(socklist[i].ssl, x);
716 + case SSL_ERROR_WANT_READ:
719 + case SSL_ERROR_WANT_WRITE:
722 + case SSL_ERROR_WANT_X509_LOOKUP:
729 x = write(socklist[i].sock, socklist[i].handler.sock.outbuf, socklist[i].handler.sock.outbuflen);
730 if ((x < 0) && (errno != EAGAIN)
732 --- src/net.h 1970-01-01 01:00:00.000000000 +0100
733 +++ src/net.h 2004-03-27 06:50:00.000000000 +0000
738 +# ifndef EGG_SSL_INCS
739 +# include <openssl/ssl.h>
740 +# include <openssl/err.h>
741 +# include <openssl/rand.h>
742 +# define EGG_SSL_INCS 1
746 +/* This is used by the net module to keep track of sockets and what's
749 +typedef struct sock_list {
756 + struct sock_handler sock;
757 + struct tclsock_handler tclsock;
760 +#endif /* _EGG_NET_H */
761 --- src/patch.h 2004-03-27 06:50:00.000000000 +0000
762 +++ src/patch.h 2004-03-27 06:50:00.000000000 +0000
767 -/* PATCH GOES HERE */
774 --- src/proto.h 2004-03-27 06:50:00.000000000 +0000
775 +++ src/proto.h 2004-03-27 06:50:00.000000000 +0000
779 #include "misc_file.h"
782 #define dprintf dprintf_eggdrop
784 --- src/tcl.c 2004-03-27 06:50:00.000000000 +0000
785 +++ src/tcl.c 2004-03-27 06:50:00.000000000 +0000
789 extern time_t online_since;
794 extern char origbotname[], botuser[], motdfile[], admin[], userfile[],
795 firewall[], helpdir[], notify_new[], hostname[], myip[], moddir[],
797 {"enable-simul", &enable_simul, 0}, /* compat */
798 {"debug-output", &debug_output, 0}, /* compat */
799 {"use-console-r", &use_console_r, 0}, /* compat */
801 + {"use-ssl", &ssl_use, 0},
806 --- src/tclhash.h 2004-03-27 06:50:00.000000000 +0000
807 +++ src/tclhash.h 2004-03-27 06:50:00.000000000 +0000
809 #ifndef _EGG_TCLHASH_H
810 #define _EGG_TCLHASH_H
814 #define TC_DELETED 0x0001 /* This command/trigger was deleted. */
816 --- src/tclmisc.c 2004-03-27 06:50:00.000000000 +0000
817 +++ src/tclmisc.c 2004-03-27 06:50:00.000000000 +0000
826 +#include "openssl/md5.h"
829 #ifdef TIME_WITH_SYS_TIME
830 # include <sys/time.h>