mysql/ 0040755 0005671 0000012 00000000000 10340204652 011703 5 ustar jcameron wheel mysql/config-suse-linux-7.1-* 0100644 0005671 0000012 00000000532 10310022701 015622 0 ustar jcameron wheel start_cmd=/etc/init.d/mysql start
stop_cmd=/etc/init.d/mysql stop
mysql=/usr/bin/mysql
mysqldump=/usr/bin/mysqldump
mysqlimport=/usr/bin/mysqlimport
mysql_libs=
mysqladmin=/usr/bin/mysqladmin
mysqlshow=/usr/bin/mysqlshow
perpage=25
style=0
add_mode=1
nodbi=0
access=*: *
blob_mode=0
date_subs=0
passwd_mode=0
mysql_data=/var/lib/mysql
max_dbs=50
mysql/view_table.cgi 0100755 0005671 0000012 00000035335 10330051526 014520 0 ustar jcameron wheel #!/usr/local/bin/perl
# view_table.cgi
# Display all data in some table
require './mysql-lib.pl';
if ($config{'charset'}) {
$force_charset = $config{'charset'};
}
if ($ENV{'CONTENT_TYPE'} !~ /boundary=/) {
&ReadParse();
}
else {
&ReadParseMime();
}
&can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'});
@str = &table_structure($in{'db'}, $in{'table'});
foreach $s (@str) {
$keyed++ if ($s->{'key'} eq 'PRI');
}
if ($in{'field'}) {
# A simple search
$search = "where "."estr($in{'field'})." ".
&make_like($in{'match'}, $in{'for'});
$searchargs = "&field=".&urlize($in{'field'}).
"&for=".&urlize($in{'for'}).
"&match=".&urlize($in{'match'});
$searchhids = &ui_hidden("field", $in{'field'})."\n".
&ui_hidden("for", $in{'for'})."\n".
&ui_hidden("match", $in{'match'})."\n";
}
elsif ($in{'advanced'}) {
# An advanced search
for($i=0; defined($in{"field_$i"}); $i++) {
if ($in{"field_$i"}) {
push(@adv, "estr($in{"field_$i"})." ".
&make_like($in{"match_$i"}, $in{"for_$i"}));
$searchargs .= "&field_$i=".&urlize($in{"field_$i"}).
"&for_$i=".&urlize($in{"for_$i"}).
"&match_$i=".&urlize($in{"match_$i"});
$searchhids .= &ui_hidden("field_$i", $in{"field_$i"})."\n".
&ui_hidden("for_$i", $in{"for_$i"})."\n".
&ui_hidden("match_$i", $in{"match_$i"})."\n";
}
}
if (@adv) {
$search = "where (".join($in{'and'} ? " and " : " or ",
@adv).")";
$searchhids .= &ui_hidden("and", $in{'and'})."\n".
&ui_hidden("advanced", 1)."\n";
$searchargs .= "&and=".$in{'and'}.
"&advanced=1";
}
}
if ($in{'delete'}) {
# Deleting selected rows
$d = &execute_sql($in{'db'}, "select * from "."estr($in{'table'}).
" $search limit ".$in{'start'}.",".$config{'perpage'});
@t = @{$d->{'titles'}};
$count = 0;
foreach $r (split(/\0/, $in{'row'})) {
local @where;
local @r = @{$d->{'data'}->[$r]};
for($i=0; $i<@t; $i++) {
if ($str[$i]->{'key'} eq 'PRI') {
if ($r[$i] eq 'NULL') {
push(@where,
"estr($t[$i])." is null");
}
else {
$r[$i] =~ s/'/''/g;
push(@where,
"estr($t[$i])." = '$r[$i]'");
}
}
}
&execute_sql_logged($in{'db'},
"delete from "."estr($in{'table'}).
" where ".join(" and ", @where));
$count++;
}
&webmin_log("delete", "data", $count, \%in);
&redirect("view_table.cgi?db=$in{'db'}&".
"table=".&urlize($in{'table'})."&start=$in{'start'}".
$searchargs);
}
elsif ($in{'save'}) {
# Update edited rows
$d = &execute_sql($in{'db'}, "select * from "."estr($in{'table'})." $search limit ".$in{'start'}.",".$config{'perpage'});
@t = @{$d->{'titles'}};
$count = 0;
for($j=0; $j<$config{'perpage'}; $j++) {
next if (!defined($in{"${j}_$t[0]"}));
local (@where, @set);
local @r = @{$d->{'data'}->[$j]};
local @params;
for($i=0; $i<@t; $i++) {
$r[$i] =~ s/'/''/g;
if ($str[$i]->{'key'} eq 'PRI') {
if ($r[$i] eq 'NULL') {
push(@where,
"estr($t[$i])." is null");
}
else {
push(@where,
"estr($t[$i])." = '$r[$i]'");
}
}
local $ij = $in{"${j}_$t[$i]"};
local $ijdef = $in{"${j}_$t[$i]_def"};
next if ($ijdef || !defined($ij));
if (!$config{'blob_mode'} || !&is_blob($str[$i])) {
$ij =~ s/\r//g;
}
push(@set, "estr($t[$i])." = ?");
push(@params, $ij eq '' ? undef : $ij);
}
&execute_sql_logged($in{'db'},
"update "."estr($in{'table'})." set ".
join(" , ", @set)." where ".
join(" and ", @where), @params);
$count++;
}
&webmin_log("modify", "data", $count, \%in);
&redirect("view_table.cgi?db=$in{'db'}&".
"table=".&urlize($in{'table'})."&start=$in{'start'}".
$searchargs);
}
elsif ($in{'savenew'}) {
# Adding a new row
for($j=0; $j<@str; $j++) {
if (!$config{'blob_mode'} || !&is_blob($str[$j])) {
$in{$j} =~ s/\r//g;
}
push(@set, $in{$j} eq '' ? undef : $in{$j});
}
&execute_sql_logged($in{'db'}, "insert into "."estr($in{'table'}).
" values (".join(" , ", map { "?" } @set).")", @set);
&redirect("view_table.cgi?db=$in{'db'}&".
"table=".&urlize($in{'table'})."&start=$in{'start'}".
$searchargs);
&webmin_log("create", "data", undef, \%in);
}
elsif ($in{'cancel'} || $in{'new'}) {
undef($in{'row'});
}
$desc = &text('table_header', "$in{'table'}", "$in{'db'}");
&ui_print_header($desc, $text{'view_title'}, "");
$d = &execute_sql_safe($in{'db'},
"select count(*) from "."estr($in{'table'})." $search");
$total = int($d->{'data'}->[0]->[0]);
if ($in{'jump'} > 0) {
$in{'start'} = int($in{'jump'} / $config{'perpage'}) *
$config{'perpage'};
if ($in{'start'} >= $total) {
$in{'start'} = $total - $config{'perpage'};
$in{'start'} = int(($in{'start'} / $config{'perpage'}) + 1) *
$config{'perpage'};
}
}
else {
$in{'start'} = int($in{'start'});
}
if ($in{'new'} && $total > $config{'perpage'}) {
# go to the last screen for adding a row
$in{'start'} = $total - $config{'perpage'};
$in{'start'} = int(($in{'start'} / $config{'perpage'}) + 1) *
$config{'perpage'};
}
if ($in{'start'} || $total > $config{'perpage'}) {
print "
\n";
if ($in{'start'}) {
printf "".
"
\n",
$in{'db'}, $in{'table'},
$in{'start'} - $config{'perpage'},
$searchargs;
}
print "",&text('view_pos', $in{'start'}+1,
$in{'start'}+$config{'perpage'} > $total ? $total :
$in{'start'}+$config{'perpage'}, $total),"\n";
if ($in{'start'}+$config{'perpage'} < $total) {
printf "".
"
",
$in{'db'}, $in{'table'},
$in{'start'} + $config{'perpage'},
$searchargs;
}
print "\n";
}
if ($in{'field'}) {
# Show details of simple search
print "\n";
}
elsif ($in{'advanced'}) {
# Show details of advanced search
print "\n";
}
if ($config{'blob_mode'}) {
print "\n";
if (!$in{'field'} && $total > $config{'perpage'}) {
print "
\n";
print "\n";
print "\n";
print "\n";
print "
\n";
print "\n";
print "
\n";
}
if ($access{'edonly'}) {
&ui_print_footer("edit_dbase.cgi?db=$in{'db'}",$text{'dbase_return'},
"", $text{'index_return'});
}
else {
&ui_print_footer("edit_table.cgi?db=$in{'db'}&table=".
&urlize($in{'table'}),
$text{'table_return'},
"edit_dbase.cgi?db=$in{'db'}", $text{'dbase_return'},
"", $text{'index_return'});
}
# make_like(mode, for)
sub make_like
{
local ($match, $for) = @_;
return $match == 0 ? "like \"%$for%\"" :
$match == 1 ? "like \"$for\"" :
$match == 2 ? "not like \"%$for%\"" :
$match == 3 ? "not like \"$for\"" : " = \"\"";
}
mysql/newdb_form.cgi 0100755 0005671 0000012 00000002041 10153015752 014511 0 ustar jcameron wheel #!/usr/local/bin/perl
# newdb_form.cgi
# Display a form for creating a new database
require './mysql-lib.pl';
$access{'create'} || &error($text{'newdb_ecannot'});
&ui_print_header(undef, $text{'newdb_title'}, "", "newdb_form");
print "\n";
&ui_print_footer("", $text{'index_return'});
mysql/edit_user.cgi 0100755 0005671 0000012 00000005077 10255252606 014372 0 ustar jcameron wheel #!/usr/local/bin/perl
# edit_user.cgi
# Display a form for editing or creating a MySQL user
require './mysql-lib.pl';
&ReadParse();
$access{'perms'} == 1 || &error($text{'perms_ecannot'});
if ($in{'new'}) {
&ui_print_header(undef, $text{'user_title1'}, "", "create_user");
}
else {
&ui_print_header(undef, $text{'user_title2'}, "", "edit_user");
$d = &execute_sql_safe($master_db, "select * from user order by user");
$u = $d->{'data'}->[$in{'idx'}];
}
print "\n";
&ui_print_footer('list_users.cgi', $text{'users_return'},
"", $text{'index_return'});
mysql/edit_dbase.cgi 0100755 0005671 0000012 00000007515 10313452662 014470 0 ustar jcameron wheel #!/usr/local/bin/perl
# edit_dbase.cgi
# Show database tables
require './mysql-lib.pl';
&ReadParse();
&can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'});
@titles = grep { &can_edit_db($_) } &list_databases();
$desc = "$in{'db'}";
if (@titles == 1 && $module_info{'usermin'}) {
# Single-DB mode
&ui_print_header($desc, $text{'dbase_title'}, "", "edit_dbase", 1, 1);
$single = 1;
}
else {
&ui_print_header($desc, $text{'dbase_title'}, "", "edit_dbase");
}
@titles = &list_tables($in{'db'});
if ($in{'search'}) {
# Limit to those matching search
@titles = grep { /\Q$in{'search'}\E/i } @titles;
print "\n";
}
if (@titles > $max_dbs && !$in{'search'}) {
# Too many tables to show .. display search form
print &ui_form_start("edit_dbase.cgi");
print &ui_hidden("db", $in{'db'}),"\n";
print $text{'dbase_toomany'},"\n";
print &ui_textbox("search", undef, 20),"\n";
print &ui_submit($text{'index_search'}),"
\n";
print &ui_form_end();
}
elsif (@titles) {
@icons = map { "images/table.gif" } @titles;
@links = map { "edit_table.cgi?db=$in{'db'}&table=".&urlize($_) }
@titles;
#&show_buttons();
print &ui_form_start("drop_tables.cgi");
print &ui_hidden("db", $in{'db'});
print &select_all_link("d", $form),"\n";
print &select_invert_link("d", $form),"
\n";
@checks = map { &ui_checkbox("d", $_) } @titles;
if ($config{'style'}) {
foreach $t (@titles) {
local $c = &execute_sql($in{'db'},
"select count(*) from ".quotestr($t));
push(@rows, $c->{'data'}->[0]->[0]);
local @str = &table_structure($in{'db'}, $t);
push(@fields, scalar(@str));
}
@titles = map { &html_escape($_) } @titles;
&split_table([ "", $text{'dbase_table'}, $text{'dbase_rows'},
$text{'dbase_cols'} ],
\@checks, \@links, \@titles,
\@rows, \@fields) if (@titles);
}
else {
@titles = map { &html_escape($_) } @titles;
&icons_table(\@links, \@titles, \@icons, 5, undef, undef, undef,
\@checks);
}
print &select_all_link("d", $form),"\n";
print &select_invert_link("d", $form),"
\n";
if (!$access{'edonly'}) {
print &ui_form_end([ [ "delete", $text{'dbase_delete'} ] ]);
}
else {
print &ui_form_end();
}
}
else {
print "$text{'dbase_none'} \n";
}
&show_buttons();
if ($single) {
&ui_print_footer("/", $text{'index'});
}
else {
&ui_print_footer("", $text{'index_return'});
}
sub show_buttons
{
if (!$access{'edonly'}) {
$count = 2;
$count++ if ($access{'delete'});
$count++ if ($access{'buser'});
$pct = int(100/$count);
print "
\n";
}
}
mysql/stop.cgi 0100755 0005671 0000012 00000000321 10265065234 013357 0 ustar jcameron wheel #!/usr/local/bin/perl
# stop.cgi
# Stop the MySQL database server
require './mysql-lib.pl';
&error_setup($text{'stop_err'});
$err = &stop_mysql();
&error($err) if ($err);
&webmin_log("stop");
&redirect("");
mysql/edit_field.cgi 0100755 0005671 0000012 00000013607 10330051002 014452 0 ustar jcameron wheel #!/usr/local/bin/perl
# edit_field.cgi
# Display a form for editing an existing field or creating a new one
require './mysql-lib.pl';
&ReadParse();
&can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'});
$access{'edonly'} && &error($text{'dbase_ecannot'});
$desc = &text('field_in', "$in{'table'}", "$in{'db'}");
if ($in{'type'}) {
# Creating a new field
&ui_print_header($desc, $text{'field_title1'}, "", "create_field");
$type = $in{'type'};
}
else {
# Editing an existing field
&ui_print_header($desc, $text{'field_title2'}, "", "edit_field");
@desc = &table_structure($in{'db'}, $in{'table'});
$f = $desc[$in{'idx'}];
$type = $f->{'type'};
}
print "\n";
&ui_print_footer("edit_table.cgi?db=$in{'db'}&table=".&urlize($in{'table'}),
$text{'table_return'},
"edit_dbase.cgi?db=$in{'db'}", $text{'dbase_return'},
"", $text{'index_return'});
mysql/config-turbo-linux 0100644 0005671 0000012 00000000544 10310022701 015347 0 ustar jcameron wheel start_cmd=/etc/rc.d/init.d/mysql start
stop_cmd=/etc/rc.d/init.d/mysql stop
mysql=/usr/bin/mysql
mysqldump=/usr/bin/mysqldump
mysqlimport=/usr/bin/mysqlimport
mysql_libs=
mysqladmin=/usr/bin/mysqladmin
mysqlshow=/usr/bin/mysqlshow
perpage=25
style=0
add_mode=1
nodbi=0
access=*: *
blob_mode=0
date_subs=0
passwd_mode=0
mysql_data=/var/lib/mysql
max_dbs=50
mysql/edit_db.cgi 0100755 0005671 0000012 00000004514 10255252625 013775 0 ustar jcameron wheel #!/usr/local/bin/perl
# edit_db.cgi
# Edit or create a db table record
require './mysql-lib.pl';
&ReadParse();
$access{'perms'} || &error($text{'perms_ecannot'});
if ($in{'new'}) {
&ui_print_header(undef, $text{'db_title1'}, "", "create_db");
}
else {
$d = &execute_sql_safe($master_db, "select * from db order by db");
$u = $d->{'data'}->[$in{'idx'}];
$access{'perms'} == 1 || &can_edit_db($u->[1]) ||
&error($text{'perms_edb'});
&ui_print_header(undef, $text{'db_title2'}, "", "edit_db");
}
print "\n";
&ui_print_footer('list_dbs.cgi', $text{'dbs_return'},
"", $text{'index_return'});
mysql/save_user.cgi 0100755 0005671 0000012 00000005632 10233562233 014374 0 ustar jcameron wheel #!/usr/local/bin/perl
# save_user.cgi
# Save, create or delete a user
require './mysql-lib.pl';
&ReadParse();
$access{'perms'} == 1 || &error($text{'perms_ecannot'});
if ($in{'delete'}) {
# Delete some user
&execute_sql_logged($master_db,
"delete from user where user = '$in{'olduser'}' ".
"and host = '$in{'oldhost'}'");
}
else {
# Validate inputs
&error_setup($text{'user_err'});
$in{'mysqluser_def'} || $in{'mysqluser'} =~ /^\S+$/ ||
&error($text{'user_euser'});
$in{'host_def'} || $in{'host'} =~ /^\S+$/ ||
&error($text{'user_ehost'});
map { $perms[$_]++ } split(/\0/, $in{'perms'});
@desc = &table_structure($master_db, 'user');
$host = $in{'host_def'} ? '' : $in{'host'};
$user = $in{'mysqluser_def'} ? '' : $in{'mysqluser'};
if ($in{'new'}) {
# Create a new user
for($i=3; $i<=&user_priv_cols()+3-1; $i++) {
push(@yesno, $perms[$i] ? "'Y'" : "'N'");
}
$sql = sprintf "insert into user (%s) values ('%s', '%s', '', %s)",
join(",", map { $desc[$_]->{'field'} } (0 .. &user_priv_cols()+3-1)),
$host, $user,
join(",", @yesno);
}
else {
# Update existing user
for($i=3; $i<=&user_priv_cols()+3-1; $i++) {
push(@yesno, $desc[$i]->{'field'}."=".
($perms[$i] ? "'Y'" : "'N'"));
}
$sql = sprintf "update user set host = '%s', user = '%s', ".
"%s where user = '%s' and host = '%s'",
$host, $user,
join(" , ", @yesno), $in{'olduser'}, $in{'oldhost'};
}
&execute_sql_logged($master_db, $sql);
if ($in{'mysqlpass_mode'} == 0) {
$esc = &escapestr($in{'mysqlpass'});
&execute_sql_logged($master_db,
"update user set password = $password_func('$esc') ".
"where user = '$user' and host = '$host'");
}
elsif ($in{'mysqlpass_mode'} == 2) {
&execute_sql_logged($master_db,
"update user set password = NULL ".
"where user = '$user' and host = '$host'");
}
}
&execute_sql_logged($master_db, 'flush privileges');
if (!$in{'delete'} && !$in{'new'} &&
$in{'olduser'} eq $config{'login'} && !$access{'user'}) {
# Renamed or changed the password for the Webmin login .. update
# it too!
$config{'login'} = $in{'mysqluser'};
if ($in{'mysqlpass_mode'} == 0) {
$config{'pass'} = $in{'mysqlpass'};
}
elsif ($in{'mysqlpass_mode'} == 2) {
$config{'pass'} = undef;
}
&write_file("$module_config_directory/config", \%config);
}
if ($in{'delete'}) {
&webmin_log("delete", "user", $in{'olduser'},
{ 'user' => $in{'olduser'},
'host' => $in{'oldhost'} } );
}
elsif ($in{'new'}) {
&webmin_log("create", "user",
$in{'mysqluser_def'} ? '' : $in{'mysqluser'},
{ 'user' => $in{'mysqluser_def'} ? '' : $in{'mysqluser'},
'host' => $in{'host_def'} ? '' : $in{'host'} } );
}
else {
&webmin_log("modify", "user",
$in{'mysqluser_def'} ? '' : $in{'mysqluser'},
{ 'user' => $in{'mysqluser_def'} ? '' : $in{'mysqluser'},
'host' => $in{'host_def'} ? '' : $in{'host'} } );
}
&redirect("list_users.cgi");
mysql/edit_table.cgi 0100755 0005671 0000012 00000005610 10313446247 014475 0 ustar jcameron wheel #!/usr/local/bin/perl
# edit_table.cgi
# Display the structure of some table
require './mysql-lib.pl';
&ReadParse();
&can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'});
if ($access{'edonly'}) {
&redirect("view_table.cgi?db=$in{'db'}&table=".&urlize($in{'table'}));
exit;
}
$desc = &text('table_header', "$in{'table'}", "$in{'db'}");
&ui_print_header($desc, $text{'table_title'}, "", "edit_table");
@desc = &table_structure($in{'db'}, $in{'table'});
print "