From: Bernhard Bitsch <Bernhard.Bitsch@gmx.de>
To: development@lists.ipfire.org
Subject: Aw: Re: [PATCH v2 5/6] zoneconf.cgi: Import network-functions.pl
Date: Sat, 20 Feb 2021 12:07:04 +0100 [thread overview]
Message-ID: <trinity-7fead884-46af-47bc-8be1-654b13d495c5-1613819224232@3c-app-gmx-bs64> (raw)
In-Reply-To: <31BA05BA-2B25-427A-970D-CA4AFBEE2C1B@ipfire.org>
[-- Attachment #1: Type: text/plain, Size: 4770 bytes --]
> Gesendet: Freitag, 19. Februar 2021 um 20:24 Uhr
> Von: "Michael Tremer" <michael.tremer(a)ipfire.org>
> An: "Leo-Andres Hofmann" <hofmann(a)leo-andres.de>
> Cc: development(a)lists.ipfire.org
> Betreff: Re: [PATCH v2 5/6] zoneconf.cgi: Import network-functions.pl
>
>
>
> > On 18 Feb 2021, at 14:30, Leo-Andres Hofmann <hofmann(a)leo-andres.de> wrote:
> >
> > Remove custom functions and use network-functions.pl instead to detect
> > the available zones correctly. This also removes the requirement that
> > a device must be assigned for a zone to become visible/configurable.
> >
> > Fixes: #12568
> >
> > Signed-off-by: Leo-Andres Hofmann <hofmann(a)leo-andres.de>
> > ---
> > html/cgi-bin/zoneconf.cgi | 37 ++++++++-----------------------------
> > 1 file changed, 8 insertions(+), 29 deletions(-)
> >
> > diff --git a/html/cgi-bin/zoneconf.cgi b/html/cgi-bin/zoneconf.cgi
> > index eb6cd0e66..9d01d06ce 100644
> > --- a/html/cgi-bin/zoneconf.cgi
> > +++ b/html/cgi-bin/zoneconf.cgi
> > @@ -25,6 +25,7 @@ use Scalar::Util qw(looks_like_number);
> > require '/var/ipfire/general-functions.pl';
> > require "${General::swroot}/lang.pl";
> > require "${General::swroot}/header.pl";
> > +require "${General::swroot}/network-functions.pl";
> >
> > ###--- HTML HEAD ---###
> > my $extraHead = <<END
> > @@ -152,8 +153,8 @@ my $restart_notice = "";
> > &Header::getcgihash(\%cgiparams);
> > &Header::showhttpheaders();
> >
> > -# Define all zones we will check for NIC assignment
> > -my @zones = ("red", "green", "orange", "blue");
> > +# Get all network zones that are currently enabled
> > +my @zones = Network::get_available_network_zones();
> >
> > # Get all physical NICs present
> > opendir(my $dh, "/sys/class/net/");
> > @@ -187,20 +188,6 @@ foreach (@nics) {
> > }
> > }
> >
> > -### Functions ###
> > -
> > -# Check if a zone is in IP mode or in PPP, PPPoE, VDSL, ... mode
> > -sub is_zonetype_ip {
> > - my $zone_type = shift;
> > - return ($zone_type eq "STATIC" || $zone_type eq "DHCP");
> > -}
> > -
> > -# Check if a zone is activated (device assigned)
> > -sub is_zone_activated {
> > - my $zone = uc shift;
> > - return ($ethsettings{"${zone}_DEV"} ne "");
> > -}
> > -
> > ### START PAGE ###
> > &Header::openpage($Lang::tr{"zoneconf title"}, 1, $extraHead);
> > &Header::openbigbox('100%', 'center');
> > @@ -211,7 +198,8 @@ if ($cgiparams{"ACTION"} eq $Lang::tr{"save"}) {
> > my %VALIDATE_nic_check = ();
> > my $VALIDATE_error = "";
> >
> > - foreach (@zones) {
> > + # Loop trough all known zones to ensure a complete configuration file is created
> > + foreach (@Network::known_network_zones) {
>
> Quite a good idea to have a global constant for this :)
>
> > my $uc = uc $_;
> > my $slave_string = "";
> > my $zone_mode = $cgiparams{"MODE $uc"};
> > @@ -383,14 +371,11 @@ END
> > foreach (@zones) {
> > my $uc = uc $_;
> >
> > - # If the zone is not activated, don't show it
> > - next unless is_zone_activated($_);
> > -
> > # If the red zone is in PPP mode, don't show a mode dropdown
> > if ($uc eq "RED") {
> > my $red_type = $ethsettings{"RED_TYPE"};
> >
> > - unless (is_zonetype_ip($red_type)) {
> > + unless (Network::is_red_mode_ip()) {
>
> Wouldn’t perl complain if this isn’t called with an “&”?
>
No. This is the normal call now. The syntax with '&' brings some (minimal) restrictions.
> > print "\t\t<td class='heading bold $_'>$uc ($red_type)</td>\n";
> >
> > next; # We're done here
> > @@ -436,12 +421,9 @@ foreach (@nics) {
> > my $uc = uc $_;
> > my $highlight = "";
> >
> > - # If the zone is not activated, don't show it
> > - next unless is_zone_activated($_);
> > -
> > if ($uc eq "RED") {
> > # VLANs/Bridging is not possible if the RED interface is set to PPP, PPPoE, VDSL, ...
> > - unless (is_zonetype_ip($ethsettings{"RED_TYPE"})) {
> > + unless (Network::is_red_mode_ip()) {
> > my $checked = "";
> >
> > if ($mac eq $ethsettings{"${uc}_MACADDR"}) {
> > @@ -519,12 +501,9 @@ my @stp_html = (); # form fields buffer (two rows)
> > foreach (@zones) { # load settings and prepare form elements for each zone
> > my $uc = uc $_;
> >
> > - # skip if zone is not activated
> > - next unless is_zone_activated($_);
> > -
> > # STP is not available if the RED interface is set to PPP, PPPoE, VDSL, ...
> > if ($uc eq "RED") {
> > - unless (is_zonetype_ip($ethsettings{"RED_TYPE"})) {
> > + unless (Network::is_red_mode_ip()) {
>
> Same as above.
>
> > push(@stp_html, ["\t\t<td></td>\n", "\t\t<td></td>\n"]); # print empty cell
> > next;
> > }
> > --
> > 2.27.0.windows.1
> >
>
> -Michael
next prev parent reply other threads:[~2021-02-20 11:07 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-18 14:30 [PATCH v2 1/6] zoneconf.cgi: Change NIC display order, improve code Leo-Andres Hofmann
2021-02-18 14:30 ` [PATCH v2 2/6] zoneconf.cgi: Modify CSS to allow additional rows Leo-Andres Hofmann
2021-02-18 14:30 ` [PATCH v2 3/6] zoneconf.cgi: Add STP options to GUI Leo-Andres Hofmann
2021-02-18 14:30 ` [PATCH v2 4/6] zoneconf.cgi: Add Javascript for new GUI elements Leo-Andres Hofmann
2021-02-18 14:30 ` [PATCH v2 5/6] zoneconf.cgi: Import network-functions.pl Leo-Andres Hofmann
2021-02-19 19:24 ` Michael Tremer
2021-02-20 11:07 ` Bernhard Bitsch [this message]
2021-02-21 10:35 ` Leo Hofmann
2021-02-18 14:30 ` [PATCH v2 6/6] zoneconf.cgi: Improve VLAN & STP inputs Leo-Andres Hofmann
2021-02-19 19:22 ` Michael Tremer
2021-02-21 10:38 ` Leo Hofmann
2021-02-21 19:06 ` Jonatan Schlag
2021-02-22 23:46 ` Leo Hofmann
2021-02-22 19:02 ` Michael Tremer
2021-02-22 22:27 ` Adolf Belka (ipfire)
2021-02-22 23:22 ` Leo Hofmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=trinity-7fead884-46af-47bc-8be1-654b13d495c5-1613819224232@3c-app-gmx-bs64 \
--to=bernhard.bitsch@gmx.de \
--cc=development@lists.ipfire.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox