diff options
-rwxr-xr-x | configure | 288 |
1 files changed, 207 insertions, 81 deletions
@@ -21,6 +21,8 @@ $config{CONFIG_DIR} = resolve_directory($config{ME}."/conf"); # Configu $config{MODULE_DIR} = resolve_directory($config{ME}."/modules"); # Modules Directory $config{BINARY_DIR} = resolve_directory($config{ME}."/bin"); # Binary Directory $config{LIBRARY_DIR} = resolve_directory($config{ME}."/lib"); # Library Directory +chomp($config{HAS_GNUTLS} = `libgnutls-config --version 2>/dev/null | cut -c 1,2,3`); # GNUTLS Version. +$config{USE_GNUTLS} = "n"; # Use. $config{OPTIMITEMP} = "0"; # Default Optimisation Value $config{OPTIMISATI} = "-g"; # Optimisation Flag $config{NICK_LENGT} = "31"; # Default Nick Length @@ -84,6 +86,28 @@ if ($arg eq "-update") { } } +if ($arg eq "-modupdate") { + # Does the cache file exist? + if (!getcache()) { + # No, No it doesn't.. *BASH* + print "You have not run ./configure before. Please do this before trying to run the update script.\n"; + exit 0; + } else { + # We've Loaded the cache file and all our variables.. + print "Updating Files..\n"; + getosflags(); + $has_epoll = $config{HAS_EPOLL}; + $has_kqueue = $config{HAS_KQUEUE}; + if ($config{OSNAME} =~ /CYGWIN/) { + write_static_modules_makefile(); + } else { + write_dynamic_modules_makefile(); + } + print "Complete.\n"; + exit; + } +} + print "Checking for cache from previous configure...\n"; getcache(); print "Checking operating system version...\n"; @@ -171,6 +195,15 @@ if ($config{OSNAME} =~ /CYGWIN/) { $config{HAS_EPOLL} = $has_epoll; $config{HAS_KQUEUE} = $has_kqueue; +printf "Checking for libgnutls... "; +if (($config{HAS_GNUTLS}) && (($config{HAS_GNUTLS} >= 1.2) || ($config{HAS_GNUTLS} eq "y"))) { + print "yes\n"; + $config{HAS_GNUTLS} = "y"; +} else { + print "no\n"; + $config{HAS_GNUTLS} = "n"; +} + ################################################################################ # BEGIN INTERACTIVE PART # ################################################################################ @@ -259,6 +292,10 @@ if (!$chose_hiperf) yesno(THREADED_DNS,"Would you like to enable the experimental multi-threaded DNS lookup?"); print "\n"; +if ($config{HAS_GNUTLS} eq "y") { + yesno(USE_GNUTLS, "Would you like to enable SSL Support?"); +} + print "\nThe following questions will ask you for various figures relating\n"; print "To your IRCd install. Please note that these should usually be left\n"; print "as defaults unless you have a real reason to change them. If they\n"; @@ -526,6 +563,33 @@ print "\033[0mCompiler program:\033[1;32m\t\t$config{CC}\033[0m\n"; print "\033[0mStatic modules:\033[1;32m\t\t\t$config{STATIC_LINK}\033[0m\n"; print "\033[0mMultithread DNS:\033[1;32m\t\t$config{THREADED_DNS}\033[0m\n\n"; +if ($config{USE_GNUTLS} eq "y") { + `cp src/modules/extra/m_ssl_gnutls.cpp src/modules/m_ssl_gnutls.cpp`; + $failed = 0; + open(TMP, "key.pem") or $failed = 1; + close(TMP); + open(TMP, "cert.pem") or $failed = 1; + close(TMP); + if ($failed) { + print "SSL Certificates Not found, Generating.. \n\n +************************************************************* +* Generating the Private Key may take some time, go grab a * +* Coffee. Even better, to generate some more entropy if it * +* is taking a while, open another console and type du / a * +* few times and get that HD going :) Then answer the * +* Questions which follow. If you are unsure, just hit enter * +*************************************************************\n\n"; + system("certtool --generate-privkey --outfile key.pem"); + system("certtool --generate-self-signed --load-privkey key.pem --outfile cert.pem"); + print "\nCertificate generation complete, copying to config directory... "; + `cp key.pem $config{CONFIG_DIR}/key.pem`; + `cp cert.pem $config{CONFIG_DIR}/cert.pem`; + print "Done.\n\n"; + } else { + print "SSL Certificates found, skipping." + } +} + makecache(); writefiles(); @@ -849,91 +913,12 @@ EOF if ($config{OSNAME} =~ /CYGWIN/) { print "Writing static-build \033[1;32msrc/Makefile\033[0m\n"; write_static_makefile(); + write_static_modules_makefile(); } else { print "Writing dynamic-build \033[1;32msrc/Makefile\033[0m\n"; write_dynamic_makefile(); - } - - - # Modules Makefile.. - print "Writing \033[1;32msrc/modules/Makefile\033[0m\n"; - open(FILEHANDLE, ">src/modules/Makefile"); - print FILEHANDLE <<EOF; -# (C) ChatSpike development team -# Makefile by <Craig\@ChatSpike.net> -# Many Thanks to Andrew Church <achurch\@achurch.org> -# for assisting with making this work right. -# -# Automatically Generated by ./configure to add a modules -# please run ./configure --update - -all: \$(MODULES) - -EOF - - # Create a Modules List.. - my $modules = ""; - my $cmflags = ""; - my $liflags = ""; - if ($config{OSNAME} =~ /CYGWIN/) { - open(MODLIST,">include/modlist.h"); - print MODLIST <<HEADER; -// Generated automatically by configure. DO NOT EDIT! - -#ifndef __SYMBOLS__H_CONFIGURED__ -#define __SYMBOLS__H_CONFIGURED__ - -HEADER - foreach $i (@modlist) { - if ($i !~ /_static$/) { - print MODLIST "extern \"C\" void * $i\_init (void);\n"; - } - } - print MODLIST "\nstruct {const char *name; initfunc *value; } modsyms[] = {\n"; - } - foreach $i (@modlist) - { - if ($i !~ /_static$/) { - $cmflags = getcompilerflags("src/modules/m_".$i.".cpp"); - $liflags = getlinkerflags("src/modules/m_".$i.".cpp"); - if ($config{OSNAME} =~ /CYGWIN/) { - print FILEHANDLE <<EOCHEESE; -m_$i.o: m_$i\_static.cpp ../../include/modules.h ../../include/users.h ../../include/channels.h ../../include/base.h - \$(CC) -pipe -I../../include \$(FLAGS) $flags -export-dynamic -c m_$i\_static.cpp - mv m_$i\_static.o ../m_$i.o - -EOCHEESE - print "Configuring module [\033[1;32mm_$i.so\033[0m] for static linking... "; - open(MODULE,"<src/modules/m_".$i.".cpp") or die("Could not open m_".$i.".cpp"); - open(MUNGED,">src/modules/m_".$i."_static.cpp") or die("Could not create m_".$i."_static.cpp"); - while (chomp($a = <MODULE>)) { - $a =~ s/init_module/$i\_init/g; - $a =~ s/Srv/$i\Srv/g; - print MUNGED "$a\n"; - } - close(MODULE); - close(MUNGED); - print MODLIST <<EOENT; -{"m_$i.so",\&$i\_init}, -EOENT - print "done\n"; - } - else { - print FILEHANDLE <<EOCHEESE; -m_$i.so: m_$i.cpp ../../include/modules.h ../../include/users.h ../../include/channels.h ../../include/base.h ../../include/inspircd_config.h ../../include/inspircd.h ../../include/inspircd_io.h - \$(CC) -pipe -I../../include \$(FLAGS) $cmflags -export-dynamic -c m_$i.cpp - \$(CC) \$(FLAGS) -shared $liflags -o m_$i.so m_$i.o - \@-rm -f \$(MODPATH)/m_$i.so - install -v -m 0700 m_$i.so \$(MODPATH) - -EOCHEESE - } - } - } - if ($config{OSNAME} =~ /CYGWIN/) { - print MODLIST "{0}};\n\n#endif\n"; - close(MODLIST); + write_dynamic_modules_makefile(); } } @@ -993,6 +978,147 @@ sub yesno { return; } +sub write_static_modules_makefile { + # Modules Makefile.. + print "Writing \033[1;32msrc/modules/Makefile\033[0m\n"; + open(FILEHANDLE, ">src/modules/Makefile"); + +### +# Module Makefile Header +### + print FILEHANDLE <<EOF; +# (C) ChatSpike development team +# Makefile by <Craig\@ChatSpike.net> +# Many Thanks to Andrew Church <achurch\@achurch.org> +# for assisting with making this work right. +# +# Automatically Generated by ./configure to add a modules +# please run ./configure --update + +all: \$(MODULES) + +EOF +### +# End Module Makefile Header +### + +# Create a Modules List.. +my $modules = ""; +my $cmflags = ""; +my $liflags = ""; + +open(MODLIST,">include/modlist.h"); + +### +# Include File Header +### +print MODLIST <<HEADER; +// Generated automatically by configure. DO NOT EDIT! + +#ifndef __SYMBOLS__H_CONFIGURED__ +#define __SYMBOLS__H_CONFIGURED__ + +HEADER +### +# End Include File Header +### + +# Place Module List into Include +foreach $i (@modlist) { + if ($i !~ /_static$/) { + print MODLIST "extern \"C\" void * $i\_init (void);\n"; + } +} +print MODLIST "\nstruct {const char *name; initfunc *value; } modsyms[] = {\n"; + +### +# Build Module Crap +### +foreach $i (@modlist) +{ + if ($i !~ /_static$/) { + $cmflags = getcompilerflags("src/modules/m_".$i.".cpp"); + $liflags = getlinkerflags("src/modules/m_".$i.".cpp"); + + print FILEHANDLE <<EOCHEESE; + ### + # Write Entry to the MakeFile + ### +m_$i.o: m_$i\_static.cpp ../../include/modules.h ../../include/users.h ../../include/channels.h ../../include/base.h + \$(CC) -pipe -I../../include \$(FLAGS) $flags -export-dynamic -c m_$i\_static.cpp + mv m_$i\_static.o ../m_$i.o + +EOCHEESE + ### + # End Write Entry to the MakeFile + ### + print "Configuring module [\033[1;32mm_$i.so\033[0m] for static linking... "; + open(MODULE,"<src/modules/m_".$i.".cpp") or die("Could not open m_".$i.".cpp"); + open(MUNGED,">src/modules/m_".$i."_static.cpp") or die("Could not create m_".$i."_static.cpp"); + while (chomp($a = <MODULE>)) { + $a =~ s/init_module/$i\_init/g; + $a =~ s/Srv/$i\Srv/g; + print MUNGED "$a\n"; + } + close(MODULE); + close(MUNGED); + print MODLIST <<EOENT; +{"m_$i.so",\&$i\_init}, +EOENT + print "done\n"; + } +} +print MODLIST "{0}};\n\n#endif\n"; +close(MODLIST); +} + +sub write_dynamic_modules_makefile { + # Modules Makefile.. + print "Writing \033[1;32msrc/modules/Makefile\033[0m\n"; + open(FILEHANDLE, ">src/modules/Makefile"); + +### +# Module Makefile Header +### + print FILEHANDLE <<EOF; +# (C) ChatSpike development team +# Makefile by <Craig\@ChatSpike.net> +# Many Thanks to Andrew Church <achurch\@achurch.org> +# for assisting with making this work right. +# +# Automatically Generated by ./configure to add a modules +# please run ./configure --update + +all: \$(MODULES) + +EOF +### +# End Module Makefile Header +### + +# Create a Modules List.. +my $modules = ""; +my $cmflags = ""; +my $liflags = ""; + +foreach $i (@modlist) { + ### + # Write Entry to the MakeFile + ### + print FILEHANDLE <<EOCHEESE; +m_$i.so: m_$i.cpp ../../include/modules.h ../../include/users.h ../../include/channels.h ../../include/base.h ../../include/inspircd_config.h ../../include/inspircd.h ../../include/inspircd_io.h + \$(CC) -pipe -I../../include \$(FLAGS) $cmflags -export-dynamic -c m_$i.cpp + \$(CC) \$(FLAGS) -shared $liflags -o m_$i.so m_$i.o + \@-rm -f \$(MODPATH)/m_$i.so + install -v -m 0700 m_$i.so \$(MODPATH) + +EOCHEESE + ### + # End Write Entry to the MakeFile + ### +} +} + sub write_static_makefile { open(FH,">src/Makefile") or die("Could not write src/Makefile!"); |