mirror of
https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
synced 2025-10-29 09:52:35 +00:00
121 lines
3.4 KiB
Perl
Executable File
121 lines
3.4 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
|
|
use strict;
|
|
use warnings;
|
|
use diagnostics;
|
|
use Carp;
|
|
use Data::Dumper;
|
|
|
|
|
|
my @idhunks = split(' ', `id`);
|
|
my @hunks = grep { /uid=/ } @idhunks;
|
|
die ("Must be root to use this")
|
|
unless( $hunks[0] eq "uid=0(root)" );
|
|
@idhunks = undef;
|
|
@hunks = undef;
|
|
my $MgrHostname = "lanforge-srv";
|
|
|
|
my $config_v = "/home/lanforge/config.values";
|
|
# grab the config.values file
|
|
die ("Unable to find $config_v" )
|
|
unless ( -f $config_v);
|
|
|
|
my @configv_lines = `cat $config_v`;
|
|
die ("Probably too little data in config.values")
|
|
unless (@configv_lines > 5);
|
|
my %configv = ();
|
|
foreach my $line (@configv_lines) {
|
|
my ($key, $val) = $line =~ /^(\S+)\s+(.*)$/;
|
|
$configv{$key} = $val;
|
|
}
|
|
die ("Unable to parse config.values")
|
|
unless ((keys %configv) > 5);
|
|
die ("no mgt_dev in config.values")
|
|
unless defined $configv{'mgt_dev'};
|
|
print "Found mgt_dev $configv{'mgt_dev'}\n";
|
|
|
|
my $ipline = `ip -o a show $configv{"mgt_dev"}`;
|
|
#print "IPLINE[$ipline]\n";
|
|
my ($ip) = $ipline =~ / inet ([0-9.]+)(\/\d+)? /g;
|
|
die ("No ip found for mgt_dev")
|
|
unless ((defined $ip) && ($ip ne ""));
|
|
|
|
print "ip: $ip\n";
|
|
my @host_lines = `cat /etc/hosts`;
|
|
chomp (@host_lines);
|
|
@host_lines = ("127.0.0.1 localhost", @host_lines)
|
|
if (@host_lines < 1);
|
|
my $removed = 0;
|
|
for (my $i =$#host_lines-1; $i>=0; $i--) {
|
|
my $line = $host_lines[$i];
|
|
if ($line =~ /$MgrHostname/) {
|
|
splice(@host_lines, $i, 1);
|
|
$removed++;
|
|
}
|
|
if (($removed < 2) && ( $line eq "" || $line eq "\n")) {
|
|
splice(@host_lines, $i, 1);
|
|
$removed++;
|
|
}
|
|
}
|
|
@host_lines = (@host_lines, ("$ip $MgrHostname", "\n"));
|
|
my $dt = `date +%Y%m%d-%H%M%s`;
|
|
chomp $dt;
|
|
#print "dt[$dt]\n";
|
|
#print "cp /etc/hosts /etc/.hosts.$dt\n";
|
|
#print "=======================================\n";
|
|
#print join("\n", @host_lines);
|
|
#print "=======================================\n";
|
|
die ("Unable to write to /etc/hosts: $!")
|
|
unless open(my $fh, ">", "/etc/hosts");
|
|
print $fh join("\n", @host_lines);
|
|
close $fh;
|
|
|
|
#print "Updated /etc/hosts\n";
|
|
|
|
|
|
# grab the 0000-default.conf file
|
|
my @places_to_check = (
|
|
"/etc/apache2/apache2.conf",
|
|
"/etc/apache2/ports.conf",
|
|
"/etc/apache2/sites-available/0000-default.conf",
|
|
"/etc/httpd/conf/http.conf",
|
|
"/etc/httpd/conf/httpd.conf",
|
|
"/etc/httpd/conf.d/ssl.conf",
|
|
);
|
|
foreach my $file (@places_to_check) {
|
|
if ( -f $file) {
|
|
print "Checking $file...\n";
|
|
my @lines = `cat $file`;
|
|
chomp @lines;
|
|
# we want to match Listen 80$ or Listen 443 https$
|
|
# we want to replace with Listen lanforge-mgr:80$ or Listen lanforge-mgr:443 https$
|
|
@hunks = grep { /^\s*Listen\s+(?:80|443) */ } @lines;
|
|
if (@hunks) {
|
|
my $edited = 0;
|
|
my @newlines = ();
|
|
@hunks = (@hunks, "\n");
|
|
print "Something to change in $file\n";
|
|
print "These lines are interesting:\n";
|
|
print join("\n", @hunks);
|
|
foreach my $confline (@lines) {
|
|
if ($confline =~ /^\s*Listen\s+(?:80|443) */) {
|
|
$confline =~ s/Listen /Listen ${MgrHostname}:/;
|
|
print "$confline\n";
|
|
}
|
|
push @newlines, $confline;
|
|
$edited++ if ($confline =~ /# modified by lanforge/);
|
|
}
|
|
push(@newlines, "# modified by lanforge\n") if ($edited == 0);
|
|
|
|
die ($!) unless open($fh, ">", $file);
|
|
print $fh join("\n", @newlines);
|
|
close $fh;
|
|
}
|
|
else {
|
|
print "Nothing to change in $file\n";
|
|
}
|
|
}
|
|
} # ~for places_to_check
|
|
|
|
#
|