1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
#!/usr/bin/perl
# vim: set et ts=4 sw=4:
#*****************************************************************************
#
# Copyright (c) 2014 - 2015 Angelo naselli <anaselli@linux.it>
#
# 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 AdminPanel::Privileges;
use yui;
# TODO from configuration file?
# TODO localization for descriptions
my %modules = (
log => {
exec => '/usr/bin/manalog',
descr => "manalog: journalct log reader",
},
user => {
exec => '/usr/bin/manauser',
descr => "manauser: user manager",
},
service => {
exec => '/usr/bin/manaservice',
descr => "manaservice: service manager",
user_mode => 1,
},
dm => {
exec => '/usr/bin/manadm',
descr => "manadm: login manager configuration",
},
clock => {
exec => '/usr/bin/manaclock',
descr => "manaclock: date/time manager",
},
host => {
exec => '/usr/bin/manahost',
descr => "manahost: hosts manager",
},
pan => {
exec => '/usr/bin/mpan',
descr => "mpan: admin panel",
},
proxy => {
exec => '/usr/bin/manaproxy',
descr => "manaproxy: proxy manager",
},
rpm => {
exec => '/usr/bin/rpmdragora',
descr => "rpmdragora: rpm install manager",
},
update => {
exec => '/usr/bin/dragoraUpdate',
descr => "dragoraUpdate: rpm update manager",
},
wall => {
exec => '/usr/bin/manawall',
descr => "manawall: firewall manager",
},
);
my $cmdline = new yui::YCommandLine;
usage() if($cmdline->find("--help") > 0 || $cmdline->find("-h") > 0);
usage() if scalar(@ARGV) < 1;
my $cmd = $ARGV[0];
die "Command ". $cmd . " not found!\n" if !defined($modules{$cmd});
my $mod = $modules{$cmd}->{exec};
shift(@ARGV);
eval {
if(!$modules{$cmd}->{user_mode} && is_root_capability_required()) {
system("/usr/bin/pkexec", $mod, @ARGV);
} else {
system($mod, @ARGV);
}
};
if ( $@ ) {
print "ERROR: " . $@ ."\n";
}
#=============================================================
=head2 usage
=head3 DESCRIPTION
usage print the mana usage help
=cut
#=============================================================
sub usage {
print "\n";
print "Usage mana --help | -h print this help\n";
print "Usage mana <command> [args...]\n\n";
print "valid <commands>:\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);
}
|