#!/usr/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', "<tt>$config{'psql'}</tt>", "@{[&get_webprefix()]}/config.cgi?$module_name"),"<p>\n"; &foreign_require("software", "software-lib.pl"); $lnk = &software::missing_install_link( "postgresql", $text{'index_postgresql'}, "../$module_name/", $text{'index_title'}); print $lnk,"<p>\n" if ($lnk); &ui_print_footer("/", $text{'index'}); exit; } # Check for alternate config file, and use if (!$hba_conf_file && -r $config{'alt_hba_conf'} && &is_postgresql_local()) { ($hba_conf_file) = split(/\t+/, $config{'hba_conf'}); my $hba_conf_dir = $hba_conf_file; $hba_conf_dir =~ s/\/([^\/]+)$//; if (!-d $hba_conf_dir) { &make_dir($hba_conf_dir, 0777); } ©_source_dest($config{'alt_hba_conf'}, $hba_conf_file); } # Check for the config file if (!$hba_conf_file && &is_postgresql_local()) { &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', "<tt>$hba_conf_file</tt>", "<tt>$config{'setup_cmd'}</tt>"),"<p>\n"; print "<form action=setup.cgi><center>\n"; print "<input type=submit value='$text{'index_setupok'}'>\n"; print "</center></form><p>\n"; } else { # Config file wasn't found print &text('index_ehba', "<tt>$hba_conf_file</tt>", "@{[&get_webprefix()]}/config.cgi?$module_name"),"<p>\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 "<b>$text{'index_notrun'}</b> <p>\n"; if (&is_postgresql_local()) { print &ui_hr(); print &ui_buttons_start(); if ($access{'stop'}) { # Show start button print &ui_buttons_row("start.cgi", $text{'index_start'}, $text{'index_startmsg2'}); } if ($access{'users'}) { print &ui_buttons_row("list_hosts.cgi", $text{'host_title'}, &text('index_hostdesc')); } print &ui_buttons_end(); } } elsif ($r == -1 && $access{'user'} && 0) { # Running, but the user's password is wrong &main_header(1); print "<b>",&text('index_nouser', "<tt>$access{'user'}</tt>"), "</b><p>\n"; print &text('index_emsg', "<tt>$rout</tt>"),"<p>\n"; } elsif ($r == -1) { # Running, but webmin doesn't know the login/password &main_header(1); print "<b>$text{'index_nopass'}</b> <p>\n"; print &ui_form_start("login.cgi", "post"); print &ui_table_start($text{'index_ltitle'}, undef, 2); print &ui_table_row($text{'index_login'}, &ui_textbox("login", $access{'user'} || $config{'login'}, 40)); print &ui_table_row(" ", &ui_checkbox("sameunix", 1, $text{'index_sameunix'}, $config{'sameunix'})); print &ui_table_row($text{'index_pass'}, &ui_password("pass", undef, 40)); print &ui_table_end(); print &ui_form_end([ [ undef, $text{'save'} ] ]); print &text('index_emsg', "<tt>$rout</tt>"),"<p>\n"; # Button to edit user permissions if ($access{'users'}) { print &ui_form_start("list_hosts.cgi"); print &ui_form_end([ [ undef, $text{'index_edithosts'} ] ]); } } elsif ($r == -2) { # Looks like a shared library problem &main_header(1); print &text('index_elibrary', "<tt>$config{'psql'}</tt>", "@{[&get_webprefix()]}/config.cgi?$module_name"),"<p>\n"; print &text('index_ldpath', "<tt>$ENV{$gconfig{'ld_env'}}</tt>", "<tt>$config{'psql'}</tt>"),"<br>\n"; print "<pre>",&html_escape($out),"</pre>\n"; print &text('index_emsg', "<tt>$rout</tt>"),"<p>\n"; } else { # Running .. check version $postgresql_version = &get_postgresql_version(); if (!$postgresql_version) { &main_header(1); print &text('index_superuser',"@{[&get_webprefix()]}/config.cgi?$module_name"),"<p>\n"; &ui_print_footer("/", $text{'index'}); exit; } if ($postgresql_version < 6.5) { &main_header(1); print &text('index_eversion', $postgresql_version, 6.5), "<p>\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 ($access{'users'}); if ($in{'search'}) { # Limit to those matching search @titles = grep { /\Q$in{'search'}\E/i } @titles; print "<table width=100%><tr>\n"; print "<td> <b>",&text('index_showing', "<tt>".&html_escape($in{'search'})."</tt>"),"</b></td>\n"; print "<td align=right><a href='index.cgi'>", "$text{'view_searchreset'}</a></td>\n"; print "</tr></table>\n"; } elsif ($in{'show'}) { # Limit to specific databases %show = map { $_, 1 } split(/\0/, $in{'show'}); @titles = grep { $show{$_} } @titles; } # List the databases @icons = map { "images/db.gif" } @titles; @links = map { "edit_dbase.cgi?db=$_" } @titles; $can_create = $access{'create'} == 1 || $access{'create'} == 2 && @titles < $access{'max'}; @rowlinks = ( ); push(@rowlinks, "<a href=newdb_form.cgi>$text{'index_add'}</a>") if ($can_create); if (!@icons) { if ($in{'search'}) { print "<b>$text{'index_nodbs3'}</b> <p>\n"; } else { print "<b>$text{'index_nodbs'}</b> <p>\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'}),"<br>\n"; print &ui_form_end(); print &ui_form_start("edit_dbase.cgi"); print $text{'index_jump'},"\n"; print &ui_select("db", undef, [ map { [ $_ ] } @titles ], 1, 0, 0, 0, "onChange='form.submit()'"),"\n"; print &ui_submit($text{'index_jumpok'}),"<br>\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'} == 1) { # Show as DB names and table counts @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); } elsif ($config{'style'} == 2) { # Show just DB names @grid = ( ); for(my $i=0; $i<@links; $i++) { push(@grid, &ui_checkbox("d", $titles[$i]). " <a href='$links[$i]'>". &html_escape($titles[$i])."</a>"); } print &ui_grid_table(\@grid, 4, 100, undef, undef, ""); } 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 &ui_hr(); print &ui_subheading($text{'index_users'}); @links = ( 'list_users.cgi', 'list_groups.cgi', 'list_hosts.cgi', 'list_grants.cgi' ); @titles = ( $text{'user_title'}, $text{'group_title'}, $text{'host_title'}, $text{'grant_title'} ); @images = ( 'images/users.gif', 'images/groups.gif', 'images/hosts.gif', 'images/grants.gif' ); &icons_table(\@links, \@titles, \@images); } } print &ui_hr(); print &ui_buttons_start(); # Show stop server button if ($access{'stop'} && &is_postgresql_local() && $r != 0) { print &ui_buttons_row("stop.cgi", $text{'index_stop'}, $text{'index_stopmsg'}); } if ($r > 0) { # Show backup all button if ($can_all && $access{'backup'}) { print &ui_buttons_row("backup_form.cgi", $text{'index_backup'}, $text{'index_backupmsg'}, &ui_hidden("all", 1)); } } print &ui_buttons_end(); # Check if the optional perl modules are installed if (&foreign_available("cpan")) { eval "use DBI"; push(@needs, "DBI") if ($@); $nodbi++ if ($@); eval "use DBD::Pg"; push(@needs, "DBD::Pg") if ($@); if (@needs) { $needs = &urlize(join(" ", @needs)); print "<b>".&ui_text_color(&text(@needs == 2 ? 'index_nomods' : 'index_nomod', @needs, "../cpan/download.cgi?source=3&cpan=$needs&mode=2&return=/$module_name/&returndesc=". &urlize($text{'index_return'})), 'warn')."</b>"; } } &ui_print_footer("/", "index"); sub main_header { my ($noschemas) = @_; my $smsg = ""; if (!$noschemas) { eval { local $main::error_must_die = 1; $smsg = supports_schemas($config{'basedb'}) ? " ".$text{'index_sch'} : ""; }; } &ui_print_header(undef, $text{'index_title'}, "", "intro", 1, 1, 0, &help_search_link("postgresql", "man", "doc", "google"), undef, undef, $postgresql_version ? &text('index_version', $postgresql_version).$smsg : undef); }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
help | Folder | 0755 |
|
|
images | Folder | 0755 |
|
|
lang | Folder | 0755 |
|
|
old | Folder | 0755 |
|
|
CHANGELOG | File | 5.45 KB | 0644 |
|
acl_security.pl | File | 5.46 KB | 0755 |
|
backup.cgi | File | 5.2 KB | 0755 |
|
backup.pl | File | 1.95 KB | 0755 |
|
backup_config.pl | File | 643 B | 0755 |
|
backup_form.cgi | File | 4.74 KB | 0755 |
|
cgi_args.pl | File | 993 B | 0755 |
|
config | File | 501 B | 0644 |
|
config-AlmaLinux-7.0-ALL | File | 530 B | 0644 |
|
config-Amazon-Linux-2-ALL | File | 484 B | 0644 |
|
config-CentOS-Linux-7.0-ALL | File | 530 B | 0644 |
|
config-CentOS-Stream-Linux-8.0-ALL | File | 530 B | 0644 |
|
config-CloudLinux-8.0-ALL | File | 530 B | 0644 |
|
config-Oracle-Linux-8.0-ALL | File | 530 B | 0644 |
|
config-Redhat-Enterprise-Linux-7.0-ALL | File | 484 B | 0644 |
|
config-Rocky-Linux-7.0-ALL | File | 530 B | 0644 |
|
config-Scientific-Linux-7.0-ALL | File | 484 B | 0644 |
|
config-cobalt-linux | File | 435 B | 0644 |
|
config-coherent-linux | File | 507 B | 0644 |
|
config-debian-linux | File | 416 B | 0644 |
|
config-debian-linux-10.0-ALL | File | 417 B | 0644 |
|
config-debian-linux-4.0-9.0 | File | 425 B | 0644 |
|
config-freebsd | File | 588 B | 0644 |
|
config-freebsd-8-ALL | File | 580 B | 0644 |
|
config-gentoo-linux | File | 429 B | 0644 |
|
config-mandrake-linux | File | 435 B | 0644 |
|
config-msc-linux | File | 441 B | 0644 |
|
config-netbsd | File | 454 B | 0644 |
|
config-openSUSE-Linux-15.0-ALL | File | 453 B | 0644 |
|
config-openmamba-linux | File | 444 B | 0644 |
|
config-pardus-linux | File | 431 B | 0644 |
|
config-redhat-linux | File | 444 B | 0644 |
|
config-redhat-linux-10.0-23.0 | File | 772 B | 0644 |
|
config-redhat-linux-24.0-ALL | File | 500 B | 0644 |
|
config-redhat-linux-7.0-7.2 | File | 493 B | 0644 |
|
config-redhat-linux-7.3 | File | 507 B | 0644 |
|
config-redhat-linux-7.4-9.0 | File | 507 B | 0644 |
|
config-sol-linux | File | 462 B | 0644 |
|
config-suse-linux | File | 448 B | 0644 |
|
config-suse-linux-7.0 | File | 457 B | 0644 |
|
config-suse-linux-7.1-9.0 | File | 459 B | 0644 |
|
config-suse-linux-9.1-ALL | File | 459 B | 0644 |
|
config-syno-linux | File | 454 B | 0644 |
|
config-trustix-linux | File | 619 B | 0644 |
|
config-united-linux | File | 459 B | 0644 |
|
config-windows | File | 510 B | 0644 |
|
config.info | File | 1.68 KB | 0644 |
|
config.info.bg | File | 2.69 KB | 0644 |
|
config.info.ca | File | 1.68 KB | 0644 |
|
config.info.cs | File | 729 B | 0644 |
|
config.info.de | File | 1.62 KB | 0644 |
|
config.info.es | File | 559 B | 0644 |
|
config.info.fr | File | 1.85 KB | 0644 |
|
config.info.ja | File | 1.68 KB | 0644 |
|
config.info.ko | File | 1.42 KB | 0644 |
|
config.info.nl | File | 1.6 KB | 0644 |
|
config.info.no | File | 1.56 KB | 0644 |
|
config.info.pl | File | 521 B | 0644 |
|
config.info.ru | File | 950 B | 0644 |
|
config.info.sv | File | 459 B | 0644 |
|
config.info.tr | File | 1.31 KB | 0644 |
|
config.info.uk | File | 980 B | 0644 |
|
config.info.zh | File | 328 B | 0644 |
|
config.info.zh_TW | File | 426 B | 0644 |
|
cpan_modules.pl | File | 86 B | 0755 |
|
create_table.cgi | File | 1.18 KB | 0755 |
|
csv.cgi | File | 2 KB | 0755 |
|
csv_form.cgi | File | 1.68 KB | 0755 |
|
defaultacl | File | 99 B | 0644 |
|
delete_fields.cgi | File | 629 B | 0755 |
|
delete_grants.cgi | File | 1.46 KB | 0755 |
|
delete_groups.cgi | File | 548 B | 0755 |
|
delete_hosts.cgi | File | 478 B | 0755 |
|
delete_users.cgi | File | 442 B | 0755 |
|
down.cgi | File | 602 B | 0755 |
|
download.cgi | File | 1.07 KB | 0755 |
|
drop_dbase.cgi | File | 1.19 KB | 0755 |
|
drop_dbases.cgi | File | 1.25 KB | 0755 |
|
drop_table.cgi | File | 1.1 KB | 0755 |
|
drop_tables.cgi | File | 1.72 KB | 0755 |
|
edit_dbase.cgi | File | 7.63 KB | 0755 |
|
edit_field.cgi | File | 2.42 KB | 0755 |
|
edit_grant.cgi | File | 2.69 KB | 0755 |
|
edit_group.cgi | File | 1.84 KB | 0755 |
|
edit_host.cgi | File | 4.04 KB | 0755 |
|
edit_index.cgi | File | 2 KB | 0755 |
|
edit_manual.cgi | File | 541 B | 0755 |
|
edit_seq.cgi | File | 2.1 KB | 0755 |
|
edit_table.cgi | File | 2.71 KB | 0755 |
|
edit_user.cgi | File | 2.58 KB | 0755 |
|
edit_view.cgi | File | 1.46 KB | 0755 |
|
exec.cgi | File | 1.51 KB | 0755 |
|
exec_file.cgi | File | 1.8 KB | 0755 |
|
exec_form.cgi | File | 3.15 KB | 0755 |
|
import.cgi | File | 2.4 KB | 0755 |
|
index.cgi | File | 9.7 KB | 0755 |
|
install_check.pl | File | 477 B | 0755 |
|
list_grants.cgi | File | 3.41 KB | 0755 |
|
list_groups.cgi | File | 1.36 KB | 0755 |
|
list_hosts.cgi | File | 2.47 KB | 0755 |
|
list_users.cgi | File | 1.96 KB | 0755 |
|
log_parser.pl | File | 2.41 KB | 0755 |
|
login.cgi | File | 829 B | 0755 |
|
module.info | File | 191 B | 0644 |
|
module.info.af | File | 0 B | 0644 |
|
module.info.af.auto | File | 146 B | 0644 |
|
module.info.ar | File | 0 B | 0644 |
|
module.info.ar.auto | File | 224 B | 0644 |
|
module.info.be | File | 0 B | 0644 |
|
module.info.be.auto | File | 257 B | 0644 |
|
module.info.bg | File | 0 B | 0644 |
|
module.info.bg.auto | File | 243 B | 0644 |
|
module.info.ca | File | 135 B | 0644 |
|
module.info.ca.auto | File | 19 B | 0644 |
|
module.info.cs | File | 0 B | 0644 |
|
module.info.cs.auto | File | 156 B | 0644 |
|
module.info.da | File | 0 B | 0644 |
|
module.info.da.auto | File | 143 B | 0644 |
|
module.info.de | File | 131 B | 0644 |
|
module.info.de.auto | File | 19 B | 0644 |
|
module.info.el | File | 0 B | 0644 |
|
module.info.el.auto | File | 235 B | 0644 |
|
module.info.es | File | 45 B | 0644 |
|
module.info.es.auto | File | 121 B | 0644 |
|
module.info.eu | File | 0 B | 0644 |
|
module.info.eu.auto | File | 161 B | 0644 |
|
module.info.fa | File | 0 B | 0644 |
|
module.info.fa.auto | File | 222 B | 0644 |
|
module.info.fi | File | 0 B | 0644 |
|
module.info.fi.auto | File | 156 B | 0644 |
|
module.info.fr | File | 48 B | 0644 |
|
module.info.fr.auto | File | 143 B | 0644 |
|
module.info.he | File | 0 B | 0644 |
|
module.info.he.auto | File | 189 B | 0644 |
|
module.info.hr | File | 0 B | 0644 |
|
module.info.hr.auto | File | 180 B | 0644 |
|
module.info.hu | File | 41 B | 0644 |
|
module.info.hu.auto | File | 135 B | 0644 |
|
module.info.it | File | 0 B | 0644 |
|
module.info.it.auto | File | 141 B | 0644 |
|
module.info.ja | File | 48 B | 0644 |
|
module.info.ja.auto | File | 144 B | 0644 |
|
module.info.ko | File | 45 B | 0644 |
|
module.info.ko.auto | File | 141 B | 0644 |
|
module.info.lt | File | 0 B | 0644 |
|
module.info.lt.auto | File | 186 B | 0644 |
|
module.info.lv | File | 0 B | 0644 |
|
module.info.lv.auto | File | 158 B | 0644 |
|
module.info.ms | File | 144 B | 0644 |
|
module.info.ms.auto | File | 19 B | 0644 |
|
module.info.mt | File | 0 B | 0644 |
|
module.info.mt.auto | File | 156 B | 0644 |
|
module.info.nl | File | 35 B | 0644 |
|
module.info.nl.auto | File | 105 B | 0644 |
|
module.info.no | File | 34 B | 0644 |
|
module.info.no.auto | File | 107 B | 0644 |
|
module.info.pl | File | 39 B | 0644 |
|
module.info.pl.auto | File | 119 B | 0644 |
|
module.info.pt | File | 0 B | 0644 |
|
module.info.pt.auto | File | 169 B | 0644 |
|
module.info.pt_BR | File | 0 B | 0644 |
|
module.info.pt_BR.auto | File | 178 B | 0644 |
|
module.info.ro | File | 0 B | 0644 |
|
module.info.ro.auto | File | 173 B | 0644 |
|
module.info.ru | File | 52 B | 0644 |
|
module.info.ru.auto | File | 193 B | 0644 |
|
module.info.sk | File | 0 B | 0644 |
|
module.info.sk.auto | File | 161 B | 0644 |
|
module.info.sl | File | 0 B | 0644 |
|
module.info.sl.auto | File | 166 B | 0644 |
|
module.info.sv | File | 33 B | 0644 |
|
module.info.sv.auto | File | 109 B | 0644 |
|
module.info.th | File | 0 B | 0644 |
|
module.info.th.auto | File | 295 B | 0644 |
|
module.info.tr | File | 0 B | 0644 |
|
module.info.tr.auto | File | 168 B | 0644 |
|
module.info.uk | File | 0 B | 0644 |
|
module.info.uk.auto | File | 228 B | 0644 |
|
module.info.ur | File | 0 B | 0644 |
|
module.info.ur.auto | File | 252 B | 0644 |
|
module.info.vi | File | 0 B | 0644 |
|
module.info.vi.auto | File | 205 B | 0644 |
|
module.info.zh | File | 38 B | 0644 |
|
module.info.zh.auto | File | 102 B | 0644 |
|
module.info.zh_TW | File | 40 B | 0644 |
|
module.info.zh_TW.auto | File | 108 B | 0644 |
|
newdb.cgi | File | 1.17 KB | 0755 |
|
newdb_form.cgi | File | 1.33 KB | 0755 |
|
postgresql-lib.pl | File | 34.79 KB | 0755 |
|
prefs.info | File | 69 B | 0644 |
|
restore.cgi | File | 1.71 KB | 0755 |
|
restore_form.cgi | File | 1.42 KB | 0755 |
|
save_field.cgi | File | 1.05 KB | 0755 |
|
save_grant.cgi | File | 1.65 KB | 0755 |
|
save_group.cgi | File | 2.67 KB | 0755 |
|
save_host.cgi | File | 3.4 KB | 0755 |
|
save_index.cgi | File | 1.45 KB | 0755 |
|
save_manual.cgi | File | 330 B | 0755 |
|
save_seq.cgi | File | 2.57 KB | 0755 |
|
save_sync.cgi | File | 335 B | 0755 |
|
save_user.cgi | File | 1.59 KB | 0755 |
|
save_view.cgi | File | 1.37 KB | 0755 |
|
search_form.cgi | File | 1.38 KB | 0755 |
|
setup.cgi | File | 292 B | 0755 |
|
start.cgi | File | 284 B | 0755 |
|
stop.cgi | File | 278 B | 0755 |
|
table_form.cgi | File | 1.9 KB | 0755 |
|
up.cgi | File | 598 B | 0755 |
|
useradmin_update.pl | File | 2.1 KB | 0755 |
|
view-lib.pl | File | 3.56 KB | 0755 |
|
view_table.cgi | File | 15.06 KB | 0755 |
|