#!/usr/bin/perl # vim: set et ts=4 sw=4: #***************************************************************************** # # Copyright (c) 2014 - 2015 Angelo naselli # # This file is part of manatools # # # 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. # #***************************************************************************** use ManaTools::Privileges; use ManaTools::Shared; use ManaTools::Shared::Locales; my $locale_dir = ManaTools::Shared::custom_locale_dir(); my $loc = ManaTools::Shared::Locales->new( domain_name => 'manatools', dir_name => $locale_dir, ); my %modules = ( log => { exec => '/usr/bin/manalog', descr => $loc->N("manalog: journalct log reader"), }, user => { exec => '/usr/bin/manauser', descr => $loc->N("manauser: user manager"), }, service => { exec => '/usr/bin/manaservice', descr => $loc->N("manaservice: service manager"), user_mode => 1, }, dm => { exec => '/usr/bin/manadm', descr => $loc->N("manadm: login manager configuration"), }, clock => { exec => '/usr/bin/manaclock', descr => $loc->N("manaclock: date/time manager"), }, host => { exec => '/usr/bin/manahost', descr => $loc->N("manahost: hosts manager"), }, pan => { exec => '/usr/bin/mpan', descr => $loc->N("mpan: admin panel"), }, proxy => { exec => '/usr/bin/manaproxy', descr => $loc->N("manaproxy: proxy manager"), }, rpm => { exec => '/usr/bin/rpmdragora', descr => $loc->N("rpmdragora: rpm install manager"), }, update => { exec => '/usr/bin/dragoraUpdate', descr => $loc->N("dragoraUpdate: rpm update manager"), }, wall => { exec => '/usr/bin/manawall', descr => $loc->N("manawall: firewall manager"), }, ); usage() if ManaTools::Shared::help_requested() ; usage() if scalar(@ARGV) < 1; my $cmd = $ARGV[0]; eval { die $loc->N("Command <%s> not found!\n", $cmd) if !defined($modules{$cmd}); my $mod = $modules{$cmd}->{exec}; shift(@ARGV); if(!$modules{$cmd}->{user_mode} && is_root_capability_required()) { system("/usr/bin/pkexec", $mod, @ARGV); } else { system($mod, @ARGV); } }; if ( $@ ) { print "\n" . $loc->N("ERROR: ") . $@ ; usage(), } #============================================================= =head2 usage =head3 DESCRIPTION usage print the mana usage help =cut #============================================================= sub usage { print "\n"; print $loc->N("Usage mana --help | -h print this help\n"); print $loc->N("Usage mana [args...]\n\n"); print $loc->N("valid :\n"); foreach my $key (sort keys %modules) { # lenght + 2 chars "<" and ">" print "<" . $key . (length $key >= 6 ? ">\t" : ">\t\t") . $modules{$key}->{descr} . "\n"; } print "\n"; exit(0); }