/usr/share/perl5/EBox/CGI/Network/Ifaces.pm is in zentyal-network 2.3.13+quantal1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | # Copyright (C) 2008-2012 eBox Technologies S.L.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License, version 2, as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
package EBox::CGI::Network::Ifaces;
use strict;
use warnings;
use base 'EBox::CGI::ClientBase';
use EBox::Global;
use EBox::Gettext;
sub new # (error=?, msg=?, cgi=?)
{
my $class = shift;
my $self = $class->SUPER::new('title' => __('Network Interfaces'),
'template' => '/network/ifaces.mas',
@_);
bless($self, $class);
return $self;
}
sub _process
{
my $self = shift;
$self->{params} = $self->masonParameters();
}
sub masonParameters
{
my ($self) = @_;
my $net = EBox::Global->modInstance('network');
my $ifname = $self->param('iface');
($ifname) or $ifname = '';
my $tmpifaces = $net->ifaces();
my $iface = {};
if ($ifname eq '') {
$ifname = @{$tmpifaces}[0];
}
my @params = ();
my @bridges = ();
my @ifaces = ();
foreach (@{$tmpifaces}) {
my $ifinfo = {};
$ifinfo->{'name'} = $_;
$ifinfo->{'alias'} = $net->ifaceAlias($_);
push(@ifaces,$ifinfo);
($_ eq $ifname) or next;
$iface->{'name'} = $_;
$iface->{'alias'} = $net->ifaceAlias($_);
$iface->{'method'} = $net->ifaceMethod($_);
if ($net->ifaceIsExternal($_)) {
$iface->{'external'} = "yes";
} else {
$iface->{'external'} = "no";
}
if ($net->ifaceMethod($_) eq 'static') {
$iface->{'address'} = $net->ifaceAddress($_);
$iface->{'netmask'} = $net->ifaceNetmask($_);
$iface->{'virtual'} = $net->vifacesConf($_);
} elsif ($net->ifaceMethod($_) eq 'trunk') {
push(@params, 'vlans' => $net->ifaceVlans($_));
} elsif ($net->ifaceMethod($_) eq 'bridged') {
$iface->{'bridge'} = $net->ifaceBridge($_);
} elsif ($net->ifaceMethod($_) eq 'ppp') {
$iface->{'ppp_user'} = $net->ifacePPPUser($_);
$iface->{'ppp_pass'} = $net->ifacePPPPass($_);
}
}
my $externalWarning = 0;
if ($net->ifaceIsExternal($ifname)) {
$externalWarning = _externalWarning($ifname);
}
foreach my $bridge ( @{$net->bridges()} ) {
my $brinfo = {};
$brinfo->{'id'} = $bridge;
$brinfo->{'name'} = "br$bridge";
$brinfo->{'alias'} = $net->ifaceAlias("br$bridge");
push(@bridges, $brinfo);
}
push(@params, 'externalWarning' => $externalWarning);
push(@params, 'iface' => $iface);
push(@params, 'ifaces' => \@ifaces);
push(@params, 'bridges', => \@bridges);
return \@params;
}
sub _externalWarning
{
my ($iface) = @_;
my $req = Apache2::RequestUtil->request();
return 0 unless ($req);
my $remote = $req->connection->remote_ip();
my $command = "/sbin/ip route get to $remote "
. ' | head -n 1 | sed -e "s/.*dev \(\w\+\).*/\1/" ';
my $routeIface = `$command`;
return 0 unless ( $? == 0);
chop($routeIface);
if (defined($routeIface) and $routeIface eq $iface) {
return 1;
}
}
1;
|