]> git.pld-linux.org Git - packages/eggdrop.git/blob - eggdrop-ssl.patch
- release 5
[packages/eggdrop.git] / eggdrop-ssl.patch
1 diff -burNp eggdrop1.6.19/aclocal.m4 eggdrop1.6.19.new/aclocal.m4
2 --- eggdrop1.6.19/aclocal.m4    2008-04-19 06:21:20.000000000 +0200
3 +++ eggdrop1.6.19.new/aclocal.m4        2008-09-22 14:03:38.304371902 +0200
4 @@ -36,6 +36,63 @@ AC_DEFUN([EGG_MSG_CONFIGURE_START],
5    AC_MSG_RESULT
6  ])
7  
8 +dnl  EGG_SSL_CRAP()
9 +dnl
10 +AC_DEFUN(EGG_SSL_CRAP, [dnl
11 +#ssl checks - hoe
12 +AC_MSG_CHECKING(whether to include SSL support)
13 +AC_ARG_WITH(ssl,
14 +[  --with-ssl[=PATH]         Include SSL support (DIR is OpenSSL's install dir).],
15 +[
16 +  case "$withval" in
17 +    no)
18 +      AC_MSG_RESULT(no) ;;
19 +    yes)
20 +      AC_MSG_RESULT(yes)
21 +      AC_CHECK_LIB(ssl,SSL_accept,[AC_DEFINE(EGG_SSL_EXT)
22 +      SSL_LIBS="-lssl -lcrypto"],[AC_MSG_ERROR([You requested SSL support, but OpenSSL was not found. Please supply a pathname to OpenSSL])],-lcrypto)
23 +      ;;
24 +    *)
25 +dnl A whole whack of possible places where this might be
26 +      test -f $withval/openssl/ssl.h && SSL_INCLUDE="$withval"
27 +      test -f $withval/include/openssl/ssl.h && SSL_INCLUDE="$withval/include"
28 +
29 +      test -f $withval/lib/libssl.a && SSL_LIB="$withval/lib"
30 +      test -f $withval/lib/ssl/libssl.a && SSL_LIB="$withval/lib/ssl"
31 +      test -f $withval/lib/openssl/libssl.a && SSL_LIB="$withval/lib/openssl/ssl"
32 +      test -f $withval/libssl.a && SSL_LIB="$withval"
33 +      test -f $withval/ssl/libssl.a && SSL_LIB="$withval/ssl"
34 +      test -f $withval/openssl/libssl.a && SSL_LIB="$withval/openssl"
35 +
36 +      test -f $withval/lib/libcrypto.a && CRYPTO_LIB="$withval/lib"
37 +      test -f $withval/lib/ssl/libcrypto.a && CRYPTO_LIB="$withval/lib/ssl"
38 +      test -f $withval/lib/openssl/libcrypto.a && CRYPTO_LIB="$withval/lib/openssl/ssl"
39 +      test -f $withval/libcrypto.a && CRYPTO_LIB="$withval"
40 +      test -f $withval/ssl/libcrypto.a && CRYPTO_LIB="$withval/ssl"
41 +      test -f $withval/openssl/libcrypto.a && CRYPTO_LIB="$withval/openssl"
42 +
43 +      if test -n "$SSL_INCLUDE" && test -n "$SSL_LIB" && test -n "$CRYPTO_LIB"; then
44 +        SSL_LIBS="-lssl -lcrypto -L$SSL_LIB -L$CRYPTO_LIB";
45 +        AC_DEFINE([EGG_SSL_EXT], [], [SSL support])
46 +        AC_MSG_RESULT(yes)
47 +      else
48 +        AC_MSG_RESULT(no)
49 +        AC_MSG_ERROR([You requested SSL support, but OpenSSL was not found. Please supply a pathname to OpenSSL])
50 +      fi ;;
51 +  esac
52 +],[
53 +    AC_MSG_RESULT(will try to find)
54 +    AC_CHECK_LIB(ssl,SSL_accept,[AC_DEFINE(EGG_SSL_EXT)
55 +     SSL_LIBS="-lssl -lcrypto"],[AC_MSG_ERROR([OpenSSL was not found. Please supply a pathname to OpenSSL])],-lcrypto)
56 +    AC_CHECK_HEADERS("openssl/ssl.h",,[AC_MSG_ERROR([OpenSSL was not found. Please supply a pathname to OpenSSL])],)
57 +
58 +    AC_SUBST(SSL_LIBS)dnl
59 +    AC_SUBST(SSL_INCLUDE)dnl
60 +])
61 +
62 +#end of ssl checks - hoe (.16 by poci)
63 +])dnl
64 +
65  
66  dnl EGG_MSG_CONFIGURE_END()
67  dnl
68 diff -burNp eggdrop1.6.19/config.h.in eggdrop1.6.19.new/config.h.in
69 --- eggdrop1.6.19/config.h.in   2006-11-20 12:38:25.000000000 +0100
70 +++ eggdrop1.6.19.new/config.h.in       2008-09-22 14:07:26.990831137 +0200
71 @@ -33,6 +33,9 @@
72  /* Define to 1 if you have the `clock' function. */
73  #undef HAVE_CLOCK
74  
75 +/* Defines ssl mode  */
76 +#undef EGG_SSL_EXT
77 +
78  /* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
79     */
80  #undef HAVE_DIRENT_H
81 diff -burNp eggdrop1.6.19/configure eggdrop1.6.19.new/configure
82 --- eggdrop1.6.19/configure     2008-04-19 06:21:20.000000000 +0200
83 +++ eggdrop1.6.19.new/configure 2008-09-22 14:22:28.610498567 +0200
84 @@ -856,6 +857,7 @@ Optional Packages:
85    --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
86    --with-tcllib=PATH      full path to Tcl library
87    --with-tclinc=PATH      full path to Tcl header
88 +  --with-ssl=PATH         Include SSL support (DIR is OpenSSL's install dir).
89  
90  Some influential environment variables:
91    CC          C compiler command
92 @@ -10113,8 +10115,372 @@ EOF
93  
94              ac_config_commands="$ac_config_commands replace-if-changed"
95  
96 +#ssl checks - hoe
97 +echo "$as_me:$LINENO: checking whether to include SSL support" >&5
98 +echo $ECHO_N "checking whether to include SSL support... $ECHO_C" >&6
99 +
100 +# Check whether --with-ssl or --without-ssl was given.
101 +if test "${with_ssl+set}" = set; then
102 +  withval="$with_ssl"
103 +
104 +  case "$withval" in
105 +    no)
106 +      echo "$as_me:$LINENO: result: no" >&5
107 +echo "${ECHO_T}no" >&6 ;;
108 +    yes)
109 +      echo "$as_me:$LINENO: result: yes" >&5
110 +echo "${ECHO_T}yes" >&6
111 +      echo "$as_me:$LINENO: checking for SSL_accept in -lssl" >&5
112 +echo $ECHO_N "checking for SSL_accept in -lssl... $ECHO_C" >&6
113 +if test "${ac_cv_lib_ssl_SSL_accept+set}" = set; then
114 +  echo $ECHO_N "(cached) $ECHO_C" >&6
115 +else
116 +  ac_check_lib_save_LIBS=$LIBS
117 +LIBS="-lssl -lcrypto $LIBS"
118 +cat >conftest.$ac_ext <<_ACEOF
119 +/* confdefs.h.  */
120 +_ACEOF
121 +cat confdefs.h >>conftest.$ac_ext
122 +cat >>conftest.$ac_ext <<_ACEOF
123 +/* end confdefs.h.  */
124 +
125 +/* Override any gcc2 internal prototype to avoid an error.  */
126 +#ifdef __cplusplus
127 +extern "C"
128 +#endif
129 +/* We use char because int might match the return type of a gcc2
130 +   builtin and then its argument prototype would still apply.  */
131 +char SSL_accept ();
132 +int
133 +main ()
134 +{
135 +SSL_accept ();
136 +  ;
137 +  return 0;
138 +}
139 +_ACEOF
140 +rm -f conftest.$ac_objext conftest$ac_exeext
141 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
142 +  (eval $ac_link) 2>conftest.er1
143 +  ac_status=$?
144 +  grep -v '^ *+' conftest.er1 >conftest.err
145 +  rm -f conftest.er1
146 +  cat conftest.err >&5
147 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
148 +  (exit $ac_status); } &&
149 +        { ac_try='test -z "$ac_c_werror_flag"
150 +                        || test ! -s conftest.err'
151 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
152 +  (eval $ac_try) 2>&5
153 +  ac_status=$?
154 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
155 +  (exit $ac_status); }; } &&
156 +        { ac_try='test -s conftest$ac_exeext'
157 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
158 +  (eval $ac_try) 2>&5
159 +  ac_status=$?
160 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
161 +  (exit $ac_status); }; }; then
162 +  ac_cv_lib_ssl_SSL_accept=yes
163 +else
164 +  echo "$as_me: failed program was:" >&5
165 +sed 's/^/| /' conftest.$ac_ext >&5
166 +
167 +ac_cv_lib_ssl_SSL_accept=no
168 +fi
169 +rm -f conftest.err conftest.$ac_objext \
170 +      conftest$ac_exeext conftest.$ac_ext
171 +LIBS=$ac_check_lib_save_LIBS
172 +fi
173 +echo "$as_me:$LINENO: result: $ac_cv_lib_ssl_SSL_accept" >&5
174 +echo "${ECHO_T}$ac_cv_lib_ssl_SSL_accept" >&6
175 +if test $ac_cv_lib_ssl_SSL_accept = yes; then
176 +  cat >>confdefs.h <<\_ACEOF
177 +#define EGG_SSL_EXT 1
178 +_ACEOF
179 +
180 +      SSL_LIBS="-lssl -lcrypto"
181 +else
182 +  { { echo "$as_me:$LINENO: error: You requested SSL support, but OpenSSL was not found. Please supply a pathname to OpenSSL" >&5
183 +echo "$as_me: error: You requested SSL support, but OpenSSL was not found. Please supply a pathname to OpenSSL" >&2;}
184 +   { (exit 1); exit 1; }; }
185 +fi
186 +
187 +      ;;
188 +    *)
189 +      test -f $withval/openssl/ssl.h && SSL_INCLUDE="$withval"
190 +      test -f $withval/include/openssl/ssl.h && SSL_INCLUDE="$withval/include"
191 +
192 +      test -f $withval/lib/libssl.a && SSL_LIB="$withval/lib"
193 +      test -f $withval/lib/ssl/libssl.a && SSL_LIB="$withval/lib/ssl"
194 +      test -f $withval/lib/openssl/libssl.a && SSL_LIB="$withval/lib/openssl/ssl"
195 +      test -f $withval/libssl.a && SSL_LIB="$withval"
196 +      test -f $withval/ssl/libssl.a && SSL_LIB="$withval/ssl"
197 +      test -f $withval/openssl/libssl.a && SSL_LIB="$withval/openssl"
198 +
199 +      test -f $withval/lib/libcrypto.a && CRYPTO_LIB="$withval/lib"
200 +      test -f $withval/lib/ssl/libcrypto.a && CRYPTO_LIB="$withval/lib/ssl"
201 +      test -f $withval/lib/openssl/libcrypto.a && CRYPTO_LIB="$withval/lib/openssl/ssl"
202 +      test -f $withval/libcrypto.a && CRYPTO_LIB="$withval"
203 +      test -f $withval/ssl/libcrypto.a && CRYPTO_LIB="$withval/ssl"
204 +      test -f $withval/openssl/libcrypto.a && CRYPTO_LIB="$withval/openssl"
205 +
206 +      if test -n "$SSL_INCLUDE" && test -n "$SSL_LIB" && test -n "$CRYPTO_LIB"; then
207 +        SSL_LIBS="-lssl -lcrypto -L$SSL_LIB -L$CRYPTO_LIB";
208 +        cat >>confdefs.h <<\_ACEOF
209 +#define EGG_SSL_EXT 1
210 +_ACEOF
211 +
212 +        echo "$as_me:$LINENO: result: yes" >&5
213 +echo "${ECHO_T}yes" >&6
214 +      else
215 +        echo "$as_me:$LINENO: result: no" >&5
216 +echo "${ECHO_T}no" >&6
217 +        { { echo "$as_me:$LINENO: error: You requested SSL support, but OpenSSL was not found. Please supply a pathname to OpenSSL" >&5
218 +echo "$as_me: error: You requested SSL support, but OpenSSL was not found. Please supply a pathname to OpenSSL" >&2;}
219 +   { (exit 1); exit 1; }; }
220 +      fi ;;
221 +  esac
222 +
223 +else
224 +
225 +    echo "$as_me:$LINENO: result: will try to find" >&5
226 +echo "${ECHO_T}will try to find" >&6
227 +    echo "$as_me:$LINENO: checking for SSL_accept in -lssl" >&5
228 +echo $ECHO_N "checking for SSL_accept in -lssl... $ECHO_C" >&6
229 +if test "${ac_cv_lib_ssl_SSL_accept+set}" = set; then
230 +  echo $ECHO_N "(cached) $ECHO_C" >&6
231 +else
232 +  ac_check_lib_save_LIBS=$LIBS
233 +LIBS="-lssl -lcrypto $LIBS"
234 +cat >conftest.$ac_ext <<_ACEOF
235 +/* confdefs.h.  */
236 +_ACEOF
237 +cat confdefs.h >>conftest.$ac_ext
238 +cat >>conftest.$ac_ext <<_ACEOF
239 +/* end confdefs.h.  */
240 +
241 +/* Override any gcc2 internal prototype to avoid an error.  */
242 +#ifdef __cplusplus
243 +extern "C"
244 +#endif
245 +/* We use char because int might match the return type of a gcc2
246 +   builtin and then its argument prototype would still apply.  */
247 +char SSL_accept ();
248 +int
249 +main ()
250 +{
251 +SSL_accept ();
252 +  ;
253 +  return 0;
254 +}
255 +_ACEOF
256 +rm -f conftest.$ac_objext conftest$ac_exeext
257 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
258 +  (eval $ac_link) 2>conftest.er1
259 +  ac_status=$?
260 +  grep -v '^ *+' conftest.er1 >conftest.err
261 +  rm -f conftest.er1
262 +  cat conftest.err >&5
263 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
264 +  (exit $ac_status); } &&
265 +        { ac_try='test -z "$ac_c_werror_flag"
266 +                        || test ! -s conftest.err'
267 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
268 +  (eval $ac_try) 2>&5
269 +  ac_status=$?
270 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
271 +  (exit $ac_status); }; } &&
272 +        { ac_try='test -s conftest$ac_exeext'
273 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
274 +  (eval $ac_try) 2>&5
275 +  ac_status=$?
276 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
277 +  (exit $ac_status); }; }; then
278 +  ac_cv_lib_ssl_SSL_accept=yes
279 +else
280 +  echo "$as_me: failed program was:" >&5
281 +sed 's/^/| /' conftest.$ac_ext >&5
282 +
283 +ac_cv_lib_ssl_SSL_accept=no
284 +fi
285 +rm -f conftest.err conftest.$ac_objext \
286 +      conftest$ac_exeext conftest.$ac_ext
287 +LIBS=$ac_check_lib_save_LIBS
288 +fi
289 +echo "$as_me:$LINENO: result: $ac_cv_lib_ssl_SSL_accept" >&5
290 +echo "${ECHO_T}$ac_cv_lib_ssl_SSL_accept" >&6
291 +if test $ac_cv_lib_ssl_SSL_accept = yes; then
292 +  cat >>confdefs.h <<\_ACEOF
293 +#define EGG_SSL_EXT 1
294 +_ACEOF
295 +
296 +     SSL_LIBS="-lssl -lcrypto"
297 +else
298 +  { { echo "$as_me:$LINENO: error: OpenSSL was not found. Please supply a pathname to OpenSSL" >&5
299 +echo "$as_me: error: OpenSSL was not found. Please supply a pathname to OpenSSL" >&2;}
300 +   { (exit 1); exit 1; }; }
301 +fi
302 +
303 +
304 +for ac_header in "openssl/ssl.h"
305 +do
306 +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
307 +if eval "test \"\${$as_ac_Header+set}\" = set"; then
308 +  echo "$as_me:$LINENO: checking for $ac_header" >&5
309 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
310 +if eval "test \"\${$as_ac_Header+set}\" = set"; then
311 +  echo $ECHO_N "(cached) $ECHO_C" >&6
312 +fi
313 +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
314 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
315 +else
316 +  # Is the header compilable?
317 +echo "$as_me:$LINENO: checking $ac_header usability" >&5
318 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
319 +cat >conftest.$ac_ext <<_ACEOF
320 +/* confdefs.h.  */
321 +_ACEOF
322 +cat confdefs.h >>conftest.$ac_ext
323 +cat >>conftest.$ac_ext <<_ACEOF
324 +/* end confdefs.h.  */
325 +$ac_includes_default
326 +#include <$ac_header>
327 +_ACEOF
328 +rm -f conftest.$ac_objext
329 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
330 +  (eval $ac_compile) 2>conftest.er1
331 +  ac_status=$?
332 +  grep -v '^ *+' conftest.er1 >conftest.err
333 +  rm -f conftest.er1
334 +  cat conftest.err >&5
335 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
336 +  (exit $ac_status); } &&
337 +        { ac_try='test -z "$ac_c_werror_flag"
338 +                        || test ! -s conftest.err'
339 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
340 +  (eval $ac_try) 2>&5
341 +  ac_status=$?
342 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
343 +  (exit $ac_status); }; } &&
344 +        { ac_try='test -s conftest.$ac_objext'
345 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
346 +  (eval $ac_try) 2>&5
347 +  ac_status=$?
348 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
349 +  (exit $ac_status); }; }; then
350 +  ac_header_compiler=yes
351 +else
352 +  echo "$as_me: failed program was:" >&5
353 +sed 's/^/| /' conftest.$ac_ext >&5
354 +
355 +ac_header_compiler=no
356 +fi
357 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
358 +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
359 +echo "${ECHO_T}$ac_header_compiler" >&6
360 +
361 +# Is the header present?
362 +echo "$as_me:$LINENO: checking $ac_header presence" >&5
363 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
364 +cat >conftest.$ac_ext <<_ACEOF
365 +/* confdefs.h.  */
366 +_ACEOF
367 +cat confdefs.h >>conftest.$ac_ext
368 +cat >>conftest.$ac_ext <<_ACEOF
369 +/* end confdefs.h.  */
370 +#include <$ac_header>
371 +_ACEOF
372 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
373 +  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
374 +  ac_status=$?
375 +  grep -v '^ *+' conftest.er1 >conftest.err
376 +  rm -f conftest.er1
377 +  cat conftest.err >&5
378 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
379 +  (exit $ac_status); } >/dev/null; then
380 +  if test -s conftest.err; then
381 +    ac_cpp_err=$ac_c_preproc_warn_flag
382 +    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
383 +  else
384 +    ac_cpp_err=
385 +  fi
386 +else
387 +  ac_cpp_err=yes
388 +fi
389 +if test -z "$ac_cpp_err"; then
390 +  ac_header_preproc=yes
391 +else
392 +  echo "$as_me: failed program was:" >&5
393 +sed 's/^/| /' conftest.$ac_ext >&5
394 +
395 +  ac_header_preproc=no
396 +fi
397 +rm -f conftest.err conftest.$ac_ext
398 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
399 +echo "${ECHO_T}$ac_header_preproc" >&6
400  
401 +# So?  What about this header?
402 +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
403 +  yes:no: )
404 +    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
405 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
406 +    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
407 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
408 +    ac_header_preproc=yes
409 +    ;;
410 +  no:yes:* )
411 +    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
412 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
413 +    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
414 +echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
415 +    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
416 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
417 +    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
418 +echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
419 +    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
420 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
421 +    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
422 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
423 +    (
424 +      cat <<\_ASBOX
425 +## -------------------------------- ##
426 +## Report this to bugs@eggheads.org ##
427 +## -------------------------------- ##
428 +_ASBOX
429 +    ) |
430 +      sed "s/^/$as_me: WARNING:     /" >&2
431 +    ;;
432 +esac
433 +echo "$as_me:$LINENO: checking for $ac_header" >&5
434 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
435 +if eval "test \"\${$as_ac_Header+set}\" = set"; then
436 +  echo $ECHO_N "(cached) $ECHO_C" >&6
437 +else
438 +  eval "$as_ac_Header=\$ac_header_preproc"
439 +fi
440 +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
441 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
442 +
443 +fi
444 +if test `eval echo '${'$as_ac_Header'}'` = yes; then
445 +  cat >>confdefs.h <<_ACEOF
446 +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
447 +_ACEOF
448 +
449 +else
450 +  { { echo "$as_me:$LINENO: error: OpenSSL was not found. Please supply a pathname to OpenSSL" >&5
451 +echo "$as_me: error: OpenSSL was not found. Please supply a pathname to OpenSSL" >&2;}
452 +   { (exit 1); exit 1; }; }
453 +fi
454 +
455 +done
456 +
457 +
458 +
459 +fi;
460  
461 +#end of ssl checks - hoe (.16 by poci)
462  
463  
464  # Substitute Makefile variables.
465 @@ -10827,6 +11193,8 @@ s,@TCLINC@,$TCLINC,;t t
466  s,@TCLINCFN@,$TCLINCFN,;t t
467  s,@TCL_REQS@,$TCL_REQS,;t t
468  s,@TCL_LIBS@,$TCL_LIBS,;t t
469 +s,@SSL_LIBS@,$SSL_LIBS,;t t
470 +s,@SSL_INCLUDE@,$SSL_INCLUDE,;t t
471  s,@EGGVERSION@,$EGGVERSION,;t t
472  s,@DEST@,$DEST,;t t
473  s,@MOD_UPDIR@,$MOD_UPDIR,;t t
474 diff -burNp eggdrop1.6.19/configure.ac eggdrop1.6.19.new/configure.ac
475 --- eggdrop1.6.19/configure.ac  2008-02-18 23:25:33.000000000 +0100
476 +++ eggdrop1.6.19.new/configure.ac      2008-09-22 14:23:32.432890637 +0200
477 @@ -150,6 +150,7 @@ EGG_TCL_CHECK_THREADS
478  EGG_TCL_LIB_REQS
479  EGG_TCL_LUSH
480  
481 +EGG_SSL_CRAP
482  
483  # Substitute Makefile variables.
484  EGG_SUBST_EGGVERSION
485 diff -burNp eggdrop1.6.19/disabled_modules eggdrop1.6.19.new/disabled_modules
486 --- eggdrop1.6.19/disabled_modules      2002-06-04 07:11:10.000000000 +0200
487 +++ eggdrop1.6.19.new/disabled_modules  2008-09-22 14:25:14.439395696 +0200
488 @@ -1,12 +0,0 @@
489 -#  disabled_modules -- File which lists all Eggdrop modules that are
490 -#                      disabled by default.
491 -#
492 -#  $Id$
493 -#
494 -# Note:
495 -#   -  Lines which start with a '#' character are ignored.
496 -#   -  Every module name needs to be on its own line
497 -
498 -# Woobie only serves as an example for module programming. No need to
499 -# compile it for normal bots ...
500 -woobie
501 diff -burNp eggdrop1.6.19/Makefile eggdrop1.6.19.new/Makefile
502 --- eggdrop1.6.19/Makefile      2008-04-19 06:21:34.000000000 +0200
503 +++ eggdrop1.6.19.new/Makefile  2008-09-22 14:25:56.388522764 +0200
504 @@ -1,8 +0,0 @@
505 -all:
506 -       @echo ""
507 -       @echo "Before you can compile your bot you have to configure it."
508 -       @echo "Please start the configure script now:"
509 -       @echo ""
510 -       @echo " % ./configure"
511 -       @echo ""
512 -
513 diff -burNp eggdrop1.6.19/Makefile.in eggdrop1.6.19.new/Makefile.in
514 --- eggdrop1.6.19/Makefile.in   2004-08-28 08:43:21.000000000 +0200
515 +++ eggdrop1.6.19.new/Makefile.in       2008-09-22 14:29:11.247383482 +0200
516 @@ -57,6 +57,8 @@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
517  RANLIB = @RANLIB@
518  MOD_EXT = @MOD_EXT@
519  XREQS = @TCL_REQS@
520 +XSSL_LIBS = @SSL_LIBS@
521 +XSSL_INCLUDE = @SSL_INCLUDE@
522  TCLLIB = @TCLLIB@
523  TCLLIBFN = @TCLLIBFN@
524  
525 @@ -89,7 +91,8 @@ egg_install_msg =  echo "" && \
526  MAKE_MODEGG = $(MAKE) 'MAKE=$(MAKE)' 'CC=$(MOD_CC)' 'LD=$(MOD_LD)' \
527  'STRIP=$(MOD_STRIP)' 'RANLIB=$(RANLIB)' 'CFLGS=$(CFLGS)' \
528  'TCLLIB=$(TCLLIB)' 'TCLLIBFN=$(TCLLIBFN)' 'XREQS=$(XREQS)' \
529 -'XLIBS=$(XLIBS)' 'EGGEXEC=$(EGGEXEC)' 'EGGBUILD=(standard build)' 'MODOBJS='
530 +'XSSL_LIBS=$(XSSL_LIBS)' 'XLIBS=$(XLIBS)' 'EGGEXEC=$(EGGEXEC)' \
531 +'XSSL_INCLUDE=$(XSSL_INCLUDE)' 'EGGBUILD=' 'MODOBJS='
532  
533  MAKE_MODULES = $(MAKE) 'MAKE=$(MAKE)' 'CC=$(SHLIB_CC)' 'LD=$(SHLIB_LD)' \
534  'STRIP=$(SHLIB_STRIP)' 'CFLGS=$(CFLGS)' 'XLIBS=$(XLIBS)' 'MOD_EXT=$(MOD_EXT)' \
535 @@ -99,12 +102,13 @@ MAKE_STATIC = $(MAKE) 'MAKE=$(MAKE)' 'CC
536  'STRIP=$(STRIP)' 'RANLIB=$(RANLIB)' 'CFLGS=$(CFLGS) -DSTATIC' \
537  'TCLLIB=$(TCLLIB)' 'TCLLIBFN=$(TCLLIBFN)' 'XREQS=$(XREQS)' \
538  'XLIBS=$(XLIBS)' 'EGGEXEC=$(EGGEXEC)' 'EGGBUILD=(static version)' \
539 -'MODOBJS=mod/*.o'
540 +'XSSL_INCLUDE=$(XSSL_INCLUDE)' 'XSSL_LIBS=$(XSSL_LIBS)' 'MODOBJS=mod/*.o'
541  
542  MAKE_DEBEGG = $(MAKE) 'MAKE=$(MAKE)' 'CC=$(MOD_CC)' 'LD=$(MOD_LD) -g' \
543  'STRIP=touch' 'RANLIB=$(RANLIB)' 'CFLGS=-g3 $(DEBCFLAGS) $(CFLGS)' \
544  'TCLLIB=$(TCLLIB)' 'TCLLIBFN=$(TCLLIBFN)' 'XREQS=$(XREQS)' \
545 -'XLIBS=$(XLIBS)' 'EGGEXEC=$(EGGEXEC)' 'EGGBUILD=(debug version)' 'MODOBJS='
546 +'XSSL_LIBS=$(XSSL_LIBS)' 'XLIBS=$(XLIBS)' 'EGGEXEC=$(EGGEXEC)' \
547 +'XSSL_INCLUDE=$(XSSL_INCLUDE)' 'EGGBUILD=(debug version)' 'MODOBJS='
548  
549  MAKE_DEBMODULES = $(MAKE) 'MAKE=$(MAKE)' 'CC=$(SHLIB_CC)' 'LD=$(SHLIB_LD)' \
550  'XLIBS=$(XLIBS)' 'STRIP=touch' 'CFLGS=-g3 $(DEBCFLAGS) $(CFLGS)' \
551 @@ -113,7 +117,8 @@ MAKE_DEBMODULES = $(MAKE) 'MAKE=$(MAKE)'
552  MAKE_SDEBUG = $(MAKE) 'MAKE=$(MAKE)' 'CC=$(CC)' 'LD=$(LD) -g' \
553  'STRIP=touch' 'RANLIB=$(RANLIB)' 'CFLGS=-g3 $(DEBCFLAGS) -DSTATIC $(CFLGS)' \
554  'TCLLIB=$(TCLLIB)' 'TCLLIBFN=$(TCLLIBFN)' 'XREQS=$(XREQS)' 'XLIBS=$(XLIBS)' \
555 -'EGGEXEC=$(EGGEXEC)' 'EGGBUILD=(static debug version)' 'MODOBJS=mod/*.o'
556 +'XSSL_INCLUDE=$(XSSL_INCLUDE)' 'XSSL_LIBS=$(XSSL_LIBS)' 'EGGEXEC=$(EGGEXEC)' \
557 +'EGGBUILD=(static and debug version)' 'MODOBJS=mod/*.o'
558  
559  MAKE_DEPEND = $(MAKE) 'MAKE=$(MAKE)' 'CC=$(CC)'
560  
561 diff -burNp eggdrop1.6.19/src/dcc.c eggdrop1.6.19.new/src/dcc.c
562 --- eggdrop1.6.19/src/dcc.c     2008-02-16 22:41:03.000000000 +0100
563 +++ eggdrop1.6.19.new/src/dcc.c 2008-09-22 14:30:37.252784308 +0200
564 @@ -32,7 +32,11 @@
565  #include "tandem.h"
566  
567  /* Includes for botnet md5 challenge/response code <cybah> */
568 +#ifndef EGG_SSL_EXT
569  #include "md5/md5.h"
570 +#else
571 +#include "openssl/md5.h"
572 +#endif
573  
574  extern struct userrec *userlist;
575  extern struct chanset_t *chanset;
576 diff -burNp eggdrop1.6.19/src/dccutil.c eggdrop1.6.19.new/src/dccutil.c
577 --- eggdrop1.6.19/src/dccutil.c 2008-02-16 22:41:03.000000000 +0100
578 +++ eggdrop1.6.19.new/src/dccutil.c     2008-09-22 14:31:42.540452895 +0200
579 @@ -33,6 +33,7 @@
580  #include "chan.h"
581  #include "modules.h"
582  #include "tandem.h"
583 +#include "net.h"
584  
585  extern struct dcc_t *dcc;
586  extern int dcc_total, max_dcc, dcc_flood_thr, backgrd, copy_to_tmp, MAXSOCKS;
587 diff -burNp eggdrop1.6.19/src/eggdrop.h eggdrop1.6.19.new/src/eggdrop.h
588 --- eggdrop1.6.19/src/eggdrop.h 2008-02-16 22:41:03.000000000 +0100
589 +++ eggdrop1.6.19.new/src/eggdrop.h     2008-09-22 14:33:40.008829213 +0200
590 @@ -616,18 +616,6 @@ enum {
591  #define HELP_TEXT       2
592  #define HELP_IRC        16
593  
594 -/* This is used by the net module to keep track of sockets and what's
595 - * queued on them
596 - */
597 -typedef struct {
598 -  int sock;
599 -  short flags;
600 -  char *inbuf;
601 -  char *outbuf;
602 -  unsigned long outbuflen;      /* Outbuf could be binary data  */
603 -  unsigned long inbuflen;       /* Inbuf could be binary data   */
604 -} sock_list;
605 -
606  enum {
607    EGG_OPTION_SET = 1,           /* Set option(s).               */
608    EGG_OPTION_UNSET = 2          /* Unset option(s).             */
609 diff -burNp eggdrop1.6.19/src/main.c eggdrop1.6.19.new/src/main.c
610 --- eggdrop1.6.19/src/main.c    2008-02-16 22:41:03.000000000 +0100
611 +++ eggdrop1.6.19.new/src/main.c        2008-09-22 14:35:26.008450672 +0200
612 @@ -161,6 +161,9 @@ int cx_line[16];
613  int cx_ptr = 0;
614  #endif
615  
616 +#ifdef EGG_SSL_EXT
617 +int clean_net();
618 +#endif
619  
620  void fatal(const char *s, int recoverable)
621  {
622 @@ -171,6 +174,9 @@ void fatal(const char *s, int recoverabl
623    for (i = 0; i < dcc_total; i++)
624      if (dcc[i].sock >= 0)
625        killsock(dcc[i].sock);
626 +  #ifdef EGG_SSL_EXT
627 +  clean_net();
628 +  #endif
629    unlink(pid_file);
630    if (!recoverable) {
631      bg_send_quit(BG_ABORT);
632 diff -burNp eggdrop1.6.19/src/Makefile.in eggdrop1.6.19.new/src/Makefile.in
633 --- eggdrop1.6.19/src/Makefile.in       2006-11-20 12:38:25.000000000 +0100
634 +++ eggdrop1.6.19.new/src/Makefile.in   2008-09-22 14:38:37.400421493 +0200
635 @@ -11,6 +11,8 @@ INSTALL = @INSTALL@
636  INSTALL_PROGRAM = @INSTALL_PROGRAM@
637  INSTALL_DATA = @INSTALL_DATA@
638  INSTALL_SCRIPT = @INSTALL_SCRIPT@
639 +XSSL_LIBS = @SSL_LIBS@
640 +XSSL_INCLUDE = @SSL_INCLUDE@
641  
642  CC = @CC@
643  LD = @CC@
644 @@ -37,7 +39,7 @@ doofus:
645         @echo "Linking eggdrop $(EGGBUILD)."
646         @echo ""
647         @touch mod/mod.xlibs
648 -       $(LD) -o ../$(EGGEXEC) $(eggdrop_objs) $(MODOBJS) $(XLIBS) md5/md5c.o compat/*.o `cat mod/mod.xlibs`
649 +       $(LD) -o ../$(EGGEXEC) $(eggdrop_objs) $(MODOBJS) $(XLIBS) md5/md5c.o compat/*.o `cat mod/mod.xlibs` $(XSSL_LIBS) $(XSSL_INCLUDE)
650         $(STRIP) ../$(EGGEXEC)
651         @echo ""
652         @echo "Successful compile: $(EGGEXEC)"
653 diff -burNp eggdrop1.6.19/src/md5/md5c.c eggdrop1.6.19.new/src/md5/md5c.c
654 --- eggdrop1.6.19/src/md5/md5c.c        2004-04-10 09:49:23.000000000 +0200
655 +++ eggdrop1.6.19.new/src/md5/md5c.c    2008-09-22 14:40:36.140399142 +0200
656 @@ -17,9 +17,23 @@
657  
658  #include <string.h>
659  
660 +#ifndef EGG_SSL_EXT
661  #include "md5.h"
662 +#else
663 +#include "openssl/md5.h"
664 +#endif
665 +
666  #include "compat/compat.h"
667  
668 +typedef unsigned long MD5_u32plus;
669 +
670 +typedef struct {
671 +       MD5_u32plus lo, hi;
672 +       MD5_u32plus a, b, c, d;
673 +       unsigned char buffer[64];
674 +       MD5_u32plus block[16];
675 +} MD5_CTX;
676 +
677  /*
678   * The basic MD5 functions.
679   *
680 diff -burNp eggdrop1.6.19/src/md5/md5.h eggdrop1.6.19.new/src/md5/md5.h
681 --- eggdrop1.6.19/src/md5/md5.h 2003-03-06 04:35:59.000000000 +0100
682 +++ eggdrop1.6.19.new/src/md5/md5.h     2008-09-22 14:44:22.801432410 +0200
683 @@ -5,6 +5,8 @@
684   * Written by Solar Designer <solar@openwall.com> in 2001, and placed in
685   * the public domain.  See md5c.c for more information.
686   */
687 +#include "../config.h"
688 +#ifndef EGG_SSL_EXT
689  
690  #ifndef _MD5_H
691  #define _MD5_H
692 @@ -24,3 +26,4 @@ extern void MD5_Update(MD5_CTX *ctx, voi
693  extern void MD5_Final(unsigned char *result, MD5_CTX *ctx);
694  
695  #endif
696 +#endif
697 diff -burNp eggdrop1.6.19/src/mod/irc.mod/chan.c eggdrop1.6.19.new/src/mod/irc.mod/chan.c
698 --- eggdrop1.6.19/src/mod/irc.mod/chan.c        2008-02-16 22:41:09.000000000 +0100
699 +++ eggdrop1.6.19.new/src/mod/irc.mod/chan.c    2008-09-22 14:46:27.143879710 +0200
700 @@ -965,10 +965,10 @@ static int got324(char *from, char *msg)
701          q = strchr(p, ' ');
702          if (q != NULL) {
703            *q = 0;
704 -          set_key(chan, p);
705 +          set_keyegg(chan, p);
706            strcpy(p, q + 1);
707          } else {
708 -          set_key(chan, p);
709 +          set_keyegg(chan, p);
710            *p = 0;
711          }
712        }
713 diff -burNp eggdrop1.6.19/src/mod/irc.mod/irc.c eggdrop1.6.19.new/src/mod/irc.mod/irc.c
714 --- eggdrop1.6.19/src/mod/irc.mod/irc.c 2008-02-16 22:41:09.000000000 +0100
715 +++ eggdrop1.6.19.new/src/mod/irc.mod/irc.c     2008-09-22 14:47:35.182249518 +0200
716 @@ -256,7 +256,7 @@ static void maybe_revenge(struct chanset
717  
718  /* Set the key.
719   */
720 -static void set_key(struct chanset_t *chan, char *k)
721 +static void set_keyegg(struct chanset_t *chan, char *k)
722  {
723    nfree(chan->channel.key);
724    if (k == NULL) {
725 diff -burNp eggdrop1.6.19/src/mod/irc.mod/irc.h eggdrop1.6.19.new/src/mod/irc.mod/irc.h
726 --- eggdrop1.6.19/src/mod/irc.mod/irc.h 2008-02-16 22:41:09.000000000 +0100
727 +++ eggdrop1.6.19.new/src/mod/irc.mod/irc.h     2008-09-22 14:53:47.281677127 +0200
728 @@ -69,7 +69,7 @@ static void set_delay(struct chanset_t *
729  
730  static void reset_chan_info(struct chanset_t *);
731  static void recheck_channel(struct chanset_t *, int);
732 -static void set_key(struct chanset_t *, char *);
733 +static void set_keyegg(struct chanset_t *, char *);
734  static void maybe_revenge(struct chanset_t *, char *, char *, int);
735  static int detect_chan_flood(char *, char *, char *, struct chanset_t *, int,
736                               char *);
737 diff -burNp eggdrop1.6.19/src/mod/irc.mod/mode.c eggdrop1.6.19.new/src/mod/irc.mod/mode.c
738 --- eggdrop1.6.19/src/mod/irc.mod/mode.c        2008-02-16 22:41:09.000000000 +0100
739 +++ eggdrop1.6.19.new/src/mod/irc.mod/mode.c    2008-09-22 14:57:12.177766159 +0200
740 @@ -1128,7 +1128,7 @@ static int gotmode(char *from, char *ori
741              break;
742            }
743            if (ms2[0] == '+') {
744 -            set_key(chan, op);
745 +            set_keyegg(chan, op);
746              if (channel_active(chan))
747                got_key(chan, nick, from, op);
748            } else {
749 @@ -1139,7 +1139,7 @@ static int gotmode(char *from, char *ori
750                         !chan_master(user) && !match_my_nick(nick))
751                  add_mode(chan, '+', 'k', chan->key_prot);
752              }
753 -            set_key(chan, NULL);
754 +           set_keyegg(chan, NULL);
755            }
756            check_tcl_mode(nick, from, u, chan->dname, ms2, op);
757            break;
758 diff -burNp eggdrop1.6.19/src/mod/module.h eggdrop1.6.19.new/src/mod/module.h
759 --- eggdrop1.6.19/src/mod/module.h      2008-02-16 22:41:06.000000000 +0100
760 +++ eggdrop1.6.19.new/src/mod/module.h  2008-09-22 15:00:36.262853551 +0200
761 @@ -471,13 +471,23 @@
762  /* IPv6 leftovers: 286 */
763  /* IPv6 leftovers: 287 */
764  /* 288 - 291 */
765 -/* IPv6 leftovers: 288 */
766 +#ifdef EGG_SSL_EXT
767 +#define net_switch_to_ssl ((int (*)(int))global[289])
768 +#define use_ssl (*(int *)global[290]) /* kyotou */
769 +#define strip_mirc_codes ((void (*)(int, char *))global[291])
770 +#define check_ansi ((int (*) (char *))global[292])
771 +#define oatoi ((int (*) (const char *))global[293])
772 +/* 292 - 295 */
773 +#define str_isdigit ((int (*) (const char *))global[294])
774 +#define remove_crlf ((void (*)(char **))global[295])
775 +#else
776  #define strip_mirc_codes ((void (*)(int, char *))global[289])
777  #define check_ansi ((int (*) (char *))global[290])
778  #define oatoi ((int (*) (const char *))global[291])
779  /* 292 - 295 */
780  #define str_isdigit ((int (*) (const char *))global[292])
781  #define remove_crlf ((void (*)(char **))global[293])
782 +#endif
783  
784  /* hostmasking */
785  #define maskhost(a,b) _maskhost((a),(b),1)
786 diff -burNp eggdrop1.6.19/src/mod/server.mod/servmsg.c eggdrop1.6.19.new/src/mod/server.mod/servmsg.c
787 --- eggdrop1.6.19/src/mod/server.mod/servmsg.c  2008-02-16 22:41:10.000000000 +0100
788 +++ eggdrop1.6.19.new/src/mod/server.mod/servmsg.c      2008-09-22 15:16:40.818273894 +0200
789 @@ -1293,6 +1293,14 @@ static void server_resolve_success(int s
790        fatal("NO SERVERS WILL ACCEPT MY CONNECTION.", 0);
791    } else {
792      dcc[servidx].sock = serv;
793 +       #ifdef EGG_SSL_EXT
794 +       if (use_ssl) { /* kyotou */
795 +               if (net_switch_to_ssl(serv)==0) {
796 +                       putlog(LOG_SERV, "*", "SSL %s %s (Error while switching to SSL)", IRC_FAILEDCONNECT, dcc[servidx].host);
797 +                       lostdcc(servidx);
798 +               }
799 +       }
800 +       #endif
801      /* Queue standard login */
802      dcc[servidx].timeval = now;
803      SERVER_SOCKET.timeout_val = &server_timeout;
804 diff -burNp eggdrop1.6.19/src/modules.c eggdrop1.6.19.new/src/modules.c
805 --- eggdrop1.6.19/src/modules.c 2008-02-16 22:41:04.000000000 +0100
806 +++ eggdrop1.6.19.new/src/modules.c     2008-09-22 15:30:23.753434245 +0200
807 @@ -29,9 +29,17 @@
808  #include "main.h"
809  #include "modules.h"
810  #include "tandem.h"
811 +
812 +#ifndef EGG_SSL_EXT
813  #include "md5/md5.h"
814 +#else
815 +#include "openssl/md5.h"
816 +#endif
817 +
818  #include "users.h"
819  
820 +#include "net.h"
821 +
822  #ifndef STATIC
823  #  ifdef MOD_USE_SHL
824  #    include <dl.h>
825 @@ -94,6 +102,10 @@ extern int parties, noshare, dcc_total, 
826             password_timeout, force_expire, protect_readonly, reserved_port_min,
827             reserved_port_max, copy_to_tmp, quiet_reject;
828  
829 +#ifdef EGG_SSL_EXT
830 +extern int      use_ssl; /* kyotou */
831 +#endif
832 +
833  extern party_t *party;
834  extern time_t now, online_since;
835  extern tand_t *tandbot;
836 @@ -128,6 +140,9 @@ void check_static(char *name, char *(*fu
837  }
838  #endif /* STATIC */
839  
840 +#ifdef EGG_SSL_EXT
841 +int net_switch_to_ssl(int);
842 +#endif
843  
844  /* The null functions */
845  void null_func()
846 @@ -564,7 +579,13 @@ Function global_table[] = {
847    (Function) 0,                   /* IPv6 leftovers: 286                 */
848    (Function) 0,                   /* IPv6 leftovers: 287                 */
849    /* 288 - 291 */
850 +#ifdef EGG_SSL_EXT
851    (Function) 0,                   /* IPv6 leftovers: 288                 */
852 +  (Function) net_switch_to_ssl,
853 +  (Function) & use_ssl, /* kyotou */
854 +#else
855 +  (Function) 0,                   /* IPv6 leftovers: 288                 */
856 +#endif
857    (Function) strip_mirc_codes,
858    (Function) check_ansi,
859    (Function) oatoi,
860 diff -burNp eggdrop1.6.19/src/net.c eggdrop1.6.19.new/src/net.c
861 --- eggdrop1.6.19/src/net.c     2008-02-16 22:41:04.000000000 +0100
862 +++ eggdrop1.6.19.new/src/net.c 2008-09-22 16:10:28.739840200 +0200
863 @@ -52,6 +52,18 @@
864  #  endif
865  #endif
866  
867 +#ifdef EGG_SSL_EXT
868 +#  ifndef EGG_SSL_INCS
869 +#    include <openssl/ssl.h>
870 +#    include <openssl/err.h>
871 +#    include <openssl/rand.h>
872 +#    define EGG_SSL_INCS 1
873 +#  endif
874 +#endif
875 +
876 +#include "net.h"
877 +
878 +
879  extern struct dcc_t *dcc;
880  extern int backgrd, use_stderr, resolve_timeout, dcc_total;
881  extern unsigned long otraffic_irc_today, otraffic_bn_today, otraffic_dcc_today,
882 @@ -65,6 +77,12 @@ int firewallport = 1080;      /* Default
883  char botuser[21] = "eggdrop"; /* Username of the user running the bot.        */
884  int dcc_sanitycheck = 0;      /* Do some sanity checking on dcc connections.  */
885  
886 +#ifdef EGG_SSL_EXT
887 +SSL_CTX *ssl_ctx=NULL;
888 +char   *tls_rand_file = NULL;
889 +int     use_ssl = 0; /* kyotou */
890 +#endif
891 +
892  sock_list *socklist = NULL;   /* Enough to be safe.                           */
893  int MAXSOCKS = 0;
894  sigjmp_buf alarmret;             /* Env buffer for alarm() returns.              */
895 @@ -88,6 +106,46 @@ IP my_atoul(char *s)
896    return ret;
897  }
898  
899 +#ifdef EGG_SSL_EXT
900 +int seed_PRNG(void)
901 +{
902 +    char stackdata[1024];
903 +    static char rand_file[300];
904 +    FILE *fh;
905 +
906 +#if OPENSSL_VERSION_NUMBER >= 0x00905100
907 +    if (RAND_status())
908 +       return 0;     /* PRNG already good seeded */
909 +#endif
910 +    /* if the device '/dev/urandom' is present, OpenSSL uses it by default.
911 +     * check if it's present, else we have to make random data ourselfs.
912 +     */
913 +    if ((fh = fopen("/dev/urandom", "r"))) {
914 +       fclose(fh);
915 +       return 0;
916 +    }
917 +    if (RAND_file_name(rand_file, sizeof(rand_file)))
918 +       tls_rand_file = rand_file;
919 +    else
920 +       return 1;
921 +    if (!RAND_load_file(rand_file, 1024)) {
922 +       /* no .rnd file found, create new seed */
923 +       unsigned int c;
924 +       c = time(NULL);
925 +       RAND_seed(&c, sizeof(c));
926 +       c = getpid();
927 +       RAND_seed(&c, sizeof(c));
928 +       RAND_seed(stackdata, sizeof(stackdata));
929 +    }
930 +#if OPENSSL_VERSION_NUMBER >= 0x00905100
931 +    if (!RAND_status())
932 +       return 2;   /* PRNG still badly seeded */
933 +#endif
934 +    return 0;
935 +}
936 +#endif
937 +
938 +
939  /* Initialize the socklist
940   */
941  void init_net()
942 @@ -96,9 +154,35 @@ void init_net()
943  
944    for (i = 0; i < MAXSOCKS; i++) {
945      socklist[i].flags = SOCK_UNUSED;
946 +#ifdef EGG_SSL_EXT
947 +    socklist[i].ssl=NULL;
948 +#endif
949    }
950 +#ifdef EGG_SSL_EXT
951 +  /* good place to init ssl stuff */
952 +  SSL_load_error_strings();
953 +  OpenSSL_add_ssl_algorithms();
954 +  ssl_ctx=SSL_CTX_new(SSLv23_client_method());
955 +  if (!ssl_ctx)
956 +  fatal("SSL_CTX_new() failed",0);
957 +  if (seed_PRNG())
958 +    fatal("Wasn't able to properly seed the PRNG!",0);
959 +#endif
960  }
961  
962 +#ifdef EGG_SSL_EXT
963 +/* cleanup mess when quiting */
964 +int clean_net() {
965 +   if (ssl_ctx) {
966 +       SSL_CTX_free(ssl_ctx);
967 +       ssl_ctx = NULL;
968 +   }
969 +  if (tls_rand_file)
970 +       RAND_write_file(tls_rand_file);
971 + return 0;
972 + }
973 +#endif
974 +
975  int expmem_net()
976  {
977    int i, tot = 0;
978 @@ -231,6 +315,13 @@ int sockoptions(int sock, int operation,
979  
980    for (i = 0; i < MAXSOCKS; i++)
981      if ((socklist[i].sock == sock) && !(socklist[i].flags & SOCK_UNUSED)) {
982 +#ifdef EGG_SSL_EXT
983 +      if (socklist[i].ssl) {
984 +       SSL_shutdown(socklist[i].ssl);
985 +           SSL_free(socklist[i].ssl);
986 +           socklist[i].ssl=NULL;
987 +      }
988 +#endif    
989        if (operation == EGG_OPTION_SET)
990          socklist[i].flags |= sock_options;
991        else if (operation == EGG_OPTION_UNSET)
992 @@ -366,6 +457,64 @@ static int proxy_connect(int sock, char 
993    return sock;
994  }
995  
996 +#ifdef EGG_SSL_EXT
997 +int net_switch_to_ssl(int sock) {
998 +int err;
999 +int i=0;
1000 +    debug0("net_switch_to_ssl()");
1001 +    while (i<MAXSOCKS) {
1002 +     if (socklist[i].sock==sock) {
1003 +      break;
1004 +     }
1005 +     i++;
1006 +    }
1007 +    if (i==MAXSOCKS) {
1008 +        debug0("Error while swithing to SSL - sock not found in list");
1009 +       return 0;
1010 +    }
1011 +
1012 +    if (socklist[i].ssl) {
1013 +        debug0("Error while swithing to SSL - already in ssl");
1014 +       return 0;
1015 +    }
1016 +    socklist[i].ssl = SSL_new(ssl_ctx);
1017 +    if (!socklist[i].ssl) {
1018 +        debug0("Error while swithing to SSL - SSL_new() error");
1019 +       return 0;
1020 +    }
1021 +
1022 +     SSL_set_fd(socklist[i].ssl, socklist[i].sock);
1023 +     err = SSL_connect(socklist[i].ssl);
1024 +
1025 +     while (err <= 0) {
1026 +        int errs;
1027 +        errs=SSL_get_error(socklist[i].ssl,err);
1028 +        if ((errs!=SSL_ERROR_WANT_READ)&&(errs!=SSL_ERROR_WANT_WRITE)&&
1029 +               (errs!=SSL_ERROR_WANT_X509_LOOKUP)) {
1030 +               putlog(LOG_DEBUG,"*", "SSL_connect() = %d, %s", err,
1031 +                       (char *)ERR_error_string(ERR_get_error(), NULL));
1032 +               SSL_shutdown(socklist[i].ssl);
1033 +               SSL_free(socklist[i].ssl);
1034 +               socklist[i].ssl = NULL;
1035 +               return 0;
1036 +        }
1037 +        usleep(1000);
1038 +        err = SSL_connect(socklist[i].ssl);
1039 +     }
1040 +
1041 +     if (err==1) {
1042 +      debug0("SSL_connect() success");
1043 +      return 1;
1044 +     }
1045 +     debug0("Error while SSL_connect()");
1046 +     SSL_shutdown(socklist[i].ssl);
1047 +     SSL_free(socklist[i].ssl);
1048 +     socklist[i].ssl = NULL;
1049 +     return 0;
1050 +}
1051 +#endif
1052 +
1053 +
1054  /* Starts a connection attempt to a socket
1055   *
1056   * If given a normal hostname, this will be resolved to the corresponding
1057 @@ -627,6 +776,9 @@ static int sockread(char *s, int *len)
1058      for (i = 0; i < MAXSOCKS; i++) {
1059        if ((!(socklist[i].flags & SOCK_UNUSED)) &&
1060            ((FD_ISSET(socklist[i].sock, &fd)) ||
1061 +#ifdef EGG_SSL_EXT
1062 +                 ((socklist[i].ssl)&&(SSL_pending(socklist[i].ssl))) ||
1063 +#endif
1064            ((socklist[i].sock == STDOUT) && (!backgrd) &&
1065            (FD_ISSET(STDIN, &fd))))) {
1066          if (socklist[i].flags & (SOCK_LISTEN | SOCK_CONNECT)) {
1067 @@ -651,7 +803,31 @@ static int sockread(char *s, int *len)
1068          if ((socklist[i].sock == STDOUT) && !backgrd)
1069            x = read(STDIN, s, grab);
1070          else
1071 +#ifdef EGG_SSL_EXT
1072 +       {
1073 +        if (socklist[i].ssl) {
1074 +           x=SSL_read(socklist[i].ssl,s,grab);
1075 +          if (x < 0) {
1076 +           int err = SSL_get_error(socklist[i].ssl, x);
1077 +           x = -1;
1078 +           switch (err) {
1079 +               case SSL_ERROR_WANT_READ:
1080 +                   errno = EAGAIN;
1081 +                   break;
1082 +               case SSL_ERROR_WANT_WRITE:
1083 +                   errno = EAGAIN;
1084 +                   break;
1085 +               case SSL_ERROR_WANT_X509_LOOKUP:
1086 +                   errno = EAGAIN;
1087 +                   break;
1088 +               }
1089 +           }
1090 +        } else
1091            x = read(socklist[i].sock, s, grab);
1092 +       }
1093 +#else
1094 +          x = read(socklist[i].sock, s, grab);
1095 +#endif
1096          if (x <= 0) {           /* eof */
1097            if (errno != EAGAIN) { /* EAGAIN happens when the operation would
1098                                    * block on a non-blocking socket, if the
1099 @@ -944,6 +1120,26 @@ void tputs(register int z, char *s, unsi
1100          socklist[i].outbuflen += len;
1101          return;
1102        }
1103 +#ifdef EGG_SSL_EXT
1104 +      if (socklist[i].ssl) {
1105 +       x=SSL_write(socklist[i].ssl,s,len);
1106 +          if (x < 0) {
1107 +           int err = SSL_get_error(socklist[i].ssl, x);
1108 +           x = -1;
1109 +           switch (err) {
1110 +               case SSL_ERROR_WANT_READ:
1111 +                       errno = EAGAIN;
1112 +                   break;
1113 +               case SSL_ERROR_WANT_WRITE:
1114 +                   errno = EAGAIN;
1115 +                   break;
1116 +               case SSL_ERROR_WANT_X509_LOOKUP:
1117 +                   errno = EAGAIN;
1118 +                   break;
1119 +               }
1120 +          }
1121 +      } else
1122 +#endif
1123        /* Try. */
1124        x = write(z, s, len);
1125        if (x == -1)
1126 @@ -1010,6 +1206,27 @@ void dequeue_sockets()
1127          (socklist[i].outbuf != NULL) && (FD_ISSET(socklist[i].sock, &wfds))) {
1128        /* Trick tputs into doing the work */
1129        errno = 0;
1130 +#ifdef EGG_SSL_EXT
1131 +      if (socklist[i].ssl) {
1132 +          x = write(socklist[i].sock, socklist[i].outbuf,
1133 +               socklist[i].outbuflen);
1134 +          if (x < 0) {
1135 +           int err = SSL_get_error(socklist[i].ssl, x);
1136 +           x = -1;
1137 +           switch (err) {
1138 +               case SSL_ERROR_WANT_READ:
1139 +                   errno = EAGAIN;
1140 +                   break;
1141 +               case SSL_ERROR_WANT_WRITE:
1142 +                   errno = EAGAIN;
1143 +                   break;
1144 +               case SSL_ERROR_WANT_X509_LOOKUP:
1145 +                   errno = EAGAIN;
1146 +                   break;
1147 +               }
1148 +           }
1149 +       } else
1150 +#endif
1151        x = write(socklist[i].sock, socklist[i].outbuf, socklist[i].outbuflen);
1152        if ((x < 0) && (errno != EAGAIN)
1153  #ifdef EBADSLT
1154 diff -burNp eggdrop1.6.19/src/net.h eggdrop1.6.19.new/src/net.h
1155 --- eggdrop1.6.19/src/net.h     1970-01-01 01:00:00.000000000 +0100
1156 +++ eggdrop1.6.19.new/src/net.h 2008-09-22 16:12:38.979826983 +0200
1157 @@ -0,0 +1,30 @@
1158 +#ifndef _EGG_NET_H
1159 +#define _EGG_NET_H
1160 +#ifdef EGG_SSL_EXT
1161 +# ifndef EGG_SSL_INCS
1162 +#  include <openssl/ssl.h>
1163 +#  include <openssl/err.h>
1164 +#  include <openssl/rand.h>
1165 +#  define EGG_SSL_INCS 1
1166 +# endif
1167 +#endif
1168 +
1169 +/* This is used by the net module to keep track of sockets and what's
1170 + * queued on them
1171 + */
1172 +typedef struct {
1173 +  int           sock;
1174 +#ifdef EGG_SSL_EXT
1175 +  SSL *ssl;
1176 +#endif
1177 +  short                 flags;
1178 +  char         *inbuf;
1179 +  char         *outbuf;
1180 +  unsigned long  outbuflen;    /* Outbuf could be binary data  */
1181 +  unsigned long         inbuflen;      /* Inbuf could be binary data   */
1182 +#ifdef USE_IPV6
1183 +  unsigned int af;
1184 +#endif /* USE_IPV6 */
1185 +} sock_list;
1186 +
1187 +#endif                         /* _EGG_NET_H */
1188 diff -burNp eggdrop1.6.19/src/patch.h eggdrop1.6.19.new/src/patch.h
1189 --- eggdrop1.6.19/src/patch.h   2008-04-19 06:21:20.000000000 +0200
1190 +++ eggdrop1.6.19.new/src/patch.h       2008-09-22 16:13:41.491758122 +0200
1191 @@ -36,7 +36,9 @@
1192   *
1193   *
1194   */
1195 -/* PATCH GOES HERE */
1196 +#ifdef EGG_SSL_EXT
1197 +patch("SSL");
1198 +#endif
1199  /*
1200   *
1201   *
1202 diff -burNp eggdrop1.6.19/src/tcl.c eggdrop1.6.19.new/src/tcl.c
1203 --- eggdrop1.6.19/src/tcl.c     2008-02-16 22:41:04.000000000 +0100
1204 +++ eggdrop1.6.19.new/src/tcl.c 2008-09-22 16:16:08.499821489 +0200
1205 @@ -45,6 +45,10 @@ typedef struct {
1206  
1207  extern time_t online_since;
1208  
1209 +#ifdef EGG_SSL_EXT
1210 +extern int      use_ssl; /* kyotou */
1211 +#endif
1212 +
1213  extern char origbotname[], botuser[], motdfile[], admin[], userfile[],
1214              firewall[], helpdir[], notify_new[], hostname[], myip[], moddir[],
1215              tempdir[], owner[], network[], botnetnick[], bannerfile[],
1216 @@ -522,6 +526,9 @@ static tcl_ints def_tcl_ints[] = {
1217    {"enable-simul",          &enable_simul,         0}, /* compat */
1218    {"debug-output",          &debug_output,         0}, /* compat */
1219    {"use-console-r",         &use_console_r,        0}, /* compat */
1220 +#ifdef EGG_SSL_EXT
1221 +  {"use-ssl",               &use_ssl,              0}, /* kyotou */
1222 +#endif
1223    {NULL,                    NULL,                  0}
1224  };
1225  
1226 diff -burNp eggdrop1.6.19/src/tclmisc.c eggdrop1.6.19.new/src/tclmisc.c
1227 --- eggdrop1.6.19/src/tclmisc.c 2008-02-16 22:41:04.000000000 +0100
1228 +++ eggdrop1.6.19.new/src/tclmisc.c     2008-09-22 16:17:34.872716077 +0200
1229 @@ -26,7 +26,12 @@
1230  #include "main.h"
1231  #include "modules.h"
1232  #include "tandem.h"
1233 -#include "md5/md5.h"
1234 +
1235 +#ifndef EGG_SSL_EXT
1236 + #include "md5/md5.h"
1237 +#else
1238 +#include "openssl/md5.h"
1239 +#endif
1240  
1241  #ifdef TIME_WITH_SYS_TIME
1242  #  include <sys/time.h>
This page took 0.136094 seconds and 3 git commands to generate.