summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xconfigure288
1 files changed, 207 insertions, 81 deletions
diff --git a/configure b/configure
index bd7230015..971ba6e10 100755
--- a/configure
+++ b/configure
@@ -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!");