#!/usr/bin/perl -wT #---------------------------------------------------------------------- # copyright (C) 1999-2006 Mitel Corporation # # 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 of the License, 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 #---------------------------------------------------------------------- package esmith::console; use strict; use Locale::gettext; use esmith::ConfigDB::unsaved; use esmith::console; use esmith::console::quitConsole; my $console = esmith::console->new(); my $db = esmith::ConfigDB::unsaved->open; my $termType = $db->get_prop('serial-console', 'Terminal') || ''; my $SystemName = $db->get_value('SystemName'); my $DomainName = $db->get_value('DomainName'); $ENV{TERM} = $termType if($termType); system '/bin/sh', '/etc/profile.d/lang.sh'; my %menu2object = (); my @args = (); my @items = (); my $menu_dir = '/sbin/e-smith/console-menu-items'; opendir ITEMS, $menu_dir; while (defined (my $item = readdir ITEMS )) { next unless -f "$menu_dir/$item"; if ($item =~ /([\w\.]+)/) { $item = $1; } else { warn "Don't know what to do with $menu_dir/$item\n"; next; } my $obj = require "$menu_dir/$item"; push @items, $obj; } close ITEMS; my $number = 1; foreach my $item (sort { $a->order <=> $b->order } @items) { next if ($item->order < 0); push @args, $number . '.', gettext($item->name); $menu2object{$number++ . '.'} = $item; } my $quit = esmith::console::quitConsole->new; while (1) { #---------------------------------------- # Reload the configuration from file #---------------------------------------- $db->reload; my $title = gettext('Server console'); $title .= " (${SystemName}.${DomainName}) "; $title .= gettext('** unsaved changes **') if ( $db->get_value('UnsavedChanges') eq 'yes' ); my ($rc, $choice) = $console->menu_page ( title => $title, text => gettext('Welcome to the server console!') . "\n\n" . gettext('Use the Arrow and Tab keys to make your selection, then press Enter.'), argsref => \@args, left => gettext('Exit'), ); $choice = ($rc == 0) ? $menu2object{$choice} : $quit; $choice->doit($console, $db); }