#============================================================================== # Night Light IRC Proxy (ircproxy) configure.in # Copyright (C) 2001-2007 Jonas Kvinge # All rights reserved. #============================================================================== AC_PREREQ(2.59) AC_INIT([ircproxy], [1.3.1b], [jonas@night-light.net]) echo "*-----------------------------------------------------------------------------" echo "* GNU autoconf script for ircproxy" echo "* Copyright (C) 2001-2007 Jonas Kvinge " echo "*-----------------------------------------------------------------------------" AC_CONFIG_SRCDIR(./src/main.c) AC_CONFIG_AUX_DIR(.) AC_CONFIG_HEADERS(config.h) AC_ARG_ENABLE(assert, AC_HELP_STRING([--disable-assert], [Disable assertions]), [assert=$enableval], [assert=yes]) if test x$assert = xyes; then AC_DEFINE(USE_ASSERT, 1, [Define if you want to enable assertions.]) else AC_DEFINE(USE_ASSERT, 0, [Define if you want to enable assertions.]) fi AC_ARG_ENABLE(ares, AC_HELP_STRING([--disable-ares], [Disable ares, this means trouble!]), [ares_enable=$enableval], [ares_enable=yes]) if test x$ares_enable = xyes; then AC_DEFINE(ARES, 1, [Define if you want to enable ARES.]) else AC_DEFINE(ARES, 0, [Define if you want to enable ARES.]) fi AC_ARG_ENABLE(ipv6, AC_HELP_STRING([--disable-ipv6], [Disable IPv6 support]), [ipv6_support=$enableval], [ipv6_support=yes]) if test x$ipv6_support = xyes; then AC_DEFINE(IPV6_SUPPORT, 1, [Define if you want IPv6 support.]) else AC_DEFINE(IPV6_SUPPORT, 0, [Define if you want IPv6 support.]) fi AC_ARG_ENABLE(ssl, AC_HELP_STRING([--disable-ssl], [Disable SSL support]), [ssl_support=$enableval], [ssl_support=yes]) if test x$ssl_support = xyes; then AC_DEFINE(SSL_SUPPORT, 1, [Define if you want SSL support.]) else AC_DEFINE(SSL_SUPPORT, 0, [Define if you want SSL support.]) fi AC_ARG_ENABLE(win32, AC_HELP_STRING([--enable-win32], [Enable independent win32 support]), [win32=$enableval], [win32=no]) if test x$win32 = xyes; then AC_DEFINE(WIN32, 1, [Define if you want independent win32 support.]) fi AC_ARG_ENABLE(memdebug, AC_HELP_STRING([--disable-memdebug], [Disable memory debugging]), [memdebug=$enableval], [memdebug=yes]) if test x$memdebug = xyes; then AC_DEFINE(MEMDEBUG, 1, [Define if you want memory debugging.]) else AC_DEFINE(MEMDEBUG, 0, [Define if you want memory debugging.]) fi AC_ARG_ENABLE(fddebug, AC_HELP_STRING([--disable-fddebug], [Disable file descriptor debugging]), [fddebug=$enableval], [fddebug=yes]) if test x$fddebug = xyes; then AC_DEFINE(FDDEBUG, 1, [Define if you want file descriptor debugging.]) else AC_DEFINE(FDDEBUG, 0, [Define if you want file descriptor debugging.]) fi AC_ARG_ENABLE(identd, AC_HELP_STRING([--enable-identd], [Enable the internal ident daemon]), [identd=$enableval], [identd=no]) if test x$identd = xyes; then AC_DEFINE(IDENTD, 1, [Enable the internal ident daemon.]) else AC_DEFINE(IDENTD, 0, [Enable the internal ident daemon.]) fi AC_ARG_ENABLE(debug, AC_HELP_STRING([--enable-debug], [Enable debugging]), [debug=$enableval], [debug=no]) if test x$debug = xyes; then AC_DEFINE(DEBUG, 1, [Define if you want to enable debugging.]) else AC_DEFINE(DEBUG, 0, [Define if you want to enable debugging.]) fi # Checks for programs. AC_PROG_CC AC_PROG_MAKE_SET AC_PROG_INSTALL AC_PROG_LN_S # Check for basic commands AC_PATH_PROG([SH], [sh], [], [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([ECHO], [echo], [], [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([LS], [ls], [], [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([FILE], [file], [], [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([TOUCH], [touch], [], [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([MKDIR], [mkdir], [], [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([RMDIR], [rmdir], [], [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([CP], [cp], [], [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([RM], [rm], [], [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([MV], [mv], [], [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([LN], [ln], [], [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([CAT], [cat], [], [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([SED], [sed], [], [/usr/xpg4/bin:$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([UNAME], [uname], [], [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([WHOAMI], [whoami], [], [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([DATE], [date], [], [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([ID], [id], [], [/usr/xpg4/bin:$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([PS], [ps], [], [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([MAIL], [mail], [], [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) # Check for awk #AC_PROG_AWK AC_PATH_PROG([AWK], [awk], [], [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([GAWK], [gawk],, [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([NAWK], [nawk],, [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) # Check for grep AC_PATH_PROG([GREP], [grep], [], [/usr/xpg4/bin:$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PROG_EGREP AC_PROG_FGREP # Check for advanced commands AC_PATH_PROG([CHMOD], [chmod],, [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([CHOWN], [chown],, [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([CHGRP], [chgrp],, [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([USERADD], [useradd],, [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([USERDEL], [userdel],, [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([GROUPADD], [groupadd],, [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([GROUPDEL], [groupdel],, [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([PW], [pw],, [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) AC_PATH_PROG([CRONTAB], [crontab],, [$PATH:/bin:/sbin:/usr/bin:/usr/sbin]) # Set CFLAGS, LDFLAGS, LIBS etc if test "$CFLAGS" = "" ; then CFLAGS="-O2 -g -Wall" fi echo "$CFLAGS" | $GREP -q '\-Wall' if test $? -ne 0 ; then CFLAGS="$CFLAGS -Wall" fi #CFLAGS=`echo "$CFLAGS" | sed -e 's/-O2/-O3/'` echo "$CFLAGS" | $GREP -q '\-I \/usr\/local\/include' if test $? -ne 0 ; then CFLAGS="$CFLAGS -I /usr/local/include" fi echo "$CFLAGS" | $GREP -q '\-I \~\/include' if test $? -ne 0 ; then CFLAGS="$CFLAGS -I ~/include" fi echo "$LDFLAGS" | $GREP -q '\-L \/usr\/local\/lib' if test $? -ne 0 ; then LDFLAGS="$LDFLAGS -L /usr/local/lib" fi echo "$LDFLAGS" | $GREP -q '\-L ~\/lib' if test $? -ne 0 ; then LDFLAGS="$LDFLAGS -L ~/lib" fi if test "$LIBS" != "" ; then LIBS=`echo "$LIBS" | sed -e 's/^ *//' -e 's/ *$//'` LIBS=`echo "$LIBS" | sed -e 's/[[:space:]]\{2,\}/ /g'` fi #echo "CFLAGS: $CFLAGS - LIBS: $LIBS - LDFLAGS: $LDFLAGS" # Checks for libraries. AC_SEARCH_LIBS(crypt, [c descrypt crypt], [], [], []) AC_SEARCH_LIBS(socket, [c socket], [], [], []) AC_SEARCH_LIBS(gethostbyname, [c nsl], [], [], []) AC_SEARCH_LIBS(gethostbyname2, [c nsl], [], [], []) AC_SEARCH_LIBS(seteuid, [c nsl], [], [], []) # Ares if test "x$ares_enable" = "xyes" ; then AC_SEARCH_LIBS(ares_init, [cares ares nlares], [have_ares=yes], [have_ares=no], []) if test "x$have_ares" = "xno" ; then echo "A ares compatible library is required. You should install either ares or c-ares." echo "c-ares is preferred, it can be found on http://daniel.haxx.se/projects/c-ares/" echo "If you want binaries have a look at http://filearchive.night-light.net/" echo "If you know what the consequences are but still dont want ares you can" echo "disable ares with --disable-ares" echo "I DO NOT GIVE SUPPORT ON PROBLEMES CAUSED BY BINARIES COMPILED WITHOUT ARES!" exit 1 fi fi # SSL support if test "x$ssl_support" = "xyes" ; then AC_SEARCH_LIBS(CRYPTO_new_ex_data, [crypto], AC_SEARCH_LIBS(SSL_read, ssl, [have_ssl=yes], [have_ssl=no], []), [have_ssl=no], []) if test "x$have_ssl" = "xno" ; then echo "OpenSSL not found! Install openssl and run configure again!" echo "If you really want to use ircproxy without SSL support" echo "run configure --disable-ssl" exit 1 fi else AC_MSG_RESULT([WARNING! SSL support is disabled.]) fi # Memdebug if test "x$memdebug" = "xyes" ; then AC_SEARCH_LIBS(memalloc, [memcalls], [have_memcalls=yes], [have_memcalls=no], []) #if test "x$have_memcalls" = "xno" ; then # echo "memcalls not found! Install memcalls and run configure again!" # echo "If you really want to use ircproxy without memory debugging" # echo "run configure without --enable-memdebug" # exit 1 #fi fi # FDdebug if test "x$fddebug" = "xyes" ; then AC_SEARCH_LIBS(openfd, [fdcalls], [have_fdcalls=yes], [have_fdcalls=no], []) #if test "x$have_fdcalls" = "xno" ; then # echo "fdcalls library not found! Install fdcalls and run configure again!" # echo "If you really want to use ircproxy without file descriptor debugging" # echo "run configure without --enable-fddebug" # exit 1 #fi fi # Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS([ \ sys/types.h \ sys/param.h \ limits.h \ stdarg.h \ errno.h \ ctype.h \ netinet/in.h \ stdio.h \ stdlib.h \ sys/time.h \ sys/stat.h \ sys/uio.h \ fcntl.h \ sys/ioctl.h \ sys/filio.h \ unistd.h \ string.h \ signal.h \ arpa/inet.h \ sys/socket.h \ netdb.h \ arpa/nameser.h \ assert.h \ crypt.h \ sys/sysctl.h \ pwd.h \ shadow.h \ userpw.h \ hpsecurity.h \ prot.h \ ]) AC_HEADER_TIME if test "x$ares_enable" = "xyes" ; then AC_CHECK_HEADERS([ares.h ares_version.h]) fi if test "x$ssl_support" = "xyes" ; then AC_CHECK_HEADERS([openssl/crypto.h openssl/x509.h openssl/rand.h openssl/pem.h openssl/ssl.h openssl/err.h openssl/bio.h]) fi if test "x$memdebug" = "xyes" ; then AC_CHECK_HEADERS([memcalls.h]) fi if test "x$fddebug" = "xyes" ; then AC_CHECK_HEADERS([fddebug.h]) fi # Checks for types. AC_C_CONST AC_CHECK_TYPES(size_t,,, [$ac_includes_default]) AC_CHECK_TYPES(pid_t,,, [$ac_includes_default]) AC_CHECK_TYPES(uid_t,,, [$ac_includes_default]) AC_CHECK_TYPES(gid_t,,, [$ac_includes_default]) AC_CHECK_TYPES(socklen_t,,, [$ac_includes_default #if HAVE_SYS_SOCKET_H #include #endif ]) # Checks for structures. AC_STRUCT_TM # Checks for library functions. #AC_FUNC_MALLOC AC_TYPE_SIGNAL AC_CHECK_FUNCS([ \ \ snprintf\ vsnprintf \ seteuid \ setegid \ strsignal \ crypt \ getpwnam \ getspnam \ getuserpw \ getspwnam \ inet_aton \ inet_ntoa \ inet_pton \ inet_ntop \ ares_cancel \ ares_cancelquery \ ares_version \ ]) # Check for declaration. AC_CHECK_DECLS(snprintf) AC_CHECK_DECLS(vsnprintf) AC_CHECK_DECLS(crypt,,, [$ac_includes_default #if HAVE_CRYPT_H #include #endif ]) AC_CHECK_DECLS(strsignal) SOURCES_MAIN="main.c syscalls.c strcalls.c irccalls.c nlstrsignal.c nlcrypt.c matchpass.c" SOURCES_CONF="conf.c access_conf.c listen_conf.c user_conf.c conn_conf.c autoop_conf.c" SOURCES_LISTEN="listen.c listen_io.c" SOURCES_CLIENT="client.c client_connection.c client_io.c client_auth.c client_handle.c client_notice.c client_parser.c" SOURCES_CONN="conn.c conn_io.c conn_connection.c conn_sendq.c conn_parser.c conn_ignore.c conn_log.c" SOURCES_CHAN="chan.c chan_user.c chan_mode.c" if test "x$memdebug" = "xyes" ; then if test "x$have_memcalls" = "xyes" ; then SOURCES_MAIN="${SOURCES_MAIN} memlist.c" else SOURCES_MAIN="${SOURCES_MAIN} memcalls.c memlist.c" fi fi if test "x$fddebug" = "xyes" ; then if test "x$have_fdcalls" = "xno" ; then SOURCES_MAIN="${SOURCES_MAIN} fdcalls.c" fi fi if test "x$ssl_support" = "xyes" ; then SOURCES_MAIN="${SOURCES_MAIN} ssl.c" SOURCES_CLIENT="${SOURCES_CLIENT} client_io_ssl.c" SOURCES_CONN="${SOURCES_CONN} conn_io_ssl.c" fi if test "x$identd" = "xyes" ; then SOURCES_CONF="${SOURCES_CONF} ident_conf.c" fi SOURCES="${SOURCES_MAIN} ${SOURCES_CONF} ${SOURCES_LISTEN} ${SOURCES_CLIENT} ${SOURCES_CONN} ${SOURCES_CHAN}" if test "x$identd" = "xyes" ; then SOURCES="${SOURCES} ident_listen.c ident_conn.c" fi AC_SUBST(SOURCES, [$SOURCES]) uname=`uname` AC_MSG_CHECKING(for OS type) case "$uname" in *BSD) AC_MSG_RESULT($uname found. Using BSD routines.) AC_DEFINE(OS_BSD, 1, [BSD]) ;; Linux) AC_MSG_RESULT($uname found. Using Linux routines.) AC_DEFINE(OS_LINUX, 1, [Linux]) ;; Solaris) AC_MSG_RESULT($uname found. Using Solaris routines.) AC_DEFINE(OS_SOLARIS, 1, [Solaris]) ;; SunOS) AC_MSG_RESULT($uname found. Using Solaris routines.) AC_DEFINE(OS_SOLARIS, 1, [Solaris]) ;; AIX) AC_MSG_RESULT($uname found. Using AIX routines.) AC_DEFINE(OS_AIX, 1, [AIX]) ;; HP-UX) AC_MSG_RESULT($uname found. Using HP-UX routines.) AC_DEFINE(OS_HPUNIX, 1, [HP-UX]) ;; OSF1) AC_MSG_RESULT($uname found. Using OSF1 routines.) AC_DEFINE(OS_OSF1, 1, [OSF1]) ;; *) AC_MSG_RESULT($uname found. Using Generic routines.) AC_DEFINE(OS_GENERIC, 1, [Generic]) ;; esac AC_OUTPUT() AC_MSG_CHECKING(for working POSIX non-blocking) AC_TRY_RUN([ #include "config.h" #include #include #include #include #include #include #include #include #if OS_BSD || OS_LINUX #define recvfrom_addrlen_type socklen_t #elif OS_SOLARIS #define recvfrom_addrlen_type socklen_t #elif OS_AIX #define recvfrom_addrlen_type int #elif OS_HPUNIX #define recvfrom_addrlen_type int #elif OS_OSF1 #define recvfrom_addrlen_type int #else #define recvfrom_addrlen_type socklen_t #endif #define ERROR -1 #define RECVBUFFERLEN 1024 void alarm_handler(int Signal); void alarm_handler(int Signal) { perror("blocking!"); exit(1); } int main(int argc, char **argv); int main(int argc, char **argv) { signed long int Result = 0; signed long int FD = 0; unsigned long int Flags = 0; char RecvBuffer[RECVBUFFERLEN+1] = ""; struct sockaddr SockAddr; recvfrom_addrlen_type SockAddrLen = sizeof(SockAddr); Result = socket(AF_INET, SOCK_DGRAM, 0); if (Result <= ERROR) { perror("socket()"); exit(1); } FD = Result; Result = fcntl(FD, F_GETFL); if (Result <= ERROR) { perror("fcntl() F_GETFL"); close(FD); exit(1); } Flags = Result; #ifdef O_NONBLOCK Flags |= O_NONBLOCK; #else perror("O_NONBLOCK not defined"); close(FD); exit(1); #endif Result = fcntl(FD, F_SETFL, Flags); if (Result <= ERROR) { perror("fcntl() F_SETFL"); close(FD); exit(1); } signal(SIGALRM, alarm_handler); alarm(2); recvfrom(FD, &RecvBuffer, RECVBUFFERLEN, 0, &SockAddr, &SockAddrLen); alarm(0); printf("yes\n"); close(FD); exit(0); } ], [AC_DEFINE([NBLOCK_POSIX], [], [POSIX non-blocking])], [AC_MSG_RESULT(cant compile)]) AC_MSG_CHECKING(for working BSD non-blocking) AC_TRY_RUN([ #include "config.h" #include #include #include #include #include #include #include #include #if OS_BSD || OS_LINUX #define recvfrom_addrlen_type socklen_t #elif OS_SOLARIS #define recvfrom_addrlen_type socklen_t #elif OS_AIX #define recvfrom_addrlen_type int #elif OS_HPUNIX #define recvfrom_addrlen_type int #elif OS_OSF1 #define recvfrom_addrlen_type int #else #define recvfrom_addrlen_type socklen_t #endif #define ERROR -1 #define RECVBUFFERLEN 1024 void alarm_handler(int Signal); void alarm_handler(int Signal) { perror("blocking!"); exit(1); } int main(int argc, char **argv); int main(int argc, char **argv) { signed long int Result = 0; signed long int FD = 0; unsigned long int Flags = 0; char RecvBuffer[RECVBUFFERLEN+1] = ""; struct sockaddr SockAddr; recvfrom_addrlen_type SockAddrLen = sizeof(SockAddr); Result = socket(AF_INET, SOCK_DGRAM, 0); if (Result <= ERROR) { perror("socket()"); exit(1); } FD = Result; Result = fcntl(FD, F_GETFL); if (Result <= ERROR) { perror("fcntl() F_GETFL"); close(FD); exit(1); } Flags = Result; #ifdef O_NDELAY Flags |= O_NDELAY; #else perror("O_NDELAY not defined"); close(FD); exit(1); #endif Result = fcntl(FD, F_SETFL, Flags); if (Result <= ERROR) { perror("fcntl() F_SETFL"); close(FD); exit(1); } signal(SIGALRM, alarm_handler); alarm(2); recvfrom(FD, &RecvBuffer, RECVBUFFERLEN, 0, &SockAddr, &SockAddrLen); alarm(0); printf("yes\n"); close(FD); exit(0); } ], [AC_DEFINE([NBLOCK_BSD], [], [BSD non-blocking])], [AC_MSG_RESULT(cant compile)]) AC_MSG_CHECKING(for working SysV non-blocking) AC_TRY_RUN([ #include "config.h" #include #include #include #include #include #if HAVE_SYS_FILIO_H #include #endif #include #include #include #include #if OS_BSD || OS_LINUX #define recvfrom_addrlen_type socklen_t #elif OS_SOLARIS #define recvfrom_addrlen_type socklen_t #elif OS_AIX #define recvfrom_addrlen_type int #elif OS_HPUNIX #define recvfrom_addrlen_type int #elif OS_OSF1 #define recvfrom_addrlen_type int #else #define recvfrom_addrlen_type socklen_t #endif #define ERROR -1 #define RECVBUFFERLEN 1024 void alarm_handler(int Signal); void alarm_handler(int Signal) { perror("blocking!"); exit(1); } int main(int argc, char **argv); int main(int argc, char **argv) { signed long int Result = 0; signed long int FD = 0; unsigned long int True = 1; char RecvBuffer[RECVBUFFERLEN+1] = ""; struct sockaddr SockAddr; recvfrom_addrlen_type SockAddrLen = sizeof(SockAddr); Result = socket(AF_INET, SOCK_DGRAM, 0); if (Result <= ERROR) { perror("socket()"); exit(1); } FD = Result; Result = ioctl(FD, FIONBIO, &True); if (Result <= ERROR) { perror("ioctl()"); close(FD); exit(1); } signal(SIGALRM, alarm_handler); alarm(2); recvfrom(FD, &RecvBuffer, RECVBUFFERLEN, 0, &SockAddr, &SockAddrLen); alarm(0); printf("yes\n"); close(FD); exit(0); } ], [AC_DEFINE([NBLOCK_SYSV], [], [SysV non-blocking])], [AC_MSG_RESULT(cant compile)]) AC_CONFIG_FILES( \ Makefile \ src/Makefile \ , \ [echo timestamp > stamp-h;] \ ) AC_OUTPUT(, [echo timestamp > stamp-h;]) echo "*-----------------------------------------------------------------------------" echo "*" echo "* The GNU autoconf script for ircproxy was successful!" echo "* This means ircproxy is likely to compile on this system." echo "* The installation prefix is: '$prefix'." echo "* If this is not where you want to install ircproxy," echo "* you must specify another with './configure --prefix=/path/to/install'." echo "* for example you can set the prefix to /usr, '/usr/local' or '$HOME'." if test "x${ares_enable}" = "xno" ; then echo "*" echo "* *** WARNING - ARES IS DISABLED! ***" echo "*" echo "* Running ircproxy without ares means blocking for each DNS lookup." echo "* It may cause ircproxy to not respond or getting disconnected for" echo "* ping timeouts." echo "* DO NOT EXPECT ANY HELP FROM ME ON BINARIES COMPILED WITHOUT ARES!" fi if test "x${ssl_support}" = "xno" ; then echo "*" echo "* *** WARNING - SSL SUPPORT IS DISABLED! ***" echo "*" echo "* Running ircproxy without SSL means no encryption of network traffic." echo "* Passwords are sent in plain text over the internet." echo "* This means hackers can easily optain your password using a network sniffer." fi echo "*" echo "* ircproxy is free, however donations are welcome and will help support" echo "* new versions." echo "* If you like ircproxy you can donate through PayPal to jonas@night-light.net" echo "*" echo "*-----------------------------------------------------------------------------"