#!/usr/local/bin/perl
# index.cgi
# Display all existing databases

require './mysql-lib.pl';

# Check for MySQL programs
if (!-x $config{'mysqladmin'}) {
	&main_header();
	print &text('index_eadmin',
			  "<tt>$config{'mysqladmin'}</tt>"),"<p>\n";
	&ui_print_footer("/", $text{'index'});
	exit;
	}
if (!-x $config{'mysql'}) {
	&main_header();
	print &text('index_esql',
			  "<tt>$config{'mysql'}</tt>"),"<p>\n";
	&ui_print_footer("/", $text{'index'});
	exit;
	}
$out = `$config{'mysql'} -V 2>&1`;
if ($out =~ /lib\S+\.so/) {
	&main_header();
	print &text('index_elibrary',
			  "<tt>$config{'mysql'}</tt>"),"<p>\n";
	&ui_print_footer("/", $text{'index'});
	exit;
	}
elsif ($out !~ /distrib\s+((3|4|5)\.[0-9\.]*)/i) {
	&main_header();
	print &text('index_ever', "<tt>$config{'mysql'}</tt>"),"<p>\n";
	print &text('index_mysqlver', "$config{'mysql'} -V"),"\n";
	print "<pre>$out</pre>\n";
	&ui_print_footer("/", $text{'index'});
	exit;
	}
$mysql_version = $1;
open(VERSION, ">$user_module_config_directory/version");
print VERSION $mysql_version,"\n";
close(VERSION);

if (!$userconfig{'login'} && $config{'useident'} != "yes") {
	# User has not set his password yet
	$needpass = 1;
	}
else {
	$r = &is_mysql_running();
	if ($r == 0) {
		# Not running
		&main_header();
		print "<p> <b>$text{'index_notrun'}</b> <p>\n";
		}
	elsif ($r == -1) {
		# Running, but wrong password
		$needpass = 1;
		}
	else {
		# Check if we can re-direct to a single DB's page
		@titles = grep { &can_edit_db($_) } &list_databases();
		if (@titles == 1) {
			# Only one DB, so go direct to it!
			&redirect("edit_dbase.cgi?db=$titles[0]");
			exit;
			}
		
		# Running .. list databases
		&main_header();
		print &ui_subheading($text{'index_dbs'});
		@icons = map { "images/db.gif" } @titles;
		@links = map { "edit_dbase.cgi?db=$_" } @titles;
		if (!@titles) {
			print "<b>$text{'index_nodbs'}</b> <p>\n";
			}
		elsif ($config{'style'}) {
			@tables = map { @t = &list_tables($_); scalar(@t) }
				      @titles;
			@titles = map { &html_escape($_) } @titles;
			&split_table([ $text{'index_db'}, $text{'index_tables'} ],
				     \@links, \@titles, \@tables) if (@titles);
			}
		else {
			@titles = map { &html_escape($_) } @titles;
			&icons_table(\@links, \@titles, \@icons);
			}

		# Check if the user can create databases
		#print "<a href=newdb_form.cgi>$text{'index_add'}</a> <p>\n";
		}
	}

if ($needpass) {
	# Need to ask for the password
	&main_header();
	print "<center>\n";
	print "<p> <b>$text{'index_nopass'}</b> <p>\n";
	print "<form action=login.cgi>\n";
	print "<table border>\n";
	print "<tr $tb> <td><b>$text{'index_ltitle'}</b></td> </tr>\n";
	print "<tr $cb> <td><table cellpadding=2>\n";
	print "<tr> <td><b>$text{'index_login'}</b></td>\n";
	printf "<td><input name=login size=20 value='%s'></td> </tr>\n",
		$userconfig{'login'} ? $userconfig{'login'} : $remote_user;
	print "<tr> <td><b>$text{'index_pass'}</b></td>\n";
	printf "<td><input name=pass size=20 type=password value='%s'></td>\n",
		$userconfig{'pass'};
	print "</tr> </table></td></tr></table>\n";
	print "<input type=submit value='$text{'save'}'>\n";
	print "<input type=reset value='$text{'index_clear'}'>\n";
	print "</center></form>\n";

	}

&ui_print_footer("/", "index");

sub main_header
{
&ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1);
}



syntax highlighted by Code2HTML, v. 0.9.1