diff options
Diffstat (limited to 'perl-install/standalone/drakTermServ')
| -rwxr-xr-x | perl-install/standalone/drakTermServ | 449 |
1 files changed, 212 insertions, 237 deletions
diff --git a/perl-install/standalone/drakTermServ b/perl-install/standalone/drakTermServ index c97193c03..e840fd094 100755 --- a/perl-install/standalone/drakTermServ +++ b/perl-install/standalone/drakTermServ @@ -54,6 +54,7 @@ $conf{ALLOW_THIN} = 0; my $nfs_subnet; my $nfs_mask; my $cfg_dir = "/etc/drakxtools/draktermserv/"; +-e $cfg_dir or mkdir_p($cfg_dir); my $cfg_file = $cfg_dir . "draktermserv.conf"; my $interface = get_net_interface(); my $server_ip = get_ip_from_sys(); @@ -61,6 +62,7 @@ my $changes_made = 0; my $client_cfg = "/etc/dhcpd.conf.etherboot.clients"; my $tftpboot = "/var/lib/tftpboot"; my @kernels = bootloader::installed_vmlinuz(); +my $cmd_line = 1; #- make sure terminal server and friends are installed my $ts = system("rpm -q terminal-server > /dev/null"); @@ -78,67 +80,57 @@ if ($ts == 256) { } if ("@ARGV" =~ /--enable/) { - my $cmd_line = 1; - enable_ts($cmd_line); + enable_ts(); exit(0); } if ("@ARGV" =~ /--disable/) { - my $cmd_line = 1; - disable_ts($cmd_line); + disable_ts(); exit(0); } if ("@ARGV" =~ /--restart/) { - my $cmd_line = 1; - stop_ts($cmd_line); - start_ts($cmd_line); + stop_ts(); + start_ts(); exit(0); } if ("@ARGV" =~ /--start/) { - my $cmd_line = 1; - start_ts($cmd_line); + start_ts(); exit(0); } if ("@ARGV" =~ /--stop/) { - my $cmd_line = 1; - stop_ts($cmd_line); + stop_ts(); exit(0); } if ("@ARGV" =~ /--adduser/) { die N("%s: %s requires a username...\n", $0, $ARGV[0]) if $#ARGV < 1; - my $cmd_line = 1; - adduser($cmd_line, $ARGV[1]); + adduser($ARGV[1]); exit(0); } if ("@ARGV" =~ /--deluser/) { die N("%s: %s requires a username...\n", $0, $ARGV[0]) if $#ARGV < 1; - my $cmd_line = 1; - deluser($cmd_line, $ARGV[1]); + deluser($ARGV[1]); exit(0); } if ("@ARGV" =~ /--syncusers/) { - my $cmd_line = 1; - sync_users($cmd_line); + sync_users(); exit(0); } if ("@ARGV" =~ /--addclient/) { die N("%s: %s requires hostname, MAC address, IP, nbi-image, 0/1 for THIN_CLIENT, 0/1 for Local Config...\n", $0, $ARGV[0]) if $#ARGV < 6; - my $cmd_line = 1; - addclient($cmd_line, @ARGV[1..6]); + addclient(@ARGV[1..6]); exit(0); } if ("@ARGV" =~ /--delclient/) { die N("%s: %s requires hostname...\n", $0, $ARGV[0]) if $#ARGV < 1; - my $cmd_line = 1; - delclient($cmd_line, $ARGV[1]); + delclient($ARGV[1]); exit(0); } @@ -199,27 +191,15 @@ x:5:respawn:/usr/X11R6/bin/X -ac -query $server_ip\n"; output_p($inittab_file, $inittab); } -sub cursor_wait() { - # turn the cursor to a watch - $window1->{rwindow}->window->set_cursor(new Gtk2::Gdk::Cursor("GDK_WATCH")); - gtkflush(); -} - -sub cursor_norm() { - # restore normal cursor - $window1->{rwindow}->window->set_cursor(new Gtk2::Gdk::Cursor("GDK_LEFT_PTR")); - gtkflush(); -} - sub display_error { my ($message) = @_; my $error_box; destroy_widget(); gtkpack($status_box, - $error_box = gtkpack_(new Gtk2::VBox(0,0), - 1, new Gtk2::Label($message), - 0, gtkadd(gtkset_layout(new Gtk2::HButtonBox, 'spread'), - gtksignal_connect(new Gtk2::Button(N("OK")), clicked => sub { + $error_box = gtkpack_(Gtk2::VBox->new(0,0), + 1, Gtk2::Label->new($message), + 0, gtkadd(gtkset_layout(Gtk2::HButtonBox->new, 'spread'), + gtksignal_connect(Gtk2::Button->new(N("Ok")), clicked => sub { destroy_widget(); }), ), @@ -229,6 +209,7 @@ sub display_error { } sub interactive_mode() { + $cmd_line = 0; $in = 'interactive'->vnew; $::Wizard_title = N("Terminal Server Configuration"); $::Wizard_pix_up = "ic82-network-40.png"; @@ -238,75 +219,75 @@ sub interactive_mode() { $window1->{rwindow}->set_border_width(5); gtkadd($window1->{window}, - gtkpack_(gtkset_size_request(new Gtk2::VBox(0,2), 620, 400), - 1, gtkpack_(new Gtk2::HBox(0,2), - 1, gtkpack_(new Gtk2::VBox(0,2), - 1, gtkpack($status_box = new Gtk2::VBox(0,5), - $main_box = new Gtk2::VBox(0,10), + gtkpack_(gtkset_size_request(Gtk2::VBox->new(0,2), 620, 400), + 1, gtkpack_(Gtk2::HBox->new(0,2), + 1, gtkpack_(Gtk2::VBox->new(0,2), + 1, gtkpack($status_box = Gtk2::VBox->new(0,5), + $main_box = Gtk2::VBox->new(0,10), ), - 0, $wizard_buttons = gtkpack_(new Gtk2::HBox(1,2)), - 0, gtkpack_($main_buttons = new Gtk2::VBox(0,2), - 1, gtkpack_(new Gtk2::HBox(1,2), - 1, gtkpack_(new Gtk2::VBox(1,0), - 1, gtksignal_connect(new Gtk2::Button(N("Enable Server")), clicked => sub { + 0, $wizard_buttons = gtkpack_(Gtk2::HBox->new(1,2)), + 0, gtkpack_($main_buttons = Gtk2::VBox->new(0,2), + 1, gtkpack_(Gtk2::HBox->new(1,2), + 1, gtkpack_(Gtk2::VBox->new(1,0), + 1, gtksignal_connect(Gtk2::Button->new(N("Enable Server")), clicked => sub { destroy_widget(); - cursor_wait(); + gtkset_mousecursor_wait(); enable_ts(); - cursor_norm(); + gtkset_mousecursor_normal(); }), - 1, gtksignal_connect(new Gtk2::Button(N("Disable Server")), clicked => sub { + 1, gtksignal_connect(Gtk2::Button->new(N("Disable Server")), clicked => sub { destroy_widget(); - cursor_wait(); + gtkset_mousecursor_wait(); disable_ts(); - cursor_norm(); + gtkset_mousecursor_normal(); }), ), - 1, gtkpack_(new Gtk2::VBox(1,0), - 1, gtksignal_connect(new Gtk2::Button(N("Start Server")), clicked => sub { + 1, gtkpack_(Gtk2::VBox->new(1,0), + 1, gtksignal_connect(Gtk2::Button->new(N("Start Server")), clicked => sub { destroy_widget(); - cursor_wait(); + gtkset_mousecursor_wait(); start_ts(); - cursor_norm(); + gtkset_mousecursor_normal(); }), - 1, gtksignal_connect(new Gtk2::Button(N("Stop Server")), clicked => sub { + 1, gtksignal_connect(Gtk2::Button->new(N("Stop Server")), clicked => sub { destroy_widget(); - cursor_wait(); + gtkset_mousecursor_wait(); stop_ts(); - cursor_norm(); + gtkset_mousecursor_normal(); }), ), - 1, gtkpack_(new Gtk2::VBox(1,0), - 1, gtksignal_connect(new Gtk2::Button(N("Etherboot Floppy/ISO")), clicked => sub { + 1, gtkpack_(Gtk2::VBox->new(1,0), + 1, gtksignal_connect(Gtk2::Button->new(N("Etherboot Floppy/ISO")), clicked => sub { destroy_widget(); make_boot(); }), - 1, gtksignal_connect(new Gtk2::Button(N("Net Boot Images")), clicked => sub { + 1, gtksignal_connect(Gtk2::Button->new(N("Net Boot Images")), clicked => sub { destroy_widget(); make_nbi(); }), ), - 1, gtkpack_(new Gtk2::VBox(1,0), - 1, gtksignal_connect(new Gtk2::Button(N("Add/Del Users")), clicked => sub { + 1, gtkpack_(Gtk2::VBox->new(1,0), + 1, gtksignal_connect(Gtk2::Button->new(N("Add/Del Users")), clicked => sub { destroy_widget(); maintain_users(); }), - 1, gtksignal_connect(new Gtk2::Button(N("Add/Del Clients")), clicked => sub { + 1, gtksignal_connect(Gtk2::Button->new(N("Add/Del Clients")), clicked => sub { destroy_widget(); maintain_clients() }), ), ), - 0, gtkpack_(new Gtk2::HBox, - 0, gtksignal_connect(new Gtk2::Button(N("Help")),clicked => sub { + 0, gtkpack_(Gtk2::HBox->new, + 0, gtksignal_connect(Gtk2::Button->new(N("Help")),clicked => sub { destroy_widget(); help(); }), - 0, gtksignal_connect(new Gtk2::Button(N("First Time Wizard")), clicked => sub { + 0, gtksignal_connect(Gtk2::Button->new(N("First Time Wizard")), clicked => sub { destroy_widget(); start_wizard(); }), 1, "", - 0, gtksignal_connect(new Gtk2::Button(N("Close")), clicked => sub { + 0, gtksignal_connect(Gtk2::Button->new(N("Close")), clicked => sub { write_conf_file(); restart_server() if $changes_made == 1; Gtk2->main_quit; @@ -325,8 +306,7 @@ sub interactive_mode() { ugtk2->exit(0); } -sub check_gdm { - my ($cmd_line) = @_; +sub check_gdm() { #- gdm now needs gdm user in /etc/passwd$$CLIENT$$ my %desktop = getVarsFromSh("/etc/sysconfig/desktop"); my $dm = $desktop{DISPLAYMANAGER}; @@ -335,7 +315,7 @@ sub check_gdm { if ($dm =~ /GNOME|GDM/ && !$gdm) { $in->ask_warn(N("Warning"), N("%s defined as dm, adding gdm user to /etc/passwd\$\$CLIENT\$\$", $dm)) if !$cmd_line; warn(N("%s defined as dm, adding gdm user to /etc/passwd\$\$CLIENT\$\$", $dm)) if $cmd_line; - adduser($cmd_line, "gdm"); + adduser("gdm"); } } @@ -343,7 +323,7 @@ sub start_wizard() { text_view(N(" This wizard routine will: 1) Ask you to select either 'thin' or 'fat' clients. - 2) Setup dhcp. + 2) Setup DHCP. After doing these steps, the wizard will: @@ -369,7 +349,7 @@ sub wizard_step { my ($do_step, $step) = @_; &$do_step(); gtkadd($wizard_buttons, - gtksignal_connect($previous_button = new Gtk2::Button(N("Previous")), clicked => sub { + gtksignal_connect($previous_button = Gtk2::Button->new(N("Previous")), clicked => sub { clear_buttons(); if ($step == 1) { exit_wizard(); @@ -385,12 +365,12 @@ sub wizard_step { }) ); gtkadd($wizard_buttons, - gtksignal_connect($cancel_button = new Gtk2::Button(N("Cancel Wizard")), clicked => sub { + gtksignal_connect($cancel_button = Gtk2::Button->new(N("Cancel Wizard")), clicked => sub { exit_wizard(); }) ); gtkadd($wizard_buttons, - gtksignal_connect($next_button = new Gtk2::Button(N("Next")), clicked => sub { + gtksignal_connect($next_button = Gtk2::Button->new(N("Next")), clicked => sub { clear_buttons(); wizard_step(\&dhcpd_config, 2) if $step == 1; if ($step == 2) { @@ -425,13 +405,13 @@ sub clear_buttons() { } sub client_type() { - my $check_allow_thin = new Gtk2::CheckButton(N("Use thin clients.")); + my $check_allow_thin = Gtk2::CheckButton->new(N("Use thin clients.")); $check_allow_thin->set_active($conf{ALLOW_THIN}); text_view(N("Please select default client type. 'Thin' clients run everything off the server's CPU/RAM, using the client display. 'Fat' clients use their own CPU/RAM but the server's filesystem."), "wizard"); gtkpack_($$central_widget, - 0, gtkpack_(new Gtk2::HBox(1,0), + 0, gtkpack_(Gtk2::HBox->new(1,0), 1, Gtk2::VBox->new, 0, gtksignal_connect($check_allow_thin, clicked => sub { invbool \$conf{ALLOW_THIN}; @@ -439,24 +419,23 @@ sub client_type() { }), 0, Gtk2::VBox->new, ), - 0, gtksignal_connect(new Gtk2::Button(N("Sync client X keyboard settings with server.")), + 0, gtksignal_connect(Gtk2::Button->new(N("Sync client X keyboard settings with server.")), clicked => sub { client_X_keyboard() }), - 1, new Gtk2::HBox(0,0), + 1, Gtk2::HBox->new(0,0), ); } sub make_nbis() { my $buff = N("Creating net boot images for all kernels"); $in->ask_warn(N("Information"), N("This will take a few minutes.")); - cursor_wait(); + gtkset_mousecursor_wait(); system("/usr/bin/mknbi-set -k /boot/$_") foreach @kernels; - cursor_norm(); + gtkset_mousecursor_normal(); $buff .= "\n\n\t" . N("Done!"); text_view($buff, "wizard"); } -sub sync_users { - my ($cmd_line) = @_; +sub sync_users() { my $buff = N("Syncing server user list with client list, including root."); my @active_users = cat_("/etc/shadow"); @@ -486,14 +465,14 @@ sub text_view { my ($text, $option) = @_; my $box; gtkpack($status_box, - $box = gtkpack_(new Gtk2::VBox(0,10), - 1, gtkpack_(new Gtk2::HBox(0,0), + $box = gtkpack_(Gtk2::VBox->new(0,10), + 1, gtkpack_(Gtk2::HBox->new(0,0), 1, create_scrolled_window(gtktext_insert( - new Gtk2::TextView, [ [ $text ] ]) + Gtk2::TextView->new, [ [ $text ] ]) ), ), - 0, gtkpack(gtkset_layout(new Gtk2::HButtonBox, 'spread'), - gtksignal_connect(my $ok_button = new Gtk2::Button(N("OK")), clicked => sub { + 0, gtkpack(gtkset_layout(Gtk2::HButtonBox->new, 'spread'), + gtksignal_connect(my $ok_button = Gtk2::Button->new(N("Ok")), clicked => sub { destroy_widget() if $option eq "close"; do_wizard() if $option eq "wizard"; }), @@ -510,7 +489,7 @@ sub text_view { sub help() { my $inittab_str = '/etc/inittab$$IP=client_ip$$'; my $shadow_str = '/etc/shadow$$CLIENT$$'; - my $xfconfig_str = '/etc/X11/XF86Config-4$$IP=client_ip$$'; + my $xfconfig_str = '/etc/X11/xorg.conf$$IP=client_ip$$'; text_view(N("Terminal Server Overview") . "\n\n" . N(" - Create Etherboot Enabled Boot Images: @@ -542,11 +521,11 @@ N(" While you can use a pool of IP addresses, rather than setup a specifi of client-specific configuration files that ClusterNFS provides. Note: The '#type' entry is only used by drakTermServ. Clients can either be 'thin' - or 'fat'. Thin clients run most software on the server via xdmcp, while fat clients run + or 'fat'. Thin clients run most software on the server via XDMCP, while fat clients run most software on the client machine. A special inittab, %s is written for thin clients. System config files xdm-config, kdmrc, and gdm.conf are - modified if thin clients are used, to enable xdmcp. Since there are security issues in - using xdmcp, hosts.deny and hosts.allow are modified to limit access to the local + modified if thin clients are used, to enable XDMCP. Since there are security issues in + using XDMCP, hosts.deny and hosts.allow are modified to limit access to the local subnet. Note: The '#hdw_config' entry is also only used by drakTermServ. Clients can either @@ -592,7 +571,7 @@ N(" - /etc/xinetd.d/tftp: by mkinitrd-net, and the entries in /etc/dhcpd.conf, to serve up the boot image to each diskless client. - A typical tftp configuration file looks like: + A typical TFTP configuration file looks like: service tftp { @@ -610,7 +589,7 @@ N(" - /etc/xinetd.d/tftp: puts its images.") . "\n\n" . N(" - Create etherboot floppies/CDs: The diskless client machines need either ROM images on the NIC, or a boot floppy - or CD to initate the boot sequence. drakTermServ will help generate these + or CD to initiate the boot sequence. drakTermServ will help generate these images, based on the NIC in the client machine. A basic example of creating a boot floppy for a 3Com 3c509 manually: @@ -626,32 +605,32 @@ sub make_boot() { my $rom_path = "/usr/share/etherboot"; #- doesn't return list sorted my @nics = sort(all("/usr/share/etherboot/zimg")); - my $list_nics = new Gtk2::List(); + my $list_nics = Gtk2::List->new; my $nic; foreach (@nics) { my $t = $_; - $list_nics->add(gtkshow(gtksignal_connect(new Gtk2::ListItem($t), + $list_nics->add(gtkshow(gtksignal_connect(Gtk2::ListItem->new($t), select => sub { $nic = $t }))); } $list_nics->set_selection_mode('single'); gtkpack($status_box, - $boot_box = gtkpack_(new Gtk2::VBox(0,10), - 0, gtkadd(new Gtk2::HBox(0,10), - new Gtk2::HBox(0,5), + $boot_box = gtkpack_(Gtk2::VBox->new(0,10), + 0, gtkadd(Gtk2::HBox->new(0,10), + Gtk2::HBox->new(0,5), create_scrolled_window($list_nics), - gtkadd(new Gtk2::VBox(1,10), - new Gtk2::HBox(0,20), - gtksignal_connect(new Gtk2::Button(N("Boot Floppy")), clicked => + gtkadd(Gtk2::VBox->new(1,10), + Gtk2::HBox->new(0,20), + gtksignal_connect(Gtk2::Button->new(N("Boot Floppy")), clicked => sub { write_eb_image($nic, $rom_path, "floppy") }), - gtksignal_connect(new Gtk2::Button(N("Boot ISO")), clicked => + gtksignal_connect(Gtk2::Button->new(N("Boot ISO")), clicked => sub { write_eb_image($nic, $rom_path, "iso") }), - gtksignal_connect(new Gtk2::Button(N("PXE Image")), clicked => + gtksignal_connect(Gtk2::Button->new(N("PXE Image")), clicked => sub { write_eb_image($nic, $rom_path, "pxe") }), - new Gtk2::HBox(0,20), + Gtk2::HBox->new(0,20), ), - new Gtk2::HBox(0,5), + Gtk2::HBox->new(0,5), ), ), ); @@ -715,8 +694,8 @@ sub make_nbi() { update_list($list_model); - my $combo_default_kernel = Gtk2::ComboBox->new_text; - $combo_default_kernel->set_popdown_strings(N("Default kernel version"), map { bootloader::vmlinuz2version($_) } @kernels); + my $combo_default_kernel = Gtk2::ComboBox->new_with_strings([ N("Default kernel version"), + map { bootloader::vmlinuz2version($_) } @kernels ]); $combo_default_kernel->set_active(0); $combo_default_kernel->entry->signal_connect('changed', sub { my $default_kernel = $combo_default_kernel->entry->get_text; @@ -739,52 +718,52 @@ sub make_nbi() { }); gtkpack($status_box, - $nbi_box = gtkpack_(new Gtk2::VBox(1,10), - 0, gtkadd(new Gtk2::HBox(0,10), + $nbi_box = gtkpack_(Gtk2::VBox->new(1,10), + 0, gtkadd(Gtk2::HBox->new(0,10), create_scrolled_window($tree_kernels), - gtkadd(new Gtk2::VBox(1,10), - gtksignal_connect(new Gtk2::Button(N("Build Whole Kernel -->")), clicked => sub { + gtkadd(Gtk2::VBox->new(1,10), + gtksignal_connect(Gtk2::Button->new(N("Build Whole Kernel -->")), clicked => sub { if ($kernel) { $in->ask_warn(N("Information"), N("This will take a few minutes.")); - cursor_wait(); + gtkset_mousecursor_wait(); build_n_update($list_model, "-k /boot/$kernel"); - cursor_norm(); + gtkset_mousecursor_normal(); } else { $in->ask_warn(N("Error"), N("No kernel selected!")) if !($kernel); } }), - gtksignal_connect(new Gtk2::Button(N("Build Single NIC -->")), clicked => sub { + gtksignal_connect(Gtk2::Button->new(N("Build Single NIC -->")), clicked => sub { if ($nic) { build_n_update($list_model, "-k /boot/$kernel -r $nic"); } else { $in->ask_warn(N("Error"), N("No NIC selected!")); } }), - gtksignal_connect(new Gtk2::Button(N("Build All Kernels -->")), clicked => sub { + gtksignal_connect(Gtk2::Button->new(N("Build All Kernels -->")), clicked => sub { $in->ask_warn(N("Information"), N("This will take a few minutes.")); - cursor_wait(); + gtkset_mousecursor_wait(); build_n_update($list_model, "-k /boot/$_") foreach @kernels; - cursor_norm(); + gtkset_mousecursor_normal(); }), $combo_default_kernel, - new Gtk2::HBox(1,1), - gtksignal_connect(new Gtk2::Button(N("<-- Delete")), clicked => sub { + Gtk2::HBox->new(1,1), + gtksignal_connect(Gtk2::Button->new(N("<-- Delete")), clicked => sub { my $nbi = $tftpboot . "/" . $nbi; my $result = unlink($nbi) or warn("Can't delete $nbi..."); if ($result == 1) { $list_model->remove($nbi_iter); } }), - gtksignal_connect(new Gtk2::Button(N("Delete All NBIs")), clicked => sub { - cursor_wait(); + gtksignal_connect(Gtk2::Button->new(N("Delete All NBIs")), clicked => sub { + gtkset_mousecursor_wait(); foreach (grep { /\.nbi/ } all($tftpboot)) { my $nbi = $tftpboot . "/" . $_; unlink($nbi) || warn("Can't delete $nbi..."); } $list_model->clear; - cursor_norm(); + gtkset_mousecursor_normal(); }), - new Gtk2::HBox(1,1), + Gtk2::HBox->new(1,1), ), create_scrolled_window($list_nbis), ),), @@ -797,12 +776,12 @@ sub make_nbi() { sub update_list { my ($list_model) = @_; $list_model->clear; - $list_model->append_set(undef, $_) foreach grep { /\.nbi/ } all($tftpboot); + $list_model->append_set(0, $_) foreach grep { /\.nbi/ } all($tftpboot); } sub build_n_update { my ($list_model, $command) = @_; - system("/usr/bin/mknbi-set $command"); + system("/usr/bin/mknbi-set -v $command"); update_list($list_model); } @@ -828,7 +807,7 @@ sub maintain_users() { foreach (@sys_users) { my ($s_label) = split(/:/, $_, 2); if (any { /$s_label/ } @homes) { - $list_model->append_set(undef, $s_label); + $list_model->append_set(0, $s_label); } } @@ -849,7 +828,7 @@ sub maintain_users() { my ($t_label) = split(/:/, $_, 2); my @system_entry = grep { /$t_label/ } @sys_users; $t_label = $t_label . " !!!" if $_ ne $system_entry[0]; - $list_model->append_set(undef, $t_label); + $list_model->append_set(0, $t_label); } $list_ts_users->get_selection->signal_connect(changed => sub { @@ -861,23 +840,23 @@ sub maintain_users() { }); gtkpack($status_box, - $user_box = gtkpack_(new Gtk2::VBox(0,10), - 0, gtkadd(new Gtk2::Label(N("!!! Indicates the password in the system database is different than\n the one in the Terminal Server database.\nDelete/re-add the user to the Terminal Server to enable login."))), - 0, gtkadd(new Gtk2::HBox(0,20), + $user_box = gtkpack_(Gtk2::VBox->new(0,10), + 0, gtkadd(Gtk2::Label->new(N("!!! Indicates the password in the system database is different than\n the one in the Terminal Server database.\nDelete/re-add the user to the Terminal Server to enable login."))), + 0, gtkadd(Gtk2::HBox->new(0,20), create_scrolled_window($list_sys_users), - gtkadd(new Gtk2::VBox(1,10), - new Gtk2::HBox(0,10), - gtksignal_connect(new Gtk2::Button(N("Add User -->")), clicked => - sub { my $result = adduser(0, $sys_user); + gtkadd(Gtk2::VBox->new(1,10), + Gtk2::HBox->new(0,10), + gtksignal_connect(Gtk2::Button->new(N("Add User -->")), clicked => + sub { my $result = adduser($sys_user); if ($result == 0) { - $list_model->append_set(undef, $sys_user); + $list_model->append_set(0, $sys_user); } }), - gtksignal_connect(new Gtk2::Button(N("<-- Del User")), clicked => - sub { deluser(0, $ts_user); + gtksignal_connect(Gtk2::Button->new(N("<-- Del User")), clicked => + sub { deluser($ts_user); $list_model->remove($titer); }), - new Gtk2::HBox(0,10), + Gtk2::HBox->new(0,10), ), create_scrolled_window($list_ts_users), ),), @@ -934,16 +913,16 @@ sub maintain_clients() { }); #- entry boxes for client data entry - my $label_host = new Gtk2::Label("Client Name:"); - my $entry_host = new Gtk2::Entry(); - my $label_mac = new Gtk2::Label("MAC Address:"); - my $entry_mac = new Gtk2::Entry(); - my $label_ip = new Gtk2::Label("IP Address:"); - my $entry_ip = new Gtk2::Entry(); - my $label_nbi = new Gtk2::Label("Kernel Netboot Image:"); - my $entry_nbi = new Gtk2::Combo(); - - gtksignal_connect(my $check_hdw_config = new Gtk2::CheckButton(N("Allow local hardware\nconfiguration.")), + my $label_host = Gtk2::Label->new("Client Name:"); + my $entry_host = Gtk2::Entry->new; + my $label_mac = Gtk2::Label->new("MAC Address:"); + my $entry_mac = Gtk2::Entry->new; + my $label_ip = Gtk2::Label->new("IP Address:"); + my $entry_ip = Gtk2::Entry->new; + my $label_nbi = Gtk2::Label->new("Kernel Netboot Image:"); + my $entry_nbi = Gtk2::Combo->new; + + gtksignal_connect(my $check_hdw_config = Gtk2::CheckButton->new(N("Allow local hardware\nconfiguration.")), clicked => sub { invbool \$local_config }); my @images = grep { /\.nbi/ } all($tftpboot); @@ -962,27 +941,27 @@ sub maintain_clients() { my $is_thin = 0; gtkpack($status_box, - $client_box = gtkpack_(new Gtk2::VBox(0,10), - 0, gtkadd(new Gtk2::HBox(1,5), - gtkadd(new Gtk2::VBox(0,5), + $client_box = gtkpack_(Gtk2::VBox->new(0,10), + 0, gtkadd(Gtk2::HBox->new(1,5), + gtkadd(Gtk2::VBox->new(0,5), gtkadd($label_host), gtkadd($entry_host), gtkadd($label_mac), gtkadd($entry_mac), gtkadd($label_ip), gtkadd($entry_ip), gtkadd($label_nbi), gtkadd($entry_nbi), gtkadd($check_hdw_config), - gtksignal_connect($check_thin = new Gtk2::CheckButton(N("Thin Client")), + gtksignal_connect($check_thin = Gtk2::CheckButton->new(N("Thin Client")), clicked => sub { invbool \$is_thin }), ), - gtkadd(new Gtk2::VBox(1,10), - $check_allow_thin = new Gtk2::CheckButton(N("Allow Thin Clients")), - gtksignal_connect(new Gtk2::Button(N("Add Client -->")), clicked => + gtkadd(Gtk2::VBox->new(1,10), + $check_allow_thin = Gtk2::CheckButton->new(N("Allow Thin Clients")), + gtksignal_connect(Gtk2::Button->new(N("Add Client -->")), clicked => sub { my $hostname = $entry_host->get_text; my $mac = $entry_mac->get_text; my $ip = $entry_ip->get_text; my $nbi = $entry_nbi->entry->get_text; if ($hostname && $mac && $ip) { - my $result = addclient(0, $hostname, $mac, $ip, $nbi, $is_thin, $local_config); + my $result = addclient($hostname, $mac, $ip, $nbi, $is_thin, $local_config); if ($result == 0) { my $t_client = $model->append_set(undef, [ 0 => $hostname ]); @@ -1006,7 +985,7 @@ sub maintain_clients() { } } }), - gtksignal_connect($button_edit = new Gtk2::Button(N("<-- Edit Client")), clicked => + gtksignal_connect($button_edit = Gtk2::Button->new(N("<-- Edit Client")), clicked => sub { $entry_host->set_text($client); $entry_mac->set_text($clients{$client}{hardware}); $entry_ip->set_text($clients{$client}{address}); @@ -1024,7 +1003,7 @@ sub maintain_clients() { $check_hdw_config->set_active(0); } - my $result = delclient(0, $client); + my $result = delclient($client); if ($result == 0) { $model->remove($citer); $button_edit->set_sensitive(0); @@ -1032,15 +1011,15 @@ sub maintain_clients() { $button_delete->set_sensitive(0); } }), - gtksignal_connect($button_config = new Gtk2::Button(N("Disable Local Config")), clicked => + gtksignal_connect($button_config = Gtk2::Button->new(N("Disable Local Config")), clicked => sub { my $hdw_config = $clients{$client}{hdw_config}; if ($hdw_config eq "true") { client_hdw_config($clients{$client}{address}, 0); } }), - gtksignal_connect($button_delete = new Gtk2::Button(N("Delete Client")), clicked => - sub { my $result = delclient(0, $client); + gtksignal_connect($button_delete = Gtk2::Button->new(N("Delete Client")), clicked => + sub { my $result = delclient($client); if ($result == 0) { $model->remove($citer); $button_edit->set_sensitive(0); @@ -1048,12 +1027,12 @@ sub maintain_clients() { $button_delete->set_sensitive(0); } }), - gtksignal_connect(new Gtk2::Button(N("dhcpd Config...")), clicked => + gtksignal_connect(Gtk2::Button->new(N("dhcpd Config...")), clicked => sub { $client_box->destroy; dhcpd_config() }), ), create_scrolled_window($tree_clients), ), - 0, gtksignal_connect(new Gtk2::Button(N("Sync client X keyboard settings with server.")), + 0, gtksignal_connect(Gtk2::Button->new(N("Sync client X keyboard settings with server.")), clicked => sub { client_X_keyboard() }), ), ); @@ -1075,20 +1054,20 @@ sub maintain_clients() { } sub client_X_keyboard() { - my $server_conf = "/etc/X11/XF86Config-4"; - my $client_conf = '/etc/X11/XF86Config-4$$CLIENT$$'; + my $server_conf = "/etc/X11/xorg.conf"; + my $client_conf = '/etc/X11/xorg.conf$$CLIENT$$'; my @server_X_config = cat_($server_conf); foreach (@server_X_config) { chomp; if (/XkbModel/) { - my $oldmodel = `grep XkbModel '/etc/X11/XF86Config-4\$\$CLIENT\$\$'`; + my $oldmodel = `grep XkbModel '/etc/X11/xorg.conf\$\$CLIENT\$\$'`; chomp $oldmodel; my $newmodel = $_; substInFile { s/$oldmodel/$newmodel/ } $client_conf; log::explanations("Sync XkbModel in $client_conf from $server_conf"); } if (/XkbLayout/) { - my $oldlayout = `grep XkbLayout '/etc/X11/XF86Config-4\$\$CLIENT\$\$'`; + my $oldlayout = `grep XkbLayout '/etc/X11/xorg.conf\$\$CLIENT\$\$'`; chomp $oldlayout; my $newlayout = $_; substInFile { s/$oldlayout/$newlayout/ } $client_conf; @@ -1100,7 +1079,7 @@ sub client_X_keyboard() { sub client_set { my ($default) = @_; # we need to change some system files to allow the thin clients - # to access the server - enabling xdmcp and modify hosts.deny/hosts.allow for some security + # to access the server - enabling XDMCP and modify hosts.deny/hosts.allow for some security # we also need to set runlevel to 5 and restart the display manager if ($conf{ALLOW_THIN} == 1) { if (-f "/etc/sysconfig/autologin") { @@ -1113,10 +1092,10 @@ sub client_set { substInFile { s/id:3:initdefault:/id:5:initdefault:/ } "/etc/inittab"; substInFile { s/! DisplayManager.requestPort:/DisplayManager.requestPort:/ } "/etc/X11/xdm/xdm-config"; substInFile { s/Enable=false/Enable=true/ } "/usr/share/config/kdm/kdmrc"; - # This file had 2 "Enable=" entries, one for xdmcp and one for debug + # This file had 2 "Enable=" entries, one for XDMCP and one for debug change_gdm_xdmcp("true"); log::explanations("Modified files /etc/inittab, /etc/X11/xdm/xdm-config, /usr/share/config/kdm/kdmrc, /etc/X11/gdm/gdm.conf"); - # just xdmcp in hosts.allow is enough for xdm & kdm, but gdm doesn't work - x11 doesn't help either + # just XDMCP in hosts.allow is enough for xdm & kdm, but gdm doesn't work - x11 doesn't help either update_hosts_allow("enable"); if ($default eq "all") { my $inittab = '/etc/initab$$CLIENT$$'; @@ -1151,65 +1130,65 @@ sub dhcpd_config() { my $new_config = 0; #- entry boxes for data entry - my $box_subnet = new Gtk2::HBox(0,0); - my $label_subnet = new Gtk2::Label(N("Subnet:")); + my $box_subnet = Gtk2::HBox->new(0,0); + my $label_subnet = Gtk2::Label->new(N("Subnet:")); $label_subnet->set_justify('right'); - my $entry_subnet = new Gtk2::Entry(); + my $entry_subnet = Gtk2::Entry->new; $box_subnet->pack_end($entry_subnet, 0, 0, 10); $box_subnet->pack_end($label_subnet, 0, 0, 10); - my $box_netmask = new Gtk2::HBox(0,0); - my $label_netmask = new Gtk2::Label(N("Netmask:")); + my $box_netmask = Gtk2::HBox->new(0,0); + my $label_netmask = Gtk2::Label->new(N("Netmask:")); $label_netmask->set_justify('left'); - my $entry_netmask = new Gtk2::Entry(); + my $entry_netmask = Gtk2::Entry->new; $box_netmask->pack_end($entry_netmask, 0, 0, 10); $box_netmask->pack_end($label_netmask, 0, 0, 10); - my $box_routers = new Gtk2::HBox(0,0); - my $label_routers = new Gtk2::Label(N("Routers:")); + my $box_routers = Gtk2::HBox->new(0,0); + my $label_routers = Gtk2::Label->new(N("Routers:")); $label_routers->set_justify('left'); - my $entry_routers = new Gtk2::Entry(); + my $entry_routers = Gtk2::Entry->new; $box_routers->pack_end($entry_routers, 0, 0, 10); $box_routers->pack_end($label_routers, 0, 0, 10); - my $box_subnet_mask = new Gtk2::HBox(0,0); - my $label_subnet_mask = new Gtk2::Label(N("Subnet Mask:")); + my $box_subnet_mask = Gtk2::HBox->new(0,0); + my $label_subnet_mask = Gtk2::Label->new(N("Subnet Mask:")); $label_subnet_mask->set_justify('left'); - my $entry_subnet_mask = new Gtk2::Entry(); + my $entry_subnet_mask = Gtk2::Entry->new; $box_subnet_mask->pack_end($entry_subnet_mask, 0, 0, 10); $box_subnet_mask->pack_end($label_subnet_mask, 0, 0, 10); - my $box_broadcast = new Gtk2::HBox(0,0); - my $label_broadcast = new Gtk2::Label(N("Broadcast Address:")); + my $box_broadcast = Gtk2::HBox->new(0,0); + my $label_broadcast = Gtk2::Label->new(N("Broadcast Address:")); $label_broadcast->set_justify('left'); - my $entry_broadcast = new Gtk2::Entry(); + my $entry_broadcast = Gtk2::Entry->new; $box_broadcast->pack_end($entry_broadcast, 0, 0, 10); $box_broadcast->pack_end($label_broadcast, 0, 0, 10); - my $box_domain = new Gtk2::HBox(0,0); - my $label_domain = new Gtk2::Label(N("Domain Name:")); + my $box_domain = Gtk2::HBox->new(0,0); + my $label_domain = Gtk2::Label->new(N("Domain Name:")); $label_domain->set_justify('left'); - my $entry_domain = new Gtk2::Entry(); + my $entry_domain = Gtk2::Entry->new; $box_domain->pack_end($entry_domain, 0, 0, 10); $box_domain->pack_end($label_domain, 0, 0, 10); - my $box_name_servers = new Gtk2::HBox(0,0); - my $box_name_servers_entry = new Gtk2::VBox(0,0); - my $label_name_servers = new Gtk2::Label(N("Name Servers:")); + my $box_name_servers = Gtk2::HBox->new(0,0); + my $box_name_servers_entry = Gtk2::VBox->new(0,0); + my $label_name_servers = Gtk2::Label->new(N("Name Servers:")); $label_name_servers->set_justify('left'); - my $entry_name_server1 = new Gtk2::Entry(); - my $entry_name_server2 = new Gtk2::Entry(); - my $entry_name_server3 = new Gtk2::Entry(); + my $entry_name_server1 = Gtk2::Entry->new; + my $entry_name_server2 = Gtk2::Entry->new; + my $entry_name_server3 = Gtk2::Entry->new; $box_name_servers_entry->pack_start($entry_name_server1, 0, 0, 0); $box_name_servers_entry->pack_start($entry_name_server2, 0, 0, 0); $box_name_servers_entry->pack_start($entry_name_server3, 0, 0, 0); $box_name_servers->pack_end($box_name_servers_entry, 0, 0, 10); $box_name_servers->pack_end($label_name_servers, 0, 0, 10); - my $label_ip_range_start = new Gtk2::Label(N("IP Range Start:")); - my $label_ip_range_end = new Gtk2::Label(N("IP Range End:")); - my $entry_ip_range_start = new Gtk2::Entry(); - my $entry_ip_range_end = new Gtk2::Entry(); + my $label_ip_range_start = Gtk2::Label->new(N("IP Range Start:")); + my $label_ip_range_end = Gtk2::Label->new(N("IP Range End:")); + my $entry_ip_range_start = Gtk2::Entry->new; + my $entry_ip_range_end = Gtk2::Entry->new; #- grab some default entries from the running system @@ -1256,8 +1235,8 @@ sub dhcpd_config() { } gtkpack($status_box, - $dhcpd_box = gtkpack_(new Gtk2::HBox(1,10), - 0, gtkadd(new Gtk2::VBox, + $dhcpd_box = gtkpack_(Gtk2::HBox->new(1,10), + 0, gtkadd(Gtk2::VBox->new, gtkadd($box_subnet), gtkadd($box_netmask), gtkadd($box_routers), @@ -1266,25 +1245,25 @@ sub dhcpd_config() { gtkadd($box_domain), gtkadd($box_name_servers), ), - 0, gtkadd(new Gtk2::VBox(0,0), - new Gtk2::Label(N("dhcpd Server Configuration") . "\n\n" . + 0, gtkadd(Gtk2::VBox->new(0,0), + Gtk2::Label->new(N("dhcpd Server Configuration") . "\n\n" . N("Most of these values were extracted\nfrom your running system.\nYou can modify as needed.")), - new Gtk2::HSeparator, - gtkadd(new Gtk2::HBox, - new Gtk2::Label(N("Dynamic IP Address Pool:")), + Gtk2::HSeparator->new, + gtkadd(Gtk2::HBox->new, + Gtk2::Label->new(N("Dynamic IP Address Pool:")), ), - gtkadd(new Gtk2::HBox(0,0), - gtkadd(new Gtk2::VBox, + gtkadd(Gtk2::HBox->new(0,0), + gtkadd(Gtk2::VBox->new, gtkadd($label_ip_range_start), gtkadd($entry_ip_range_start), ), - gtkadd(new Gtk2::VBox, + gtkadd(Gtk2::VBox->new, gtkadd($label_ip_range_end), gtkadd($entry_ip_range_end), ), ), - gtkadd(new Gtk2::HBox), - gtksignal_connect(new Gtk2::Button($button_msg), clicked => + gtkadd(Gtk2::HBox->new), + gtksignal_connect(Gtk2::Button->new($button_msg), clicked => sub { if ($new_config == 1) { write_dhcpd_config("full", @@ -1304,7 +1283,7 @@ sub dhcpd_config() { } } ), - new Gtk2::HBox(0,10), + Gtk2::HBox->new(0,10), ), ), ); @@ -1314,7 +1293,7 @@ sub dhcpd_config() { } sub get_net_interface() { - my @interfaces = `/sbin/route | grep -v lo | tail +3 | awk '{print \$8}' | uniq`; + my @interfaces = `/sbin/route | grep -v lo | grep -v vmnet | tail +3 | awk '{print \$8}' | uniq`; chop @interfaces; my $count = @interfaces; if ($count == 1) { @@ -1450,11 +1429,10 @@ sub write_eb_image { } } -sub enable_ts { +sub enable_ts() { #- setup default config files for terminal server - my $cmd_line = @_; - check_gdm($cmd_line); + check_gdm(); @buff = (); $buff[0] = "Enabling Terminal Server...\n\n"; @@ -1486,7 +1464,6 @@ sub enable_ts { $squash = "no_root_squash" if $msec{SECURE_LEVEL} > 2; my $exports = "#/etc/exports - generated by drakTermServ\n\n"; if ($nfs_subnet eq '') { - $nfs_subnet = get_subnet_from_sys(); $nfs_mask = get_mask_from_sys(); my $sys_broadcast = get_broadcast_from_sys(); $nfs_subnet = get_subnet_from_sys($sys_broadcast, $nfs_mask); @@ -1507,9 +1484,8 @@ sub enable_ts { show_status(@buff); } -sub disable_ts { +sub disable_ts() { #- restore pre-terminal server configs - my $cmd_line = @_; @buff = (); $buff[0] = "Disabling Terminal Server...\n\n"; @@ -1553,14 +1529,14 @@ sub service_change { $buff_index; } -sub start_ts { +sub start_ts() { #- start the terminal server - my $cmd_line = @_; my $pcimap = "/etc/dhcpd.conf.etherboot-pcimap.include"; @buff = (); if (-f $pcimap) { $buff[0] = "Starting Terminal Server...\n\n"; + `touch /etc/dhcpd.conf.etherboot.kernel` if ! -f "/etc/dhcpd.conf.etherboot.kernel"; my $buff_index = service_change("dhcpd", "start", 2); $buff_index = service_change("clusternfs", "start", $buff_index); $buff[$buff_index] = "\n\tDone!"; @@ -1576,9 +1552,8 @@ sub start_ts { show_status(@buff); } -sub stop_ts { +sub stop_ts() { #- stop the terminal server - my $cmd_line = @_; @buff = (); $buff[0] = "Stopping Terminal Server...\n\n"; @@ -1608,7 +1583,7 @@ sub show_status() { } sub adduser { - my ($cmd_line, $username) = @_; + my ($username) = @_; my @active_users = cat_("/etc/shadow"); my @passwd_users = cat_("/etc/passwd"); my @ts_users = cat_('/etc/shadow$$CLIENT$$'); @@ -1627,8 +1602,8 @@ sub adduser { } else { #in but password changed print N("%s passwd bad in Terminal Server - rewriting...\n", $username); - deluser($cmd_line, $username); - adduser($cmd_line, $username); + deluser($username); + adduser($username); } } else { # new ts user @@ -1654,7 +1629,7 @@ sub adduser { sub deluser { # del a user from the shadow$$CLIENT$$ file - my ($cmd_line, $username) = @_; + my ($username) = @_; my $i; my $user_deleted; my @ts_users = cat_('/etc/shadow$$CLIENT$$'); @@ -1700,7 +1675,7 @@ sub deluser { sub addclient { #- add a new client entry after checking for dups - my ($cmd_line, $hostname, $mac, $ip, $nbi, $is_thin, $local_config) = @_; + my ($hostname, $mac, $ip, $nbi, $is_thin, $local_config) = @_; my $host_in_use = 0; my $mac_in_use = 0; @@ -1748,7 +1723,7 @@ sub addclient { sub delclient { #- find a client and delete the entry in dhcpd.conf - my ($cmd_line, $hostname) = @_; + my ($hostname) = @_; my $host_found; my %ts_clients = read_dhcpd_conf(); @@ -1914,11 +1889,11 @@ sub client_hdw_config { # make all the local config files cp_af("/etc/sysconfig/mouse", "/etc/sysconfig/mouse$suffix") if -f "/etc/sysconfig/mouse"; cp_af("/etc/X11/XF86Config", "/etc/X11/XF86Config$suffix") if -f "/etc/X11/XF86Config"; - cp_af('/etc/X11/XF86Config-4$$CLIENT$$', "/etc/X11/XF86Config-4$suffix") if -f '/etc/X11/XF86Config-4$$CLIENT$$'; - cp_af("/dev/null", "/etc/modules.conf$suffix"); - cp_af("/dev/null", "/etc/modules$suffix"); - cp_af("/dev/null", "/etc/modprobe.conf$suffix"); - cp_af("/dev/null", "/etc/modprobe.preload$suffix"); + cp_af('/etc/X11/xorg.conf$$CLIENT$$', "/etc/X11/xorg.conf$suffix") if -f '/etc/X11/xorg.conf$$CLIENT$$'; + output("/etc/modules.conf$suffix", ''); + output("/etc/modules$suffix", ''); + output("/etc/modprobe.conf$suffix", ''); + output("/etc/modprobe.preload$suffix", ''); # create mount points so they can be edited by the client my $mnt_access = "$client_ip(rw,no_root_squash)"; append_to_file("/etc/exports", "/etc/sysconfig/mouse$suffix\t$mnt_access\n"); @@ -1927,7 +1902,7 @@ sub client_hdw_config { append_to_file("/etc/exports", "/etc/modprobe.conf$suffix\t$mnt_access\n"); append_to_file("/etc/exports", "/etc/modprobe.preload$suffix\t$mnt_access\n"); append_to_file("/etc/exports", "/etc/X11/XF86Config$suffix\t$mnt_access\n"); - append_to_file("/etc/exports", "/etc/X11/XF86Config-4$suffix\t$mnt_access\n"); + append_to_file("/etc/exports", "/etc/X11/xorg.conf$suffix\t$mnt_access\n"); } else { log::explanations("Removing root access for $client_ip"); eval { rm_rf("/etc/shadow\$\$IP=$client_ip\$\$") }; @@ -1965,7 +1940,7 @@ sub clean_client_config { eval { rm_rf("/etc/modprobe.conf$suffix") }; eval { rm_rf("/etc/modprobe.preload$suffix") }; eval { rm_rf("/etc/X11/XF86Config$suffix") }; - eval { rm_rf("/etc/X11/XF86Config-4$suffix") }; + eval { rm_rf("/etc/X11/xorg.conf$suffix") }; eval { rm_rf("/etc/sysconfig/network$suffix") }; remove_client_mounts($client_ip); } |
