summaryrefslogtreecommitdiff
path: root/www/mod_v2h/files/add-module
diff options
context:
space:
mode:
Diffstat (limited to 'www/mod_v2h/files/add-module')
-rw-r--r--www/mod_v2h/files/add-module61
1 files changed, 61 insertions, 0 deletions
diff --git a/www/mod_v2h/files/add-module b/www/mod_v2h/files/add-module
new file mode 100644
index 000000000000..754fc6903924
--- /dev/null
+++ b/www/mod_v2h/files/add-module
@@ -0,0 +1,61 @@
+#!@@PERL@@
+
+# This was stolen from the Apache apxs script
+$CFG_SYSCONFDIR = "@@LOCAL@@/etc/apache2";
+$CFG_TARGET = "httpd";
+$name = "v2h";
+$dir = "libexec/apache2/";
+$t = "mod_v2h.so";
+
+push(@lmd, sprintf("LoadModule %-18s %s", "${name}_module", "$dir$t"));
+
+open(FP, "<$CFG_SYSCONFDIR/$CFG_TARGET.conf") || die("Couldn't open conf file");
+my $content = join('', <FP>);
+close(FP);
+
+if ($content !~ m|\n#?\s*LoadModule\s+|) {
+ error("Activation failed for custom $CFG_SYSCONFDIR/$CFG_TARGET.conf file.");
+ error("At least one `LoadModule' directive already has to exist.");
+ exit(1);
+}
+
+my $lmd;
+my $c = '';
+
+foreach $lmd (@lmd) {
+ if ($content !~ m|\n#?\s*$lmd|) {
+ $content =~ s|^(.*\n#?\s*LoadModule\s+[^\n]+\n)|$1$c$lmd\n|sg;
+ } else {
+ $content =~ s|^(.*\n)#?\s*$lmd[^\n]*\n|$1$c$lmd\n|sg;
+ }
+
+ $lmd =~ m|LoadModule\s+(.+?)_module.*|;
+ notice("[activating module `$1' in $CFG_SYSCONFDIR/$CFG_TARGET.conf]");
+}
+
+my $amd;
+
+foreach $amd (@amd) {
+ if ($content !~ m|\n#?\s*$amd|) {
+ $content =~ s|^(.*\n#?\s*AddModule\s+[^\n]+\n)|$1$c$amd\n|sg;
+ } else {
+ $content =~ s|^(.*\n)#?\s*$amd[^\n]*\n|$1$c$amd\n|sg;
+ }
+}
+
+if (@lmd or @amd) {
+ if (open(FP, ">$CFG_SYSCONFDIR/$CFG_TARGET.conf.new")) {
+ print FP $content;
+ close(FP);
+ system("cp $CFG_SYSCONFDIR/$CFG_TARGET.conf $CFG_SYSCONFDIR/$CFG_TARGET.conf.bak && " . "cp $CFG_SYSCONFDIR/$CFG_TARGET.conf.new $CFG_SYSCONFDIR/$CFG_TARGET.conf && " . "rm $CFG_SYSCONFDIR/$CFG_TARGET.conf.new");
+} else {
+ notice("unable to open configuration file");
+}
+
+}
+
+sub notice{
+ print STDERR "$_[0]\n";
+}
+
+