aboutsummaryrefslogtreecommitdiffstats
path: root/lib/AdminPanel/Module/Proxy.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/AdminPanel/Module/Proxy.pm')
-rw-r--r--lib/AdminPanel/Module/Proxy.pm396
1 files changed, 0 insertions, 396 deletions
diff --git a/lib/AdminPanel/Module/Proxy.pm b/lib/AdminPanel/Module/Proxy.pm
deleted file mode 100644
index ff2af3e..0000000
--- a/lib/AdminPanel/Module/Proxy.pm
+++ /dev/null
@@ -1,396 +0,0 @@
-# vim: set et ts=4 sw=4:
-#*****************************************************************************
-#
-# Copyright (c) 2013-2015 Matteo Pasotti <matteo.pasotti@gmail.com>
-#
-# 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 ManaTools::Module::Proxy;
-
-use Modern::Perl '2011';
-use autodie;
-use Moose;
-use POSIX qw(ceil);
-use English;
-use utf8;
-
-use yui;
-use ManaTools::Shared qw(trim);
-use ManaTools::Shared::GUI;
-use ManaTools::Shared::Proxy;
-
-# TODROP but provides network::network
-use lib qw(/usr/lib/libDrakX);
-use network::network;
-use MDK::Common::System qw(getVarsFromSh);
-
-extends qw( ManaTools::Module );
-
-
-has '+icon' => (
- default => "/usr/share/mcc/themes/default/drakproxy-mdk.png"
-);
-
-has '+name' => (
- default => "Proxymanager",
-);
-
-=head1 VERSION
-
-Version 1.0.0
-
-=cut
-
-our $VERSION = '1.0.0';
-
-has 'dialog' => (
- is => 'rw',
- init_arg => undef
-);
-
-has 'table' => (
- is => 'rw',
- init_arg => undef
-);
-
-has 'proxy' => (
- is => 'rw',
- isa => 'HashRef',
- builder => "init_proxy"
-);
-
-has 'sh_gui' => (
- is => 'rw',
- init_arg => undef,
- builder => '_SharedUGUIInitialize'
-);
-
-has 'loc' => (
- is => 'rw',
- init_arg => undef,
- builder => '_localeInitialize'
-);
-
-
-sub _localeInitialize {
- my $self = shift();
-
- # TODO fix domain binding for translation
- $self->loc(ManaTools::Shared::Locales->new(domain_name => 'drakx-net') );
- # TODO if we want to give the opportunity to test locally add dir_name => 'path'
-}
-
-sub _SharedUGUIInitialize {
- my $self = shift();
-
- $self->sh_gui( ManaTools::Shared::GUI->new() );
-}
-
-#=============================================================
-
-=head2 init_proxy
-
-=head3 DESCRIPTION
-
-=over 4
-
-=item This method does initialize the proxy attribute provided by this class.
-
-=item $self->proxy is structured as follows:
-
-=over 6
-
-=item B<no_proxy> the string with the list of the excluded domains/addresses
-
-=item B<http_proxy> the url of the http proxy
-
-=item B<https_proxy> the url of the https proxy
-
-=item B<ftp_proxy> the url for the ftp proxy
-
-=back
-
-=back
-
-=cut
-
-#=============================================================
-
-sub init_proxy {
- my %p = (
- 'no_proxy' => '',
- 'http_proxy' => '',
- 'https_proxy' => '',
- 'ftp_proxy' => '',
- );
- return \%p;
-}
-
-#=============================================================
-
-=head2 start
-
-=head3 INPUT
-
- $self: this object
-
-=head3 DESCRIPTION
-
- This method extends Module::start and is invoked to
- start proxy manager
-
-=cut
-
-#=============================================================
-sub start {
- my $self = shift;
-
- if ($EUID != 0) {
- $self->sh_gui->warningMsgBox({
- title => $self->name,
- text => $self->loc->N("root privileges required"),
- });
- return;
- }
-
- $self->_manageProxyDialog();
-};
-
-#=============================================================
-
-=head2 ask_for_X_restart
-
-=head3 INPUT
-
- $self: this object
-
-=head3 DESCRIPTION
-
- This method shows a message box warning the user
- that a X server restart is required
-
-=cut
-
-#=============================================================
-
-sub ask_for_X_restart {
- my $self = shift;
-
- $self->sh_gui->warningMsgBox({title=>$self->loc->N("X Restart Required"),text=>$self->loc->N("You need to log out and back in again for changes to take effect"),richtext=>1});
-}
-
-#=============================================================
-
-=head2 validate
-
-=head3 INPUT
-
- $self: this object
-
- $proxy: the hash containing what returns from getVarFromSh
- eventually modified by the user
-
-=head3 DESCRIPTION
-
- This method returns true if the each value match
- certain conditions like the leading http:// for http proxy
- or https:// for the https proxy, etc.
-
- $proxy is passed by reference thus $proxy->{no_proxy} value
- is sanitized (trimmed).
-
-=cut
-
-#=============================================================
-
-sub validate {
- my $self = shift;
- my $proxy = shift;
- my $retval = 1;
- $proxy->{no_proxy} =~ s/\s//g;
- # using commas rather than slashes
- if($proxy->{http_proxy} !~ m,^($|http://),)
- {
- $self->sh_gui->warningMsgBox({title=>'Error',text=>$self->loc->N("Proxy should be http://..."),richtext=>0});
- $retval = 0;
- }
- if($proxy->{https_proxy} !~ m,^($|https?://),)
- {
- $self->sh_gui->warningMsgBox({title=>'Error',text=>$self->loc->N("Proxy should be http://... or https://..."),richtext=>0});
- $retval = 0;
- }
- if($proxy->{ftp_proxy} !~ m,^($|ftp://|http://),)
- {
- $self->sh_gui->warningMsgBox({title=>'Error',text=>$self->loc->N("URL should begin with 'ftp:' or 'http:'"),richtext=>0});
- $retval = 0;
- }
- return $retval;
-}
-
-sub _manageProxyDialog {
- my $self = shift;
-
- ## TODO fix for manatools
- my $appTitle = yui::YUI::app()->applicationTitle();
- my $appIcon = yui::YUI::app()->applicationIcon();
- ## set new title to get it in dialog
- my $newTitle = $self->loc->N("Proxies configuration");
- yui::YUI::app()->setApplicationTitle($newTitle);
-
- my $factory = yui::YUI::widgetFactory;
- my $optional = yui::YUI::optionalWidgetFactory;
-
- my $label_width = 25;
- my $inputfield_width = 45;
- # getVarsFromSh returns an empty hash if no vars are defined
- # possible alternatives:
- # . Config::Auto::parse
- my $proxy_curr_settings = { getVarsFromSh('/etc/profile.d/proxy.sh') };
- my $httpsProxyEqualToHttpProxy = 0;
- if((defined($proxy_curr_settings->{http_proxy}) && defined($proxy_curr_settings->{https_proxy}))&&
- (($proxy_curr_settings->{http_proxy} eq $proxy_curr_settings->{https_proxy}) &&
- ($proxy_curr_settings->{http_proxy} ne ""))){
- $httpsProxyEqualToHttpProxy = 1;
- }
-
- #
- # @layout
- #
- # +------------------------------+
- # | +------------+-------------+ |
- # | |LABELS | VALUES | |
- # | | | | |
- # | | | | |
- # | | | | |
- # | +------------+-------------+ |
- # +------------------------------+
-
- $self->dialog($factory->createMainDialog());
- my $layout = $factory->createVBox($self->dialog);
-
- my $hbox_header = $factory->createHBox($layout);
- my $headLeft = $factory->createHBox($factory->createLeft($hbox_header));
- my $headRight = $factory->createHBox($factory->createRight($hbox_header));
-
- my $logoImage = $factory->createImage($headLeft, $appIcon);
- my $labelAppDescription = $factory->createLabel($headRight,$newTitle);
- $logoImage->setWeight($yui::YD_HORIZ,0);
- $labelAppDescription->setWeight($yui::YD_HORIZ,3);
-
- # app description
- my $hbox_content = $factory->createHBox($layout);
- $factory->createLabel($hbox_content, $self->loc->N("Here you can set up your proxies configuration (eg: http://my_caching_server:8080)"));
-
- $hbox_content = $factory->createHBox($layout);
-
- my $vbox_labels_flags = $factory->createVBox($hbox_content);
- my $vbox_inputfields = $factory->createVBox($hbox_content);
-
- # http proxy section
- my $httpproxy_label = $factory->createLabel($vbox_labels_flags, $self->loc->N("HTTP proxy"));
- my $http_proxy = $factory->createInputField($factory->createHBox($vbox_inputfields),"",0);
- $http_proxy->setValue($proxy_curr_settings->{http_proxy}) if(defined($proxy_curr_settings->{http_proxy}));
- $http_proxy->setWeight($yui::YD_HORIZ, 30);
-
- # flag to setup the https proxy with the same value of the http proxy
- my $ckbHttpEqHttps = $factory->createCheckBox($vbox_labels_flags, $self->loc->N("Use HTTP proxy for HTTPS connections"),$httpsProxyEqualToHttpProxy);
- $ckbHttpEqHttps->setNotify(1);
- # add a spacing as we have
- $factory->createLabel($factory->createHBox($vbox_inputfields)," ");
-
- # https proxy
- $factory->createLabel($vbox_labels_flags, $self->loc->N("HTTPS proxy"));
- my $https_proxy = $factory->createInputField($factory->createHBox($vbox_inputfields),"",0);
- $https_proxy->setValue($proxy_curr_settings->{https_proxy}) if(defined($proxy_curr_settings->{https_proxy}));
- $https_proxy->setWeight($yui::YD_HORIZ, 30);
-
- # ftp proxy
- $factory->createLabel($vbox_labels_flags, $self->loc->N("FTP proxy"));
- my $ftp_proxy = $factory->createInputField($factory->createHBox($vbox_inputfields),"",0);
- $ftp_proxy->setValue($proxy_curr_settings->{ftp_proxy}) if(defined($proxy_curr_settings->{ftp_proxy}));
- $ftp_proxy->setWeight($yui::YD_HORIZ, 30);
-
- # no-proxy list
- $factory->createLabel($vbox_labels_flags, $self->loc->N("No proxy for (comma separated list):"));
- my $no_proxy = $factory->createInputField($factory->createHBox($vbox_inputfields),"",0);
- $no_proxy->setValue($proxy_curr_settings->{no_proxy}) if(defined($proxy_curr_settings->{no_proxy}));
- $no_proxy->setWeight($yui::YD_HORIZ, 30);
-
- my $hbox_filler = $factory->createHBox($layout);
- $factory->createSpacing($hbox_filler,$yui::YD_VERT,2);
-
- my $hbox_foot = $factory->createHBox($layout);
- my $vbox_foot_left = $factory->createVBox($factory->createLeft($hbox_foot));
- my $vbox_foot_right = $factory->createVBox($factory->createRight($hbox_foot));
- my $aboutButton = $factory->createPushButton($vbox_foot_left,$self->loc->N("&About"));
- my $cancelButton = $factory->createPushButton($vbox_foot_right,$self->loc->N("&Cancel"));
- my $okButton = $factory->createPushButton($vbox_foot_right,$self->loc->N("&OK"));
-
- # main loop
- while(1) {
- my $event = $self->dialog->waitForEvent();
- my $eventType = $event->eventType();
-
- #event type checking
- if ($eventType == $yui::YEvent::CancelEvent) {
- last;
- }
- elsif ($eventType == $yui::YEvent::WidgetEvent) {
-### Buttons and widgets ###
- my $widget = $event->widget();
- if ($widget == $cancelButton) {
- last;
- }elsif ($widget == $aboutButton) {
- $self->sh_gui->AboutDialog({
- name => $appTitle,
- version => $VERSION,
- credits => "Copyright (c) 2013-2014 by Matteo Pasotti",
- license => "GPLv2",
- description => $self->loc->N("Graphical manager for proxies"),
- authors => "Matteo Pasotti &lt;matteo.pasotti\@gmail.com&gt;"
- }
- );
- }elsif ($widget == $okButton) {
- # setup proxy attribute
- my %_proxy = (
- no_proxy => $no_proxy->value(),
- http_proxy => $http_proxy->value(),
- https_proxy => $https_proxy->value(),
- ftp_proxy => $ftp_proxy->value()
- );
- if($self->validate(\%_proxy)) {
- # validation succeded
- $self->proxy(\%_proxy);
- # save changes
- network::network::proxy_configure($self->proxy);
- $self->ask_for_X_restart();
- last;
- }
- # validation failed
- next;
- }elsif ($widget == $ckbHttpEqHttps){
- $https_proxy->setEnabled(!$ckbHttpEqHttps->isChecked());
- }
- }
- }
-
- $self->dialog->destroy() ;
-
- #restore old application title
- yui::YUI::app()->setApplicationTitle($appTitle);
-}
-
-1;