mirror of
				https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
				synced 2025-10-30 18:27:53 +00:00 
			
		
		
		
	WIP: script to reconfigure apache to listen on mgt_port etc
This commit is contained in:
		
							
								
								
									
										137
									
								
								reconfigure_apache.pl
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										137
									
								
								reconfigure_apache.pl
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,137 @@ | ||||
| #!/usr/bin/perl -w | ||||
| package main; | ||||
| use strict; | ||||
| use warnings; | ||||
| use feature qw(switch); | ||||
| use Data::Dumper; | ||||
| use Carp; | ||||
| $SIG{ __DIE__ } = sub { Carp::confess( @_ ) }; | ||||
| $SIG{ __WARN__ } = sub { Carp::confess( @_ ) }; | ||||
| #use File::IO; | ||||
| use Getopt::Long; | ||||
| use File::Copy qw(cp); | ||||
| use File::Temp qw(tempfile tempdir); | ||||
| use POSIX qw(strftime ceil floor abs); | ||||
| #use MIME::Base64 qw(); | ||||
| use Cwd; | ||||
| $| = 1; | ||||
|  | ||||
| =pod | ||||
| ################################################################################ | ||||
| #                                                                              # | ||||
| #  Use this script to reconfigure apache Listen directives so that it only     # | ||||
| #  listens on ports 127.0.0.1:80 and mgt_dev:80. This is to allow lanforge     # | ||||
| #  versions of nginx to listen on managed ports without conflict. Run this     # | ||||
| #  script every time you run /home/lanforge/lfconfig.                          # | ||||
| #                                                                              # | ||||
| ################################################################################ | ||||
| =cut | ||||
|  | ||||
| our $is_fedora=0; | ||||
| our $is_centos=0; | ||||
| our $is_ubuntu=0; | ||||
|  | ||||
| sub error { | ||||
|    for (@_) { | ||||
|       print STDERR "$_\n"; | ||||
|    } | ||||
| } | ||||
|  | ||||
| if (!-f "/etc/os-release") { | ||||
|    die("no /etc/os-release, bye."); | ||||
| } | ||||
| my @os_release_lines = `cat /etc/os-release`; | ||||
| my @os_name_lines = grep {/^NAME=/} @os_release_lines; | ||||
| die ("Unknown OS") if (@os_name_lines < 1); | ||||
|  | ||||
| if ($os_name_lines[0] =~ /CentOS( Linux)?/) { | ||||
|    $is_centos = 1; | ||||
| } | ||||
| elsif ($os_name_lines[0] =~ /\bFedora\b/) { | ||||
|    $is_fedora = 1; | ||||
| } | ||||
| elsif ( $os_name_lines[0] =~ /\bUbuntu\b/) { | ||||
|    $is_ubuntu = 1; | ||||
| } | ||||
| else { | ||||
|    die("Unknown OS: $os_name_lines[0]"); | ||||
| } | ||||
|  | ||||
| my @new_httpconf_lines = (); | ||||
| if ((! -d "/home/lanforge") || (! -f "/home/lanforge/config.values" )) { | ||||
|    error("* Unable to find /home/lanforge/config.values. Not configuring apache."); | ||||
|    return; | ||||
| } | ||||
| my @config_values = `cat /home/lanforge/config.values`; | ||||
| my @mgt_dev_lines = grep {/^mgt_dev/} @config_values; | ||||
| if (@mgt_dev_lines != 1) { | ||||
|    error("* mgt_dev misconfigured in config.values. Not configuring apache."); | ||||
|    return; | ||||
| } | ||||
| my $mgt_dev = (split(/\s+/, $mgt_dev_lines[0]))[0]; | ||||
| if (!(defined $mgt_dev) || $mgt_dev eq "") { | ||||
|    err("* Unable to find mgt_dev value. Not configuring apache."); | ||||
|    return; | ||||
| } | ||||
|  | ||||
| our $new_include; | ||||
| our $httpconf; | ||||
|  | ||||
| # if we have a Listen directive in apache, comment it out and create an include | ||||
| sub collectListenLines { # original httpd.conf, listen.conf | ||||
|    my $conf = shift; | ||||
|    my $new_include = shift; | ||||
|    my @httpconf_lines = `cat $conf`; | ||||
|    chomp(@httpconf_lines); | ||||
|    my @new_httpconf_lines = (); | ||||
|    my @new_listen_lines = (); | ||||
|    my @listen_lines = grep {/^Listen /} @httpconf_lines; | ||||
|    chomp(@listen_lines); | ||||
|    my @include_lines = grep {m|^Include conf/lf_listen.conf$|} @httpconf_lines; | ||||
|    chomp(@include_lines); | ||||
|  | ||||
|    if (@listen_lines < 1 ) { | ||||
|       error(" * Apache misconfigured? No Listen directive and not include lf_listen.conf. Not modifying."); | ||||
|       return; | ||||
|    } | ||||
|  | ||||
|    for my $line (@httpconf_lines) { | ||||
|       if ($line =~ /^Listen /) { | ||||
|          $line = "# Moved to lf_listen.conf: $line"; | ||||
|          push(@listen_lines, "# $line"); | ||||
|       } | ||||
|       push(@new_httpconf_lines, $line); | ||||
|    } | ||||
| } # ~collectListenLines | ||||
|  | ||||
| ## ## ## ## ## ## ## ## ## ## | ||||
| ##          M A I N        ## | ||||
| ## ## ## ## ## ## ## ## ## ## | ||||
|  | ||||
| if ($is_fedora || $is_centos) { | ||||
|    die("* Unable to find /etc/httpd/conf/httpd.conf. Not configuring apache.") | ||||
|       unless( -f "/etc/httpd/conf/httpd.conf" ); | ||||
|  | ||||
|    $::new_include = "/etc/httpd/conf/lf_listen.conf"; | ||||
|    $::httpconf = "/etc/httpd/conf/httpd.conf"; | ||||
|    if (-f $new_include) { | ||||
|       print(" # lf_listen.conf already created, not creating\n"); | ||||
|       exit 0; | ||||
|    } | ||||
|    collectListenLines($::httpconf, $::new_include); | ||||
|    exit 0; | ||||
| } # ~fedora | ||||
| elsif ($is_ubuntu) { | ||||
|    $::new_include = "/etc/apache2/lf_listen.conf"; | ||||
|    $::httpconf = "/etc/apache2/ports.conf"; | ||||
|    die("* Unable to find $::httpconf. Not configuring apache.") | ||||
|       unless ( -f $::httpconf ); | ||||
|  | ||||
|    collectListenLines($::httpconf, $::new_include); | ||||
| } | ||||
| else { | ||||
|    error("Configuring apache mgt port not configured on other systems."); | ||||
|    exit 1; | ||||
| } | ||||
|  | ||||
| # eof | ||||
		Reference in New Issue
	
	Block a user
	 Jed Reynolds
					Jed Reynolds