Author Topic: Dynamic zone code dump  (Read 19 times)

0 Members and 1 Guest are viewing this topic.

razwall

  • Administrator
  • Jr. Member
  • *****
  • Posts: 65
    • View Profile
Dynamic zone code dump
« on: May 01, 2025, 09:08:57 AM »
Zone based code rewritten in header.pl:

$swroot = '/razwall/config';
$zone_settings = "${swroot}/zones/settings";

# replace manual definition with dynamic zone data - RazWall:
#@zones = qw 'LAN DMZ LAN2 WAN';

%zonecolors;
%strings_zone;
%zone_ifaces;
@zones; # FETCH DYNAMIC ZONES - RAZWALL
@zones = &get_zones();

foreach $zone (@zones) {
open(ZF, "< $swroot/zones/$zone") or print "Unable to open zone file: $!\n";
@data = <ZF>;
close(ZF);

# @data sample:
# ZIFACE=eth0|eth1|eth2
# ZSTRING=LAN|PRETTY NAME|DUMB NAME
# ZCOLOR=green|red|blue|orange|yellow|... endless opportunitures
# ZTYPE=LAN|WAN|LOCAL
# ZDESC=Description of zone
# ZADDRESS=
# ZNETMASK=
# ZADDITIONAL=
# ZDHCP=off

foreach $kv (@data) {
($k,$v) = split(/=/, $kv);
${$k} = $v;
}
%zonecolors = ($zone => "$ZCOLOR");
%strings_zone = ($zone => "$ZSTRING");
%zone_ifaces = ($zone => "$ZIFACE");
%zone_type = ($zone => "$ZTYPE");
%zone_desc = ($zone => "$ZDESC");
%zone_address = ($zone => "$ZADDRESS");
%zone_netmask = ($zone => "$ZNETMASK");
%zone_additional = ($zone => "$ZADDITIONAL");
%zone_dhcp = ($zone => "$ZDHCP");
}

sub get_zones() { # ADDED FOR RAZWALL DYNAMIC ZONES
my $file = $zone_settings;
return read_config_file($file,'default');
}

sub read_config_file($$) {
    my $filename = shift;
    my $filename_default = shift;
    my @lines;
    if (! -e $filename) {
$filename = $filename_default;
    }
    open (FILE, "$filename");
    foreach my $line (<FILE>) {
    chomp($line);
    $line =~ s/[\r\n]//g;

    push(@lines, $line);
    }
    close (FILE);
    return @lines;
}

sub validzones() {
my @ret = ();
    my @zones = get_zones;

# USE NEW ZONE CONFIG PARAMS:
# %zonecolors = ($zone => "$ZCOLOR");
# %strings_zone = ($zone => "$ZSTRING");
# %zone_ifaces = ($zone => "$ZIFACE");
# %zone_type = ($zone => "$ZTYPE");

foreach $zone (@zones) {
if($zone_type{$zone} eq 'LAN') {
push(@ret, $zone);
next;
}
if( (!$zone_type{$zone} eq 'WAN') && (!$zone_type{$zone} eq 'LOCAL')) {
push(@ret, $zone);
next;
}
}
    return \@ret;
}
« Last Edit: May 01, 2025, 10:58:35 AM by razwall »

razwall

  • Administrator
  • Jr. Member
  • *****
  • Posts: 65
    • View Profile
Re: Dynamic zone code dump
« Reply #1 on: May 01, 2025, 09:12:50 AM »
razwall-netwiz.cgi zone rewrite:

my $zone_settings = "${swroot}/zones/settings";

my @ALL_ZONES = &get_zones; # FETCH DYNAMIC ZONES - RAZWALL
#INITIAIZE ARRAY
my @eth_keys=('CONFIG_TYPE');

foreach $zone (@ALL_ZONES) {
push(@eth_keys, "$zone_ADDRESS");
push(@eth_keys, "$zone_NETMASK");
push(@eth_keys, "$zone_NETADDRESS");
push(@eth_keys, "$zone_BROADCAST");
push(@eth_keys, "$zone_CIDR");
push(@eth_keys, "$zone_DEV");
push(@eth_keys, "$zone_IPS");
}

I will add more once I have completed step 3 of the networks setup.. It's a train wreck!