php IHDR w Q )Ba pHYs sRGB gAMA a IDATxMk\U s&uo,mD )Xw+e?tw.oWp;QHZnw`gaiJ9̟灙a=nl[ ʨ G;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ y H@E7j 1j+OFRg}ܫ;@Ea~ j`u'o> j- $_q?qS XzG'ay
files >> /usr/libexec/webmin/virtual-server/ |
files >> //usr/libexec/webmin/virtual-server/list-commands.pl |
#!/usr/bin/perl =head1 list-commands.pl Lists API scripts available This command lists all API commands available, categorized by type and with a brief summary of each. It is used to produce the output from the virtualmin --help command. By default the output is in a human-readable format, but you can switch to a more parsable format with the C<--multiline> flag. =cut package virtual_server; if (!$module_name) { $main::no_acl_check++; $ENV{'WEBMIN_CONFIG'} ||= "/etc/webmin"; $ENV{'WEBMIN_VAR'} ||= "/var/webmin"; if ($0 =~ /^(.*)\/[^\/]+$/) { chdir($pwd = $1); } else { chop($pwd = `pwd`); } $0 = "$pwd/list-features.pl"; require './virtual-server-lib.pl'; $< == 0 || die "list-commands.pl must be run as root"; } # Parse command-line args my $short = 1; while(@ARGV > 0) { local $a = shift(@ARGV); if ($a eq "--short") { $short = 1; } elsif ($a eq "--long") { $short = 0; } elsif ($a eq "--multiline") { $multiline = 1; } elsif ($a eq "--name-only") { $nameonly = 1; } else { &usage("Unknown parameter $a"); } } # Work out the max command length, for formatting my $maxlen = 0; foreach my $c (&list_api_categories()) { my ($cname, @cglobs) = @$c; foreach my $cmd (map { glob($_) } @cglobs) { my $scmd = $cmd; $scmd =~ s/\.pl$// if ($short); $maxlen = length($scmd) if (length($scmd) > $maxlen); } } # Go through the categories my @skips = &list_api_skip_scripts(); my %cdescs = &list_api_category_descs(); my %done; my $fmt = "\%-${maxlen}.${maxlen}s \%s\n"; foreach my $c (&list_api_categories()) { my ($cname, @cglobs) = @$c; @cglobs = map { my $g = $_; ($g, map { "$root_directory/$_/$g" } @plugins) } @cglobs; my @cmds = map { glob($_) } @cglobs; @cmds = grep { &indexof($_, @skips) < 0 && !$done{$_} } @cmds; # Print a line for each command my $donehead = 0; foreach my $cmd (@cmds) { my $src = &read_file_contents($cmd); next if ($src !~ /=head1\s+(.*)\n\n(.*)\n/); my $desc = $2; my $scmd = $cmd; $scmd =~ s/^.*\///; $scmd =~ s/\.pl$// if ($short); if ($multiline) { # Show a block for the command print $scmd,"\n"; print " Description: $desc\n"; print " Category: $cname\n"; } elsif ($nameonly) { # Just command name print $scmd,"\n"; } else { # Just one line, maybe wrapped my $wrap; while (length($desc) + $maxlen > 79) { # Line is too long - wrap it by taking off # a word $desc =~ s/\s(\S+)$//; $wrap = $1." ".$wrap; } if (!$donehead) { # Category header print $cname,"\n"; print ("-" x length($cname)); print "\n"; $donehead = 1; } printf $fmt, $scmd, $desc; printf $fmt, "", $wrap if ($wrap); } $done{$cmd}++; } if ($donehead && !$multiline && !$nameonly) { print "\n"; } } sub usage { print "$_[0]\n\n" if ($_[0]); print "Lists available command-line API scripts.\n"; print "\n"; print "virtualmin list-commands [--short]\n"; print " [--multiline | --nameonly]\n"; exit(1); }y~or5J={Eeu磝Qk ᯘG{?+]ן?wM3X^歌>{7پK>on\jy Rg/=fOroNVv~Y+ NGuÝHWyw[eQʨSb> >}Gmx[o[<{Ϯ_qFvM IENDB`