#!/usr/local/bin/perl # index.cgi # Display all existing databases require './postgresql-lib.pl'; &ReadParse(); # Check for PostgreSQL program if (!-x $config{'psql'} || -d $config{'psql'}) { &ui_print_header(undef, $text{'index_title'}, "", "intro", 1, 1, 0, &help_search_link("postgresql", "man", "doc", "google")); print &text('index_esql', "$config{'psql'}", "$gconfig{'webprefix'}/config.cgi?$module_name"),"
\n"; &foreign_require("software", "software-lib.pl"); $lnk = &software::missing_install_link( "postgresql", $text{'index_postgresql'}, "../$module_name/", $text{'index_title'}); print $lnk,"
\n" if ($lnk); &ui_print_footer("/", $text{'index'}); exit; } # Check for the config file if (!-r $hba_conf_file) { &ui_print_header(undef, $text{'index_title'}, "", "intro", 1, 1, 0, &help_search_link("postgresql", "man", "doc", "google")); ($hba_conf_file) = split(/\t+/, $config{'hba_conf'}); if ($config{'setup_cmd'}) { # Offer to setup DB for first time print &text('index_setup', "$hba_conf_file", "$config{'setup_cmd'}"),"
\n"; print "
\n"; } else { # Config file wasn't found print &text('index_ehba', "$hba_conf_file", "$gconfig{'webprefix'}/config.cgi?$module_name"),"
\n"; } &ui_print_footer("/", $text{'index'}); exit; } ($r, $rout) = &is_postgresql_running(); if ($r == 0) { # Not running .. need to start it &main_header(1); print "$text{'index_notrun'}
\n"; if (&is_postgresql_local()) { if ($access{'stop'} || $access{'users'}) { print "
\n"; print &text('index_emsg', "$rout"),"
\n"; } elsif ($r == -1) { # Running, but webmin doesn't know the login/password &main_header(1); print "
$text{'index_nopass'}
\n"; print "
\n"; print &text('index_emsg', "$rout"),"\n"; } elsif ($r == -2) { # Looks like a shared library problem &main_header(1); print &text('index_elibrary', "$config{'psql'}", "$gconfig{'webprefix'}/config.cgi?$module_name"),"
\n";
print &text('index_ldpath', "$ENV{$gconfig{'ld_env'}}",
"$config{'psql'}"),"
\n";
print "
$out\n"; print &text('index_emsg', "$rout"),"
\n"; } else { # Running .. check version $postgresql_version = &get_postgresql_version(); if (!$postgresql_version) { &main_header(1); print &text('index_superuser',"$gconfig{'webprefix'}/config.cgi?$module_name"),"
\n"; &ui_print_footer("/", $text{'index'}); exit; } if ($postgresql_version < 6.5) { &main_header(1); print &text('index_eversion', $postgresql_version, 6.5), "
\n"; &ui_print_footer("/", $text{'index'}); exit; } # Check if we can re-direct to a single DB's page @alldbs = &list_databases(); @titles = grep { &can_edit_db($_) } @alldbs; $can_all = (@alldbs == @titles); if (@titles == 1 && $access{'dbs'} ne '*' && !$access{'users'} && !$access{'create'} && !$access{'stop'}) { # Only one DB, so go direct to it! &redirect("edit_dbase.cgi?db=$titles[0]"); exit; } &main_header(); print &ui_subheading($text{'index_dbs'}); if ($in{'search'}) { # Limit to those matching search @titles = grep { /\Q$in{'search'}\E/i } @titles; print "
| ",&text('index_showing', "$in{'search'}")," | \n"; print "", "$text{'view_searchreset'} | \n"; print "
\n";
}
elsif (@icons > $max_dbs && !$in{'search'}) {
# Too many databases to show .. display search and jump forms
print &ui_form_start("index.cgi");
print $text{'index_toomany'},"\n";
print &ui_textbox("search", undef, 20),"\n";
print &ui_submit($text{'index_search'}),"
\n";
print &ui_form_end();
print &ui_form_start("edit_dbase.cgi");
print $text{'index_jump'},"\n";
print &ui_select("db", undef, [ map { [ $_ ] } @titles ]),"\n";
print &ui_submit($text{'index_jumpok'}),"
\n";
print &ui_form_end();
@icons = ( );
}
else {
# Show databases as table
if ($access{'delete'}) {
print &ui_form_start("drop_dbases.cgi");
unshift(@rowlinks, &select_all_link("d", 0),
&select_invert_link("d", 0) );
}
print &ui_links_row(\@rowlinks);
@checks = @titles;
if ($config{'style'}) {
@tables = map { if (&accepting_connections($_)) {
my @t = &list_tables($_);
scalar(@t);
}
else {
"-";
}
} @titles;
@titles = map { &html_escape($_) } @titles;
&split_table([ "", $text{'index_db'},
$text{'index_tables'} ],
\@checks, \@links, \@titles, \@tables)
if (@titles);
}
else {
# Show databases as icons
@checks = map { &ui_checkbox("d", $_) } @checks;
@titles = map { &html_escape($_) } @titles;
&icons_table(\@links, \@titles, \@icons, 5,
undef, undef, undef, \@checks);
}
}
print &ui_links_row(\@rowlinks);
if (@icons && $access{'delete'}) {
print &ui_form_end([ [ "delete", $text{'index_drops'} ] ]);
}
if ($access{'users'}) {
print "