summaryrefslogtreecommitdiffstats
path: root/perl-install
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install')
-rw-r--r--perl-install/standalone/drakhosts271
1 files changed, 0 insertions, 271 deletions
diff --git a/perl-install/standalone/drakhosts b/perl-install/standalone/drakhosts
deleted file mode 100644
index 32c6fd116..000000000
--- a/perl-install/standalone/drakhosts
+++ /dev/null
@@ -1,271 +0,0 @@
-#!/usr/bin/perl
-#
-# Copyright (C) 2005 by Mandriva aginies _ateuh_ mandriva.com
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# 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.
-
-my $version = "0.1";
-
-# i18n: IMPORTANT: to get correct namespace (drakhosts instead of libDrakX)
-BEGIN { unshift @::textdomains, 'drakhosts' }
-
-use lib qw(/usr/lib/libDrakX);
-use standalone;
-use strict;
-use common;
-use network::network;
-
-use ugtk2 qw(:ask :wrappers :create :dialogs);
-
-use constant FALSE => 0;
-
-
-my $HOSTS = "/etc/hosts";
-my @listhosts;
-
-use constant COLUMN_IP => 0;
-use constant COLUMN_HOSTNAME => 1;
-use constant COLUMN_ALIAS => 2;
-use constant NUM_COLUMNS => 3;
-
-require_root_capability();
-
-my %size_groups = map { $_ => Gtk2::SizeGroup->new('horizontal') } qw(label widget);
-my $label_and_widgets = sub {
- my ($label, $widget) = @_;
- gtkpack_(Gtk2::HBox->new(0,5),
- 0, gtkadd_widget($size_groups{label}, $label),
- 1, gtkadd_widget($size_groups{widget}, $widget),
- );
-};
-
-
-sub get_host_data() {
-# 127.0.0.1 localhost.localdomain localhost
-# 10.0.1.253 guibpiv.guibland.com
- foreach (cat_($HOSTS)) {
- my ($ip, $name, $alias) = /^(\d\S*)\s+(\S*)\s+(.*)$/;
- $ip and push @listhosts, {
- ip => $ip,
- hostname => $name,
- alias => $alias,
- };
- }
-}
-
-sub write_conf_hosts() {
- output($HOSTS, "# generated by drakhosts\n");
- foreach my $a (@listhosts) {
- append_to_file($HOSTS, "$a->{ip} $a->{hostname} $a->{alias}\n");
- }
-}
-
-sub add_modify_entry {
- my ($treeview, $wanted) = @_;
- my $model = $treeview->get_model;
- my $selection = $treeview->get_selection;
- my $iter;
- my ($i, $ip, $hostname, $alias, $oldip);
- undef $i;
- undef $iter;
-
- $_ = Gtk2::Entry->new foreach $ip, $hostname, $alias;
-
-# test if modify or add a host
-
- my $dialog = _create_dialog();
- $dialog->set_transient_for($::main_window);
- $dialog->set_title("Drakhosts $wanted entry");
- $dialog->set_modal(1);
- $dialog->set_resizable(1);
- $dialog->set_size_request(300, -1);
-
- if ($wanted =~ /modify/) {
- $iter = $selection->get_selected;
- $iter or info_dialog(N("Error"), N("Please add an host to be able to modify it.")) and return;
- my $path = $model->get_path($iter);
- $i = ($path->get_indices)[0];
- $ip->set_text($listhosts[$i]{ip});
- $hostname->set_text($listhosts[$i]{hostname});
- $alias->set_text($listhosts[$i]{alias});
- $oldip = $listhosts[$i]{ip};
- }
-
- my $text;
- $text = N("Please modify information") if $wanted =~ /modify/;
- $text = N("Please delete information") if $wanted =~ /delete/;
- $text = N("Please add information") if $wanted =~ /add/;
-
- gtkpack_($dialog->vbox,
- 0, gtkadd(Gtk2::Frame->new($text),
- gtkpack_(gtkset_border_width(Gtk2::VBox->new, 5),
- 0, $label_and_widgets->(N("IP address:"), $ip),
- 0, $label_and_widgets->(N("Host name:"), $hostname),
- 0, $label_and_widgets->(N("Host Aliases:"), $alias),
- ),
- ),
- 0, create_okcancel({
- cancel_clicked => sub { $dialog->destroy },
- ok_clicked => sub {
- is_ip($ip->get_text) or err_dialog(N("Error!"), N("Please enter a valid IP address.")) and return;
- my $testip = chomp_($ip->get_text);
- my $toldip = chomp_($oldip);
- if ($testip !~ /$toldip/ || $wanted =~ /add/) {
- foreach my $a (@listhosts) {
- if ($a->{ip} =~ /$testip/) {
- err_dialog(N("Error!"), N("Same IP is already in %s file.", $HOSTS)) and return;
- }
- }
- }
- if ($wanted =~ /add/) {
- $iter = $model->append;
- $i = "-1";
- push @listhosts, {
- ip => $ip->get_text,
- hostname => $hostname->get_text,
- alias => $alias->get_text,
- };
- }
- $listhosts[$i]{hostname} = $hostname->get_text;
- $listhosts[$i]{alias} = $alias->get_text;
- $listhosts[$i]{ip} = $ip->get_text;
- $model->set($iter,
- COLUMN_IP, $listhosts[$i]{ip},
- COLUMN_HOSTNAME, $listhosts[$i]{hostname},
- COLUMN_ALIAS, $listhosts[$i]{alias},
- );
- $dialog->destroy;
-# write_conf_hosts();
- },
- },
- ),
- );
- $dialog->show_all;
-}
-
-sub remove_entry {
- my ($treeview) = @_;
- my $model = $treeview->get_model;
- my $selection = $treeview->get_selection;
- my $iter = $selection->get_selected;
- if ($iter) {
- my $path = $model->get_path($iter);
- my $i = ($path->get_indices)[0];
- ask_okcancel("Remove entry ?", "Remove $listhosts[$i]{hostname}") or return;
- $model->remove($iter);
- splice @listhosts, $i, 1;
- }
-# write_conf_hosts();
-}
-
-sub create_model() {
- get_host_data();
- my $model = Gtk2::ListStore->new("Glib::String", "Glib::String", "Glib::String");
- foreach my $a (@listhosts) {
- my $iter = $model->append;
- $model->set($iter,
- COLUMN_IP, $a->{ip},
- COLUMN_HOSTNAME, $a->{hostname},
- COLUMN_ALIAS, $a->{alias},
- );
- }
- return $model;
-}
-
-# add colum to model
-sub add_columns {
- my $treeview = shift;
- my $model = $treeview->get_model;
- each_index {
- my $renderer = Gtk2::CellRendererText->new;
- $renderer->set(editable => 0);
- $renderer->set_data(column => $::i);
- $treeview->insert_column_with_attributes(-1, $_, $renderer, 'text' => $::i);
- } N("IP address"), N("Host name"), N("Host Aliases");
-}
-
-
-###############
-# Main Program
-###############
-# create model
-my $model = create_model();
-
-my $window = ugtk2->new("Drakhosts");
-$::main_window = $window->{real_window};
-$window->{rwindow}->set_size_request(500, 400) unless $::isEmbedded;
-my $W = $window->{window};
-$W->signal_connect(delete_event => sub { ugtk2->exit });
-
-my $treeview = Gtk2::TreeView->new_with_model($model);
-$treeview->set_rules_hint(1);
-$treeview->get_selection->set_mode('single');
-add_columns($treeview);
-
-$treeview->signal_connect(button_press_event => sub {
- my (undef, $event) = @_;
- my $selection = $treeview->get_selection;
- my $iter = $selection->get_selected;
- if ($iter) {
- add_modify_entry($treeview, "modify") if $event->type eq '2button-press';
- }
- });
-
-my $okcancel = create_okcancel({
- cancel_clicked => sub { ugtk2->exit },
- ok_clicked => sub { write_conf_hosts(); ugtk2->exit },
- },
- );
-
-
-
-# main interface
-$W->add(gtkpack_(Gtk2::VBox->new(0,0),
- if_(!$::isEmbedded, 0, Gtk2::Banner->new('IC-Dhost-48', N("DrakHOSTS manage hosts definitions"))),
- #if_($::isEmbedded, 0, Gtk2::Label->new("Here you can add, remove and alter hosts definition.")),
- 1, gtkpack_(gtkset_border_width(Gtk2::HBox->new, 0),
- 1, create_scrolled_window($treeview),
- 0, gtkpack_(gtkset_border_width(create_vbox('start', 3)),
- 0, gtksignal_connect(Gtk2::Button->new(N("Add")), clicked => sub {
- eval { add_modify_entry($treeview, "add") };
- my $err = $@;
- if ($err) {
- err_dialog(N("Error"), N("Failed to add host.") . "\n\n" . $err);
- }
- }),
- 0, gtksignal_connect(Gtk2::Button->new(N("Modify")), clicked => sub {
- eval { add_modify_entry($treeview, "modify") };
- my $err = $@;
- if ($err) {
- err_dialog(N("Error"), N("Failed to Modify host.") . "\n\n" . $err);
- }
- }),
- 0, gtksignal_connect(Gtk2::Button->new(N("Remove")), clicked => sub {
- eval { remove_entry($treeview) };
- my $err = $@;
- if ($err) {
- err_dialog(N("Error"), N("Failed to remove host.") . "\n\n" . $err);
- }
- }),
- if_($::isEmbedded, 0, gtksignal_connect(Gtk2::Button->new(N("Quit")), clicked => sub { ugtk2->exit })),
- ),
- ),
- 0, $okcancel,
- ),
- );
-
-$W->show_all;
-Gtk2->main;