]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - config/cfgroot/general-functions.pl
general-functions.pl: Do not check IPsec subnets for VTI/GRE connections
[people/pmueller/ipfire-2.x.git] / config / cfgroot / general-functions.pl
index 448f4c6355ba2dfe26a352f7e36e4d24c4ebcf90..5de4fb84bb006b6605f3be08fb92f3ba28788356 100644 (file)
@@ -29,6 +29,9 @@ $General::adminmanualurl = 'http://wiki.ipfire.org';
 
 require "${General::swroot}/network-functions.pl";
 
+# Function to remove duplicates from an array
+sub uniq { my %seen; grep !$seen{$_}++, @_ }
+
 #
 # log ("message") use default 'ipcop' tag
 # log ("tag","message") use your tag
@@ -526,7 +529,7 @@ sub checksubnets
        if($ownnet ne 'ipsec'){
                &General::readhasharray("${General::swroot}/vpn/config", \%ipsecconf);
                foreach my $key (keys %ipsecconf){
-                       if ($ipsecconf{$key}[11] ne ''){
+                       if ($ipsecconf{$key}[11] ne '' && $ipsecconf{$key}[36] eq ""){
                                foreach my $ipsecsubitem (split(/\|/, $ipsecconf{$key}[11])) {
                                        my ($ipsecip,$ipsecsub) = split (/\//, $ipsecconf{$key}[11]);
                                        $ipsecsub=&iporsubtodec($ipsecsub);
@@ -1255,7 +1258,54 @@ sub get_nameservers () {
        }
 
        # Return the array.
-       return @nameservers;
+       return &uniq(@nameservers);
+}
+
+# Function to format a string containing the amount of bytes to
+# something human-readable. 
+sub formatBytes {
+       # Private array which contains the units.
+       my @units = qw(B KB MB GB TB PB);
+
+       my $bytes = shift;
+       my $unit;
+
+       # Loop through the array of units.
+       foreach my $element (@units) {
+               # Assign current processed element to unit.
+               $unit = $element;
+
+               # Break loop if the bytes are less than the next unit.
+               last if $bytes < 1024;
+
+               # Divide bytes amount with 1024.
+               $bytes /= 1024;
+       }
+
+       # Return the divided and rounded bytes count and the unit.
+       return sprintf("%.2f %s", $bytes, $unit);
+}
+
+# Cloud Stuff
+
+sub running_in_cloud() {
+       return &running_on_ec2() || &running_on_gcp();
+}
+
+sub running_on_ec2() {
+       if (-e "/var/run/aws-instance-id") {
+               return 1;
+       }
+
+       return 0;
+}
+
+sub running_on_gcp() {
+       if (-e "/var/run/gcp-instance-id") {
+               return 1;
+       }
+
+       return 0;
 }
 
 1;