diff options
-rwxr-xr-x | perl-install/standalone/drakperm | 55 |
1 files changed, 45 insertions, 10 deletions
diff --git a/perl-install/standalone/drakperm b/perl-install/standalone/drakperm index cb9076383..10eb67b08 100755 --- a/perl-install/standalone/drakperm +++ b/perl-install/standalone/drakperm @@ -10,6 +10,23 @@ init Gtk; use interactive; +#- this part is embedded management +$::isEmbedded = ($::XID, $::CCPID) = "@ARGV" =~/--embedded (\S*) (\S*)/; +if ($::isEmbedded) { + print "EMBED\n"; + print "XID : $::XID\n"; + print "CCPID : $::CCPID\n"; +} + +my $in = 'interactive'->vnew('su', 'default'); +local $_ = join '', @ARGV; + +/-h/ and die _("no help implemented yet.\n"); +/-version/ and die 'version: $Id$'."\n"; + +my $window = $::isEmbedded ? new Gtk::Plug ($::XID) : new Gtk::Window ("toplevel"); +$window->signal_connect(delete_event => sub { $::isEmbedded ? kill(USR1, $::CCPID) : &killapp }); + #- vars declaration my ($default_perm_level) = "level ".chomp_(`cat /etc/sysconfig/msec | grep SECURE_LEVEL= |cut -d= -f2`); my %CURENT; @@ -24,7 +41,7 @@ my $perm_path= '/usr/share/msec/'; my $rows_cnt = 0; my $editable = 0; my $modified = 0; -my $in = new interactive->vnew(); +my $prec_txt = $default_perm_level; #my $bg = Gtk::Gdk::Color->parse_color('grey'); #- Widget declaration my $W = new Gtk::Window('toplevel'); @@ -35,11 +52,11 @@ my $select_box= new Gtk::HBox(0,5); my $action_box= new Gtk::HBox(0,5); my $up_down_box=new Gtk::HBox(0,5); my $B_quit = new Gtk::Button('cancel'); -my $B_sav = new Gtk::Button('Ok'); -my $B_up = new Gtk::Button(_("UP")); +my $B_sav = new Gtk::Button('save'); +my $B_up = new Gtk::Button(_("Up")); my $B_del = new Gtk::Button(_("delete")); my $B_edit = new Gtk::Button(_("edit")); -my $B_down = new Gtk::Button(_("down")); +my $B_down = new Gtk::Button(_("Down")); my $B_add = new Gtk::Button(_("add a rule")); my $label_perm= new Gtk::Label(_("select perm file to see/edit")); my $combo_perm= new Gtk::Combo; @@ -71,6 +88,7 @@ $B_add->signal_connect( clicked => sub{ $B_del->signal_connect( clicked => sub { $Perm_list->remove(${$CURENT{'clicked'}}{'row'}); $rows_cnt--; + $modified++; }); $B_down->signal_connect( clicked => sub { my $row = ${$CURENT{'clicked'}}{'row'}; @@ -86,7 +104,7 @@ $B_up->signal_connect( clicked => sub { $Perm_list->select_row($row-1,0); $CURENT{'clicked'}{'row'} = $row-1; }); -$combo_perm->entry->signal_connect( changed => sub{ &display_perm($combo_perm->entry->get_text)}); +my $combo_sig = $combo_perm->entry->signal_connect( changed => sub{ &display_perm($combo_perm->entry->get_text , @_)}); $Perm_list->signal_connect( button_press_event => sub{ $editable or return 0; my ($clist,$event) = @_; @@ -112,6 +130,7 @@ $Perm_list->set_column_width( 3, 15 ); $up_down_box->add($B_up); $up_down_box->add($B_down); $up_down_box->add($B_add); +$up_down_box->add($B_del); $up_down_box->add($B_edit); $action_box->add($B_sav); @@ -143,16 +162,30 @@ exit 0; #- Built in functions sub killapp{ - $modified - and ($in->ask_okcancel('Warning','your changed are not saved do you whish to continue?') or return 0); + $modified and (&check_save or return 0); Gtk->exit(0); return 0; } +sub check_save{ + $modified or return 0; + my $sav_ = $in->ask_okcancel('Warning','your changed will be lost do you wish to continue?'); + $sav_ + and $modified = 0; + return $sav_; +} #- Desc => set the Perm_list CList with the appropriate value sub display_perm{ - local $perm_level = shift @_; + local $perm_level = shift @_; local $file = $perm_path.$perm{$perm_level}; + local $sav_ = &check_save; + local $i=0; + if($modified && ! $sav_){ + $combo_perm->entry->signal_handler_block($combo_sig); + $combo_perm->entry->set_text($prec_txt); + $combo_perm->entry->signal_handler_unblock($combo_sig); + return 0; + } $editable = ($perm_level =~ /^level \d/)?0:1; @@ -172,15 +205,16 @@ sub display_perm{ $up_down_box->set_sensitive($editable); $rows_cnt = $i; + $prec_txt = $perm_level; undef(%CURENT); } #- Desc => save the perm.local file if modification made sub save_perm{ $modified or return 0; - open F, '>'.$perm_path.'perm.local'; + open F, '>'.$perm_path.'perm.local' or die("F CHIER BORDEL"); for($i = 0 ; $i <= $rows_cnt;$i++){ - $line = $Perm_list->get_text( $i , 0 )."\t".$Perm_list->get_text($i,1).(($Perm_list->get_text($i,2))?".".$Perm_list->get_text($i,2):"")."\t".$Perm_list->get_text($i,3); + $line = $Perm_list->get_text( $i , 0 )."\t".$Perm_list->get_text($i,1).(($Perm_list->get_text($i,2))?".".$Perm_list->get_text($i,2):"")."\t".$Perm_list->get_text($i,3)."\n"; print F $line ; } close F; @@ -198,6 +232,7 @@ sub row_setting_data{ $Perm_list->get_text( $row,3), ] ); + #print(%{$CURENT{'clicked'}});print("\n"); } #- Desc => Here is the complete subwindow for rule settings |