init
This commit is contained in:
104
local/htdocs/admin/console/index.bml
Executable file
104
local/htdocs/admin/console/index.bml
Executable file
@@ -0,0 +1,104 @@
|
||||
<html>
|
||||
<head><title>Admin Console</title></head>
|
||||
<body>
|
||||
<?_code
|
||||
|
||||
use strict;
|
||||
use vars qw(%POST %cmd);
|
||||
|
||||
my ($ret, $sth);
|
||||
|
||||
my $commands = $POST{'commands'};
|
||||
my $remote = LJ::get_remote();
|
||||
|
||||
if ($commands)
|
||||
{
|
||||
unless (LJ::did_post()) {
|
||||
return "<b>Error:</b> requires post.";
|
||||
}
|
||||
|
||||
if ($remote && $remote->{'user'} ne $POST{'remoteuser'}) {
|
||||
return "<b>Error:</b> invalid user.";
|
||||
}
|
||||
|
||||
$ret .= "[ <A HREF=\"./\">console</A> | <A HREF=\"reference.bml\">reference</A> ]<P>";
|
||||
|
||||
foreach my $cmd (split(/\n/, $commands))
|
||||
{
|
||||
my @args = LJ::Con::parse_line($cmd);
|
||||
next unless @args;
|
||||
|
||||
my $first = 1;
|
||||
$ret .= "<P><TABLE BORDER=1 CELLPADDING=5><TR>";
|
||||
foreach (@args) {
|
||||
my $arg = BML::eall($_);
|
||||
if ($first) {
|
||||
$ret .= "<TD><B>$arg</B></TD>";
|
||||
$first = 0;
|
||||
} else {
|
||||
$ret .= "<TD>$arg</TD>";
|
||||
}
|
||||
}
|
||||
$ret .= "</TR></TABLE>";
|
||||
|
||||
my @output;
|
||||
my $rv;
|
||||
|
||||
# TODO: make the entire console library not take $db args.
|
||||
my $dbh = LJ::get_db_writer();
|
||||
$rv = LJ::Con::execute($dbh, $remote, \@args, \@output);
|
||||
|
||||
unless ($rv) { $ret .= "<P><B><FONT COLOR=#FF0000>Failed!</FONT></B>"; }
|
||||
if (@output) {
|
||||
$ret .= "<PRE><B>";
|
||||
foreach my $line (@output) {
|
||||
my $color = "#000000";
|
||||
if ($line->[0] eq "error") {
|
||||
$color = "#FF0000";
|
||||
}
|
||||
if ($line->[0] eq "info") {
|
||||
$color = "#008800";
|
||||
}
|
||||
|
||||
$ret .= "<FONT COLOR=$color>".LJ::eall($line->[1])."</FONT>\n";
|
||||
|
||||
}
|
||||
$ret .= "</B></PRE>";
|
||||
}
|
||||
}
|
||||
|
||||
$ret .= "<form method=post><p>";
|
||||
$ret .= "<tt>enter commands:</tt><br>";
|
||||
$ret .= LJ::html_hidden('remoteuser', $remote->{'user'}) if $remote;
|
||||
$ret .= "<textarea name=commands rows=3 cols=60 wrap=off></textarea> ";
|
||||
$ret .= "<input type=submit value=\"execute\"></form>\n";
|
||||
|
||||
return $ret;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
$ret .= "[ console | <A HREF=\"reference.bml\">reference</A> ]<P>";
|
||||
|
||||
$ret .= "<FORM METHOD=POST>";
|
||||
$ret .= LJ::html_hidden('remoteuser', $remote->{'user'}) if $remote;
|
||||
$ret .= "<TABLE WIDTH=400><TR VALIGN=BOTTOM>";
|
||||
$ret .= "<TD><IMG SRC=\"$LJ::IMGPREFIX/nerd_small.jpg\" WIDTH=167 HEIGHT=169 HSPACE=2 VSPACE=2></TD>";
|
||||
$ret .= "<TD><B><TT>command console.</TT></B>";
|
||||
$ret .= "<P>welcome to the console. from here administrators can do administrative type things. you will forget the commands, so there is a <A HREF=\"reference.bml\">reference</A>.</TD>";
|
||||
$ret .= "</TR>";
|
||||
$ret .= "<TR><TD COLSPAN=2>";
|
||||
$ret .= "<P><tt>enter commands:</tt><BR>";
|
||||
$ret .= "<TEXTAREA NAME=commands ROWS=10 COLS=60 WRAP=OFF></TEXTAREA></TD></TR>\n";
|
||||
$ret .= "<TR><TD COLSPAN=2 ALIGN=RIGHT><INPUT TYPE=SUBMIT VALUE=\"execute\"></P></TD></TR></TABLE></FORM>\n";
|
||||
return $ret;
|
||||
}
|
||||
|
||||
_code?>
|
||||
</body>
|
||||
</html>
|
||||
<?_c <LJDEP>
|
||||
lib: cgi-bin/console.pl, cgi-bin/ljlib.pl
|
||||
link: htdocs/admin/console/reference.bml
|
||||
post: htdocs/admin/console/index.bml
|
||||
</LJDEP> _c?>
|
||||
60
local/htdocs/admin/console/reference.bml
Executable file
60
local/htdocs/admin/console/reference.bml
Executable file
@@ -0,0 +1,60 @@
|
||||
<html><head><title>Console Reference</title></head>
|
||||
<body>
|
||||
|
||||
[ <a href="./">console</a> | reference ]
|
||||
|
||||
<P><B>Grammar</B>
|
||||
<BR>Think of this like a DOS or <tt>bash</tt> prompt. The first word is a command. Every word after that is an argument to that command. Every command has a different number of required and optional parameters. White space delimits arguments. If you need a space in an argument, put double quotes around the whole thing. If you need double quotes and spaces in an argument, escape the quote with a backslash (\) first. If you need to do a backslash, escape that with a backslash.
|
||||
<P>It's pretty straight-forward. If you're confused, ask.
|
||||
|
||||
<P><B>Command Reference</B>
|
||||
<BR>Arguments in <angle brackets> are required. Arguments in [brackets] are optional. If there is more than one optional argument, you can't skip one and provide one after it. Once you skip one, you have to skip the rest.
|
||||
|
||||
<?_code
|
||||
|
||||
use strict;
|
||||
use vars qw(%cmd);
|
||||
|
||||
my ($ret, $sth);
|
||||
|
||||
$ret .= "<dl> \n";
|
||||
|
||||
foreach my $cmdname (sort keys %LJ::Con::cmd)
|
||||
{
|
||||
my $cmd = $LJ::Con::cmd{$cmdname};
|
||||
next if ($cmd->{'hidden'});
|
||||
|
||||
my $anchor = "$cmdname";
|
||||
$ret .= "<a href='\#$anchor'>$cmdname</a> \n";
|
||||
}
|
||||
$ret .= "</dl><dl> \n";
|
||||
|
||||
foreach my $cmdname (sort keys %LJ::Con::cmd)
|
||||
{
|
||||
my $cmd = $LJ::Con::cmd{$cmdname};
|
||||
next if ($cmd->{'hidden'});
|
||||
|
||||
my $args = LJ::ehtml($cmd->{'argsummary'});
|
||||
my $anchor = "$cmdname";
|
||||
$ret .= "<a name='$anchor'><dt><p><table width=100% cellpadding=2><tr><td bgcolor=#d0d0d0>";
|
||||
$ret .= "<tt><a style='text-decoration: none' href='\#$anchor'><b>$cmdname</b></a> $args</tt></td></tr></table>";
|
||||
$ret .= "</dt><dd><p>$cmd->{'des'}";
|
||||
if ($cmd->{'args'}) {
|
||||
my @des = @{$cmd->{'args'}};
|
||||
$ret .= "<p><dl>";
|
||||
while (my ($arg, $des) = splice(@des, 0, 2)) {
|
||||
$ret .= "<dt><b><i>$arg</i></b></dt><dd>$des</dd>";
|
||||
}
|
||||
$ret .= "</dl>";
|
||||
}
|
||||
$ret .= "</dd></a> \n";
|
||||
}
|
||||
$ret .= "</dl>";
|
||||
return $ret;
|
||||
|
||||
_code?>
|
||||
|
||||
</body></html><?_c <LJDEP>
|
||||
lib: cgi-bin/console.pl, cgi-bin/ljlib.pl
|
||||
link: htdocs/admin/console/index.bml
|
||||
</LJDEP> _c?>
|
||||
Reference in New Issue
Block a user