chore: import upstream snapshot with attribution

This commit is contained in:
wehub-resource-sync
2026-07-13 13:12:17 +08:00
commit cf8edb9f21
44281 changed files with 1655134 additions and 0 deletions
+80
View File
@@ -0,0 +1,80 @@
---- Changes since 1.150 ----
Added a button on the module's main page for backing up all databases, either immediately or on schedule.
When using PostgreSQL version 7.4 or later, users can now be re-named.
A Webmin user who has been set up to login to PostgreSQL as a different user will now be prompted to login if his password set in the Webmin Users module incorrect.
Added an access control restriction to limit the number of databases a Webmin user can own.
Fields can now be deleted from a table by clicking the Delete button on the field details page, rather than using the complex field-removal form.
---- Changes since 1.160 ----
Added the ability to select which tables to include when making a backup.
---- Changes since 1.170 ----
When viewing table data, the Advanced Search button can be used to perform and/or searches on multiple fields.
---- Changes since 1.180 ----
Improved support for editing tables in schemas, and granting privileges on them.
---- Changes since 1.190 ----
Added support for allowed hosts using CIDR netmask format, and IPv6 addresses.
---- Changes since 1.200 ----
Added a Module Config option to specify the encoding for database content.
---- Changes since 1.210 ----
When creating a database, the character set encoding can be specified.
Added a Module Config page option to show the database and table lists using tables rather than icons.
Added checkboxes and a button to the Edit Database page for dropping multiple tables at once.
Added checkboxes and a button to the module index for dropping multiple databases at once.
---- Changes since 1.220 ----
Added checkboxes and a button to the lists of users, groups and allowed hosts for deleted several at once.
When there are too many databases or tables to reasonable list, a search form is show instead for finding matching databases or tables by name.
Added a button on the Edit Table page for exporting in CSV format, either to a file or for display in the browser.
---- Changes since 1.230 ----
Added a search field to the Granted Privileges page when there are too many to resonably display.
Added an option on the CSV export page for selecting which columns to include.
Added a section to the Execute SQL page for importing data from a CSV or tab-separated file.
---- Changes since 1.240 ----
Group management is now done using the create/alter/drop group SQL commands for PostgreSQL versions 8.0 and above.
The full PostgreSQL error message is now shown when Webmin cannot login to the database.
Allowed hosts can be edited even when PostgreSQL is not running.
---- Changes since 1.260 ----
Added support for viewing, creating and managing indexes, views and sequences in databases.
If the before-backup command fails, the entire backup is halted.
When backing up all databases at once, an option is now available to run commands before/after all of them, rather than before/after each.
---- Changes since 1.270 ----
Added a button for resetting multiple grants at once.
Cleaned up table data editing code.
Added Module Config option to limit the displayed size of large text field data.
---- Changes since 1.290 ----
Added support for editing data in tables under PostgreSQL version 8, which does not use OID columns.
Merged the table data editor code with the MySQL module.
Column headings in the Table Data page can be clicked to sort the data by that column.
---- Changes since 1.300 ----
The database login now uses a .pgpass file, rather than a temporary file and the -u option.
Database restores can now be done from an uploaded file.
Re-factored backup and restore code into new functions, which can be called from other modules.
Added access control options to prevent the viewing and management of views, sequences and indexes.
---- Changes since 1.310 ----
Updated the module to run on Windows, and created a default configuration that will sort with the PostgreSQL 8.2 Windows install.
---- Changes since 1.320 ----
When there are too many databases or tables to display, a menu for editing a specific one is displayed in addition to the search field.
---- Changes since 1.340 ----
Use HTML format output from the pgsql command, to handle queries for rows containing newlines and special characters.
---- Changes since 1.350 ----
Fixed a bug that prevented the 'valid until' date from being displayed for existing users.
---- Changes since 1.370 ----
Added an option on the backup form to create the destination directory if missing.
Re-wrote the backup form to use the new Webmin UI library.
Improved support for Debian/Ubuntu systems that can have different PostgreSQL versions.
---- Changes since 1.380 ----
Fixed a bug that prevented 'Jump to row' from working properly.
---- Changes since 1.400 ----
Added a Module Config option to show databases and tables using just their names.
---- Changes since 1.410 ----
Improve support for PostgreSQL 8.3 on Ubuntu 8.04.
---- Changes since 1.440 ----
Re-wrote the entire user interface to use Webmin's new UI library, for a more consistent and themable look.
Added a history of previous commands to the Execute SQL page.
---- Changes since 1.510 ----
Added greater than / less than selectors to the table data search form.
---- Changes since 1.530 ----
Added an option to the restore form to limit the restore to only certain tables.
When creating a new database, a template database to copy from can now be selected.
---- Changes since 1.700 ----
When a database is deleted, any cron job for backing it up is also removed.
---- Changes since 1.870 ----
Added a page for manually editing the allowed hosts config file.
+103
View File
@@ -0,0 +1,103 @@
require 'postgresql-lib.pl';
# acl_security_form(&options)
# Output HTML for editing security options for the postgresql module
sub acl_security_form
{
my ($o) = @_;
my @listdb = &list_databases();
if (@listdb) {
print &ui_table_row($text{'acl_dbs'},
&ui_radio("dbs_def", $o->{'dbs'} eq '*' ? 1 : 0,
[ [ 1, $text{'acl_dall'} ],
[ 0, $text{'acl_dsel'} ] ])."<br>\n".
&ui_select("dbs", [ split(/\s+/, $o->{'dbs'}) ], \@listdb, 5, 1).
&ui_hidden("dblist", "1"),
3);
}
else {
print &ui_table_row($text{'acl_dbs'},
$text{'acl_dbscannot'}.&ui_hidden("dblist", "0 ".$o->{'dbs'}),
3);
}
print &ui_table_row($text{'acl_create'},
&ui_radio_table("create",
defined($o->{'create'}) ? $o->{'create'} : 0,
[ [ 1, $text{'yes'} ],
[ 2, $text{'acl_max'}, &ui_textbox("max", $o->{'max'}, 5) ],
[ 0, $text{'no'} ] ], 1),
3);
print &ui_table_row($text{'acl_delete'},
&ui_yesno_radio("delete", $o->{'delete'}));
print &ui_table_row($text{'acl_stop'},
&ui_yesno_radio("stop", $o->{'stop'}));
print &ui_table_row($text{'acl_users'},
&ui_yesno_radio("users", $o->{'users'}));
print &ui_table_row($text{'acl_login'},
&ui_radio_table("user_def", $o->{'user'} ? 0 : 1,
[ [ 1, $text{'acl_user_def'} ],
[ 0, "",
$text{'acl_user'}." ".&ui_textbox("user", $o->{'user'}, 10)." ".
$text{'acl_pass'}." ".&ui_password("pass", $o->{'pass'}, 10)."<br>\n".
&ui_checkbox("sameunix", 1, $text{'acl_sameunix'}, $o->{'sameunix'}) ] ], 1),
3);
print &ui_table_row($text{'acl_backup'},
&ui_yesno_radio("backup", $o->{'backup'}));
print &ui_table_row($text{'acl_restore'},
&ui_yesno_radio("restore", $o->{'restore'}));
print &ui_table_row($text{'acl_cmds'},
&ui_yesno_radio("cmds", $o->{'cmds'}));
print &ui_table_row($text{'acl_views'},
&ui_yesno_radio("views", $o->{'views'}));
print &ui_table_row($text{'acl_indexes'},
&ui_yesno_radio("indexes", $o->{'indexes'}));
print &ui_table_row($text{'acl_seqs'},
&ui_yesno_radio("seqs", $o->{'seqs'}));
}
# acl_security_save(&options)
# Parse the form for security options for the postgresql module
sub acl_security_save
{
if ($in{'dblist'} eq '1') {
if ($in{'dbs_def'}) {
$_[0]->{'dbs'} = '*';
}
else {
$_[0]->{'dbs'} = join(" ", split(/\0/, $in{'dbs'}));
}
}
else {
$_[0]->{'dbs'} = $in{'dblist'};
$_[0]->{'dbs'} =~ s/^0 //;
}
$_[0]->{'create'} = $in{'create'};
$_[0]->{'max'} = $in{'max'};
$_[0]->{'delete'} = $in{'delete'};
$_[0]->{'stop'} = $in{'stop'};
$_[0]->{'users'} = $in{'users'};
$_[0]->{'backup'} = $in{'backup'};
$_[0]->{'restore'} = $in{'restore'};
$_[0]->{'cmds'} = $in{'cmds'};
$_[0]->{'views'} = $in{'views'};
$_[0]->{'indexes'} = $in{'indexes'};
$_[0]->{'seqs'} = $in{'seqs'};
if ($in{'user_def'}) {
delete($_[0]->{'user'});
delete($_[0]->{'pass'});
}
else {
$_[0]->{'user'} = $in{'user'};
$_[0]->{'pass'} = $in{'pass'};
}
$_[0]->{'sameunix'} = $in{'sameunix'};
}
+184
View File
@@ -0,0 +1,184 @@
#!/usr/local/bin/perl
# backup.cgi
# Backup a database to a local file
require './postgresql-lib.pl' ;
&ReadParse ( ) ;
&error_setup ( $text{'backup_err'} ) ;
# Validate inputs
if ($in{'all'}) {
@alldbs = &list_databases();
@dbs = grep { &can_edit_db($_) } @alldbs;
@alldbs == @dbs || &error($text{'dbase_ecannot'});
}
else {
&can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'});
}
$access{'backup'} || &error($text{'backup_ecannot'});
if (!$in{'save'} || $in{'sched'}) {
if ($in{'all'}) {
-d $in{'path'} || -d &date_subs($in{'path'}) || $in{'mkdir'} ||
&error(&text('backup_pe4', $in{'path'})) ;
}
else {
$in{'path'} =~ /^\/\S+$/ ||
$in{'path'} =~ /^[a-z]:[\\\/]/i ||
&error(&text('backup_pe3', $in{'path'})) ;
}
if (!$in{'all'} && !$in{'tables_def'}) {
@tables = split(/\0/, $in{'tables'});
@tables || &error($text{'backup_etables'});
}
}
$cron = !$module_info{'usermin'} &&
!$access{'user'} && &foreign_installed("cron");
$cmode = 0;
if ($cron) {
if ($access{'cmds'}) {
$config{'backup_before_'.$in{'db'}} = $in{'before'};
$config{'backup_after_'.$in{'db'}} = $in{'after'};
if ($in{'all'}) {
$config{'backup_cmode_'.$in{'db'}} = $in{'cmode'};
$cmode = $in{'cmode'};
}
}
&foreign_require("cron", "cron-lib.pl");
@jobs = &cron::list_cron_jobs();
$cmd = $in{'all'} ? "$cron_cmd --all" : "$cron_cmd $in{'db'}";
($job) = grep { $_->{'command'} eq $cmd } @jobs;
$oldjob = $job;
$job ||= { 'command' => $cmd,
'user' => 'root',
'active' => 1 };
&cron::parse_times_input($job, \%in);
}
if (!$in{'all'}) {
# Make sure the database exists
$db_find_f = 0 ;
if ( $in{'db'} ) {
foreach ( &list_databases() ) {
if ( $_ eq $in{'db'} ) { $db_find_f = 1 ; }
}
}
if ( $db_find_f == 0 ) { &error ( &text ( 'backup_edb' ) ) ; }
}
# Save choices for next time the form is visited (and for the cron job)
if ($module_info{'usermin'}) {
$userconfig{'backup_'.$in{'db'}} = $in{'path'};
$userconfig{'backup_format_'.$in{'db'}} = $in{'format'};
$userconfig{'backup_tables_'.$in{'db'}} = join(" ", @tables);
if ($in{'save'}) {
&save_user_module_config();
}
}
else {
$config{'backup_'.$in{'db'}} = $in{'path'};
$config{'backup_mkdir_'.$in{'db'}} = $in{'mkdir'};
$config{'backup_format_'.$in{'db'}} = $in{'format'};
$config{'backup_compress_'.$in{'db'}} = $in{'compress'};
$config{'backup_tables_'.$in{'db'}} = join(" ", @tables);
if ($in{'save'}) {
&save_module_config();
}
}
$desc = "<tt>$in{'db'}</tt>";
&ui_print_header($desc, $text{'backup_title'}, "");
if (!$in{'save'}) {
# Construct and run the backup command
@dbs = $in{'all'} ? @alldbs : ( $in{'db'} );
$suf = $in{'format'} eq "p" ? "sql" :
$in{'format'} eq "t" ? "tar" : "post";
$suf .= ($in{'compress'} == 1 ? ".gz" :
$in{'compress'} == 2 ? ".bz2" : "");
if ($cmode == 1) {
# Run and check before-backup command (for all DBs)
$bok = &execute_before(undef, STDOUT, 1, $in{'file'}, undef);
if (!$bok) {
print "$main::whatfailed : ",$text{'backup_ebefore'},"<p>\n";
goto donebackup;
}
}
foreach $db (@dbs) {
if (!&accepting_connections($db)) {
print &text('backup_notaccept', "<tt>$db</tt>"),"<p>\n";
next;
}
if ($in{'all'}) {
$dir = &date_subs($in{'path'});
&make_backup_dir($dir) if ($in{'mkdir'});
$path = $dir."/".$db.".".$suf;
}
else {
$path = &date_subs($in{'path'});
}
if ($cron && $cmode == 0) {
# Run and check before-backup command
$bok = &execute_before($db, STDOUT, 1, $path, $in{'all'} ? undef : $db);
if (!$bok) {
print "$main::whatfailed : ",$text{'backup_ebefore'},"<p>\n";
next;
}
}
$err = &backup_database($db, $path, $in{'format'}, \@tables,
undef, $in{'compress'});
if ($err) {
print "$main::whatfailed : ",
&text('backup_ebackup',"<pre>$err</pre>"),"<p>\n";
}
else {
@st = stat($path);
print &text('backup_done', "<tt>$db</tt>",
"<tt>$path</tt>", $st[7]),"<p>\n";
}
&execute_after($db, STDOUT, 1, $path, $in{'all'} ? undef : $db)
if ($cron && $cmode == 0);
}
&execute_after(undef, STDOUT, 1, $in{'file'}, undef) if ($cmode == 1);
donebackup:
}
if ($cron) {
&lock_file($cron_cmd);
&cron::create_wrapper($cron_cmd, $module_name, "backup.pl");
&unlock_file($cron_cmd);
&lock_file(&cron::cron_file($job));
if ($in{'sched'} && !$oldjob) {
&cron::create_cron_job($job);
$what = "backup_ccron";
}
elsif (!$in{'sched'} && $oldjob) {
# Need to delete cron job
&cron::delete_cron_job($job);
$what = "backup_dcron";
}
elsif ($in{'sched'} && $oldjob) {
# Need to update cron job
&cron::change_cron_job($job);
$what = "backup_ucron";
}
else {
$what = "backup_ncron";
}
&unlock_file(&cron::cron_file($job));
# Tell the user what was done
print $text{$what},"<p>\n" if ($what);
}
&webmin_log("backup", undef, $in{'all'} ? "" : $in{'db'}, \%in);
if ($in{'all'}) {
&ui_print_footer("", $text{'index_return'});
}
else {
&ui_print_footer("edit_dbase.cgi?db=$in{'db'}", $text{'dbase_return'},
&get_databases_return_link($in{'db'}), $text{'index_return'});
}
+80
View File
@@ -0,0 +1,80 @@
#!/usr/local/bin/perl
# backup.pl
# Called by cron to backup a database
$no_acl_check++;
require './postgresql-lib.pl';
if ($ARGV[0] eq "--all") {
$all = 1;
@dbs = &list_databases();
$cmode = $config{'backup_cmode_'};
}
else {
$ARGV[0] || die "Missing database parameter";
@dbs = ( $ARGV[0] );
$cmode = 0;
}
if ($cmode) {
# Run and check before-backup command (for all DBs)
$bok = &execute_before(undef, STDOUT, 0, $config{'backup_'}, undef);
if (!$bok) {
print STDERR "Before-backup command failed!\n";
exit(1);
}
}
$ex = 0;
foreach $db (@dbs) {
$sf = $all ? "" : $db;
if (!&accepting_connections($db)) {
#print STDERR "Database $db is not accepting connections.\n";
next;
}
$format = $config{'backup_format_'.$sf};
$compress = $config{'backup_compress_'.$sf};
$mkdir = $config{'backup_mkdir_'.$sf};
$suf = $format eq "p" ? "sql" :
$format eq "t" ? "tar" : "post";
$suf .= ($compress == 1 ? ".gz" :
$compress == 2 ? ".bz2" : "");
if ($all) {
$dir = &date_subs($config{'backup_'});
$file = "$dir/$db.$suf";
&make_backup_dir($dir) if ($mkdir);
}
else {
$file = &date_subs($config{'backup_'.$db});
}
@tables = split(/\s+/, $config{'backup_tables_'.$sf});
if (!$file) {
print STDERR "No backup file set for database $db\n";
exit(1);
}
if (!$cmode) {
# Run and check before-backup command (for one DB)
$bok = &execute_before($db, STDOUT, 0, $file, $all ? undef : $db);
if (!$bok) {
print STDERR "Before-backup command failed!\n";
$ex = 1;
next;
}
}
unlink($file);
$err = &backup_database($db, $file, $format, \@tables, undef,$compress);
if ($err) {
print STDERR "Backup of database $db to file $file failed:\n";
print STDERR $err;
$ex = 1;
}
if (!$cmode) {
&execute_after($db, STDOUT, 0, $file, $all ? undef : $db);
}
}
if ($cmode) {
&execute_after(undef, STDOUT, 0, $config{'backup_'}, undef);
}
exit($ex);
+43
View File
@@ -0,0 +1,43 @@
do 'postgresql-lib.pl';
# backup_config_files()
# Returns files and directories that can be backed up
sub backup_config_files
{
return ( $hba_conf_file );
}
# pre_backup(&files)
# Called before the files are actually read
sub pre_backup
{
return undef;
}
# post_backup(&files)
# Called after the files are actually read
sub post_backup
{
return undef;
}
# pre_restore(&files)
# Called before the files are restored from a backup
sub pre_restore
{
return undef;
}
# post_restore(&files)
# Called after the files are restored from a backup
sub post_restore
{
if (&is_postgresql_running()) {
&restart_postgresql();
}
return undef;
}
1;
+167
View File
@@ -0,0 +1,167 @@
#!/usr/local/bin/perl
# backup_form.cgi
# Display a form for backup the database
require './postgresql-lib.pl' ;
&ReadParse();
&error_setup ( $text{'backup_err'} ) ;
if ($in{'all'}) {
@alldbs = &list_databases();
@dbs = grep { &can_edit_db($_) } @alldbs;
@alldbs == @dbs || &error($text{'dbase_ecannot'});
}
else {
&can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'});
}
$access{'backup'} || &error($text{'backup_ecannot'});
&has_command($config{'dump_cmd'}) ||
&error(&text('backup_ecmd', "<tt>$config{'dump_cmd'}</tt>"));
$desc = "<tt>$in{'db'}</tt>";
&ui_print_header($desc, $in{'all'} ? $text{'backup_title2'}
: $text{'backup_title'}, "", "backup_form" ) ;
$cron = !$module_info{'usermin'} &&
!$access{'user'} && &foreign_installed("cron");
if ($in{'all'}) {
print "$text{'backup_desc3'}\n";
}
else {
print &text('backup_desc', "<tt>$in{'db'}</tt>"),"\n";
}
if ($cron) {
print "$text{'backup_desc2'}\n";
}
print "<p>\n";
%c = $module_info{'usermin'} ? %userconfig : %config;
print &ui_form_start("backup.cgi", "post");
print &ui_hidden("db", $in{'db'});
print &ui_hidden("all", $in{'all'});
print &ui_hidden_table_start($text{'backup_header1'}, "width=100%", 2, "main",
1, [ "width=30%" ]);
# Destination file or directory
$p = $c{'backup_'.$in{'db'}} || "$config{'repository'}/";
print &ui_table_row($in{'all'} ? $text{'backup_path2'}
: $text{'backup_path'},
&ui_textbox("path", $p, 60)." ".
&file_chooser_button("path"));
# Create destination dir
if ($in{'all'}) {
print &ui_table_row($text{'backup_mkdir'},
&ui_yesno_radio("mkdir", int($c{'backup_mkdir_'.$in{'db'}})));
}
# Show backup format input
$f = $c{'backup_format_'.$in{'db'}};
print &ui_table_row($text{'backup_format'},
&ui_select("format", $f,
[ [ 'p', $text{'backup_format_p'} ],
[ 't', $text{'backup_format_t'} ],
[ 'c', $text{'backup_format_c'} ] ]));
# Show compression option
$c = $c{'backup_compress_'.$in{'db'}} || 0;
print &ui_table_row($text{'backup_compress'},
&ui_radio("compress", $c, [ [ 0, $text{'backup_compress_0'} ],
[ 1, $text{'backup_compress_1'} ],
[ 2, $text{'backup_compress_2'} ] ]));
if (!$in{'all'}) {
# Show input to select tables
$t = $c{'backup_tables_'.$in{'db'}};
@tables = &list_tables($in{'db'});
if (@tables) {
print &ui_table_row($text{'backup_tables'},
&ui_radio("tables_def", $t ? 0 : 1,
[ [ 1, $text{'backup_alltables'} ],
[ 0, $text{'backup_seltables'} ] ])."<br>".
&ui_select("tables", [ split(/\s+/, $t) ],
[ sort @tables ], 5, 1));
}
else {
print &ui_hidden("tables_def", 1);
}
}
print &ui_hidden_table_end("main");
if ($cron) {
if ($access{'cmds'}) {
print &ui_hidden_table_start($text{'backup_header2'},
"width=100%", 2,
"opts", 0, [ "width=30%" ]);
$b = $c{'backup_before_'.$in{'db'}};
print &ui_table_row($text{'backup_before'},
&ui_textbox("before", $b, 50));
$a = $c{'backup_after_'.$in{'db'}};
print &ui_table_row($text{'backup_after'},
&ui_textbox("after", $a, 50));
if ($in{'all'}) {
# Command mode option
$cmode = $c{'backup_cmode_'.$in{'db'}};
print &ui_table_row($text{'backup_cmode'},
&ui_radio("cmode", int($cmode),
[ [ 0, $text{'backup_cmode0'} ],
[ 1, $text{'backup_cmode1'} ] ]));
}
print &ui_hidden_table_end("opts");
}
print &ui_hidden_table_start($text{'backup_header3'}, "width=100%",
2, "sched", 1, [ "width=30%" ]);
&foreign_require("cron", "cron-lib.pl");
@jobs = &cron::list_cron_jobs();
$cmd = $in{'all'} ? "$cron_cmd --all" : "$cron_cmd $in{'db'}";
($job) = grep { $_->{'command'} eq $cmd } @jobs;
print &ui_table_row($text{'backup_sched'},
&ui_radio("sched", $job ? 1 : 0,
[ [ 0, $text{'no'} ], [ 1, $text{'backup_sched1'} ] ]));
if (!$config{'simple_sched'} || ($dump && !$dump->{'special'})) {
# Complex Cron time input
$job ||= { 'mins' => 0,
'hours' => 0,
'days' => '*',
'months' => '*',
'weekdays' => '*' };
print &cron::get_times_input($job);
}
else {
# Simple Cron time input
$job ||= { 'special' => 'daily' };
print &ui_hidden("special_def", 1),"\n";
print &ui_table_row($text{'backup_special'},
&ui_select("special", $job->{'special'},
[ map { [ $_, $cron::text{'edit_special_'.$_} ] }
('hourly', 'daily', 'weekly', 'monthly', 'yearly')]));
}
print &ui_hidden_table_end("sched");
}
if ($cron) {
print &ui_form_end([ [ "backup", $text{'backup_ok'} ],
[ "save", $text{'backup_ok2'} ] ]);
}
else {
print &ui_form_end([ [ "backup", $text{'backup_ok'} ] ]);
}
if ($in{'all'}) {
&ui_print_footer("", $text{'index_return'});
}
else {
&ui_print_footer("edit_dbase.cgi?db=$in{'db'}", $text{'dbase_return'},
&get_databases_return_link($in{'db'}), $text{'index_return'});
}
+41
View File
@@ -0,0 +1,41 @@
do 'postgresql-lib.pl';
sub cgi_args
{
my ($cgi) = @_;
my $db;
eval {
local $main::error_must_die = 1;
($db) = grep { &can_edit_db($_) &&
!/^template/ } &list_databases();
};
return undef if (!$db); # Don't know which DB to use
if ($cgi eq 'edit_dbase.cgi' || $cgi eq 'backup_form.cgi' ||
$cgi eq 'exec_form.cgi' || $cgi eq 'restore_form.cgi') {
# Use first DB
return 'db='.&urlize($db);
}
elsif ($cgi eq 'list_grants.cgi') {
# Works with no args
return '';
}
elsif ($cgi eq 'table_form.cgi') {
return 'db='.&urlize($db).'&fields=4';
}
elsif ($cgi eq 'edit_view.cgi' || $cgi eq 'edit_seq.cgi') {
return 'db='.&urlize($db).'&new=1';
}
elsif ($cgi eq 'edit_table.cgi' || $cgi eq 'edit_field.cgi' ||
$cgi eq 'view_table.cgi') {
# Find a table
my $table;
eval {
local $main::error_must_die = 1;
($table) = &list_tables($db);
};
return 'db='.&urlize($db).'&table='.&urlize($table).
($cgi eq 'edit_field.cgi' ? '&idx=0' : '');
}
return undef;
}
+24
View File
@@ -0,0 +1,24 @@
basedb=template1
pass=
hba_conf=/usr/local/pgsql/var/pg_hba.conf
pid_file=/usr/local/pgsql/var/postmaster.pid
stop_cmd=
start_cmd=su postgres -c "/usr/local/pgsql/bin/pg_ctl -D/usr/local/pgsql/var"
perpage=25
psql=/usr/local/pgsql/bin/psql
login=postgres
plib=/usr/local/pgsql/lib
nodbi=0
dump_cmd=/usr/local/pgsql/bin/pg_dump
rstr_cmd=/usr/local/pgsql/bin/pg_restore
sameunix=0
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+25
View File
@@ -0,0 +1,25 @@
login=postgres
psql=/usr/bin/psql
basedb=template1
start_cmd=systemctl start postgresql
stop_cmd=systemctl stop postgresql
pid_file=/var/lib/pgsql/data/postmaster.pid
perpage=25
hba_conf=/var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/*/data/pg_hba.conf
nodbi=0
user=postgres
setup_cmd=postgresql-setup --initdb
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
repository=/home/db_repository
sameunix=1
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+25
View File
@@ -0,0 +1,25 @@
login=postgres
psql=/usr/bin/psql
basedb=template1
start_cmd=systemctl start postgresql
stop_cmd=systemctl stop postgresql
pid_file=/var/run/postmaster*.pid
perpage=25
hba_conf=/var/lib/pgsql/data/pg_hba.conf
nodbi=0
user=postgres
setup_cmd=postgresql-setup initdb
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
repository=/home/db_repository
sameunix=1
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+25
View File
@@ -0,0 +1,25 @@
login=postgres
psql=/usr/bin/psql
basedb=template1
start_cmd=systemctl start postgresql
stop_cmd=systemctl stop postgresql
pid_file=/var/lib/pgsql/data/postmaster.pid
perpage=25
hba_conf=/var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/*/data/pg_hba.conf
nodbi=0
user=postgres
setup_cmd=postgresql-setup --initdb
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
repository=/home/db_repository
sameunix=1
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
@@ -0,0 +1,25 @@
login=postgres
psql=/usr/bin/psql
basedb=template1
start_cmd=systemctl start postgresql
stop_cmd=systemctl stop postgresql
pid_file=/var/lib/pgsql/data/postmaster.pid
perpage=25
hba_conf=/var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/*/data/pg_hba.conf
nodbi=0
user=postgres
setup_cmd=postgresql-setup --initdb
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
repository=/home/db_repository
sameunix=1
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+25
View File
@@ -0,0 +1,25 @@
login=postgres
psql=/usr/bin/psql
basedb=template1
start_cmd=systemctl start postgresql
stop_cmd=systemctl stop postgresql
pid_file=/var/lib/pgsql/data/postmaster.pid
perpage=25
hba_conf=/var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/*/data/pg_hba.conf
nodbi=0
user=postgres
setup_cmd=postgresql-setup --initdb
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
repository=/home/db_repository
sameunix=1
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+25
View File
@@ -0,0 +1,25 @@
login=postgres
psql=/usr/bin/psql
basedb=template1
start_cmd=systemctl start postgresql
stop_cmd=systemctl stop postgresql
pid_file=/var/lib/pgsql/data/postmaster.pid
perpage=25
hba_conf=/var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/*/data/pg_hba.conf
nodbi=0
user=postgres
setup_cmd=postgresql-setup --initdb
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
repository=/home/db_repository
sameunix=1
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
@@ -0,0 +1,25 @@
login=postgres
psql=/usr/bin/psql
basedb=template1
start_cmd=systemctl start postgresql
stop_cmd=systemctl stop postgresql
pid_file=/var/run/postmaster*.pid
perpage=25
hba_conf=/var/lib/pgsql/data/pg_hba.conf
nodbi=0
user=postgres
setup_cmd=postgresql-setup initdb
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
repository=/home/db_repository
sameunix=1
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+25
View File
@@ -0,0 +1,25 @@
login=postgres
psql=/usr/bin/psql
basedb=template1
start_cmd=systemctl start postgresql
stop_cmd=systemctl stop postgresql
pid_file=/var/lib/pgsql/data/postmaster.pid
perpage=25
hba_conf=/var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/*/data/pg_hba.conf
nodbi=0
user=postgres
setup_cmd=postgresql-setup --initdb
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
repository=/home/db_repository
sameunix=1
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
@@ -0,0 +1,25 @@
login=postgres
psql=/usr/bin/psql
basedb=template1
start_cmd=systemctl start postgresql
stop_cmd=systemctl stop postgresql
pid_file=/var/run/postmaster*.pid
perpage=25
hba_conf=/var/lib/pgsql/data/pg_hba.conf
nodbi=0
user=postgres
setup_cmd=postgresql-setup initdb
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
repository=/home/db_repository
sameunix=1
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+24
View File
@@ -0,0 +1,24 @@
hba_conf=/home/pgsql/pg_hba.conf
psql=/usr/bin/psql
start_cmd=/etc/rc.d/init.d/postgresql start
basedb=template1
perpage=25
plib=
pass=cfc4b0056f0833c6
login=admin
stop_cmd=/etc/rc.d/init.d/postgresql stop
pid_file=/var/run/postmaster.pid
nodbi=0
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
sameunix=0
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+25
View File
@@ -0,0 +1,25 @@
login=postgres
psql=/usr/bin/psql
basedb=template1
start_cmd=/etc/rc.d/init.d/postgresql start
stop_cmd=/etc/rc.d/init.d/postgresql stop
pid_file=/var/run/postmaster.pid
perpage=25
hba_conf=/var/lib/pgsql/data/pg_hba.conf
nodbi=0
user=postgres
setup_cmd=/etc/rc.d/init.d/postgresql start
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
repository=/home/db_repository
sameunix=1
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+24
View File
@@ -0,0 +1,24 @@
hba_conf=/etc/postgresql/pg_hba.conf
psql=/usr/bin/psql
start_cmd=/etc/init.d/postgresql start
basedb=template1
perpage=25
plib=
pass=
login=postgres
stop_cmd=/etc/init.d/postgresql stop
pid_file=/var/run/postmaster.pid
nodbi=0
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
sameunix=1
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+24
View File
@@ -0,0 +1,24 @@
hba_conf=/etc/postgresql/*/main/pg_hba.conf
psql=/usr/bin/psql
start_cmd=systemctl start postgresql
stop_cmd=systemctl stop postgresql
basedb=template1
perpage=25
plib=
pass=
login=postgres
pid_file=/run/postgresql/*.pid
nodbi=0
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
sameunix=1
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+24
View File
@@ -0,0 +1,24 @@
hba_conf=/etc/postgresql/*/main/pg_hba.conf
psql=/usr/bin/psql
start_cmd=/etc/init.d/postgresql* start
stop_cmd=/etc/init.d/postgresql* stop
basedb=template1
perpage=25
plib=
pass=
login=postgres
pid_file=/var/run/postmaster.pid
nodbi=0
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
sameunix=1
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+26
View File
@@ -0,0 +1,26 @@
basedb=template1
pass=
hba_conf=/usr/local/pgsql/data/pg_hba.conf
alt_hba_conf=/usr/local/share/postgresql/pg_hba.conf.sample
pid_file=/usr/local/pgsql/data/postmaster.pid
stop_cmd=/usr/local/etc/rc.d/postgresql stop
start_cmd=/usr/local/etc/rc.d/postgresql start
setup_cmd=/usr/local/etc/rc.d/postgresql initdb
perpage=25
psql=/usr/local/bin/psql
login=pgsql
plib=/usr/local/lib
nodbi=0
dump_cmd=/usr/local/bin/pg_dump
rstr_cmd=/usr/local/bin/pg_restore
sameunix=0
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+25
View File
@@ -0,0 +1,25 @@
basedb=template1
pass=
hba_conf=/usr/local/pgsql/data/pg_hba.conf
pid_file=/usr/local/pgsql/data/postmaster.pid
stop_cmd=/usr/local/etc/rc.d/postgresql forcestop
start_cmd=/usr/local/etc/rc.d/postgresql forcestart
setup_cmd=chown pgsql: /usr/local/pgsql/data ; /usr/local/etc/rc.d/postgresql forceinitdb
perpage=25
psql=/usr/local/bin/psql
login=pgsql
plib=/usr/local/lib
nodbi=0
dump_cmd=/usr/local/bin/pg_dump
rstr_cmd=/usr/local/bin/pg_restore
sameunix=0
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+22
View File
@@ -0,0 +1,22 @@
login=postgres
psql=/usr/bin/psql
basedb=template1
start_cmd=/etc/init.d/postgresql start
stop_cmd=/etc/init.d/postgresql stop
pid_file=/var/lib/postgresql/data/postmaster.pid
perpage=25
hba_conf=/var/lib/postgresql/data/pg_hba.conf
nodbi=0
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
sameunix=0
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+23
View File
@@ -0,0 +1,23 @@
login=postgres
psql=/usr/bin/psql
basedb=template1
start_cmd=service postgresql start
stop_cmd=service postgresql stop
setup_cmd=service postgresql start
pid_file=/var/run/postmaster.pid
perpage=25
hba_conf=/var/lib/pgsql/data/pg_hba.conf
nodbi=0
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
sameunix=0
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+23
View File
@@ -0,0 +1,23 @@
login=postgres
psql=/usr/bin/psql
basedb=template1
start_cmd=/etc/init.d/postgresql start
stop_cmd=/etc/init.d/postgresql stop
setup_cmd=/etc/init.d/postgresql stop
pid_file=/var/run/postmaster.pid
perpage=25
hba_conf=/var/lib/pgsql/pg_hba.conf
nodbi=0
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
sameunix=0
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+24
View File
@@ -0,0 +1,24 @@
basedb=template1
pass=
hba_conf=/usr/pkg/pgsql/data/pg_hba.conf
pid_file=/usr/pkg/pgsql/data/postmaster.pid
stop_cmd=/usr/pkg/etc/rc.d/pgsql stop
start_cmd=/usr/pkg/etc/rc.d/pgsql start
perpage=25
psql=/usr/pkg/bin/psql
login=pgsql
plib=/usr/pkg/lib
nodbi=0
dump_cmd=/usr/pkg/bin/pg_dump
rstr_cmd=/usr/pkg/bin/pg_restore
sameunix=0
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+25
View File
@@ -0,0 +1,25 @@
hba_conf=/var/lib/pgsql/data/pg_hba.conf
psql=/usr/bin/psql
start_cmd=systemctl start postgresql
basedb=template1
perpage=25
plib=
pass=
login=postgres
stop_cmd=systemctl stop postgresql
pid_file=/var/run/postmaster.pid
nodbi=0
setup_cmd=systemctl start postgresql
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
sameunix=1
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+23
View File
@@ -0,0 +1,23 @@
login=postgres
psql=/usr/bin/psql
basedb=template1
start_cmd=/etc/rc.d/init.d/postgresql start
stop_cmd=/etc/rc.d/init.d/postgresql stop
pid_file=/var/run/postmaster.pid
perpage=25
hba_conf=/var/lib/pgsql/pg_hba.conf
nodbi=0
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
repository=/home/db_repository
sameunix=0
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+24
View File
@@ -0,0 +1,24 @@
basedb=template1
pass=
pid_file=/usr/bin/postmaster
hba_conf=/var/lib/postgresql/data/pg_hba.conf
stop_cmd=
start_cmd=service postgresql-server start
stop_cmd=service postgresql-server stop
perpage=25
psql=/usr/bin/psql
login=postgres
nodbi=0
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
sameunix=0
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+23
View File
@@ -0,0 +1,23 @@
login=postgres
psql=/usr/bin/psql
basedb=template1
start_cmd=/etc/rc.d/init.d/postgresql start
stop_cmd=/etc/rc.d/init.d/postgresql stop
pid_file=/var/run/postmaster.pid
perpage=25
hba_conf=/var/lib/pgsql/pg_hba.conf
nodbi=0
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
repository=/home/db_repository
sameunix=0
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+25
View File
@@ -0,0 +1,25 @@
login=postgres
psql=/usr/bin/psql
basedb=template1
start_cmd=if [ -r /etc/rc.d/init.d/rhdb ]; then /etc/rc.d/init.d/rhdb start; else /etc/rc.d/init.d/postgresql start; fi
stop_cmd=if [ -r /etc/rc.d/init.d/rhdb ]; then /etc/rc.d/init.d/rhdb stop; else /etc/rc.d/init.d/postgresql stop; fi
pid_file=/var/run/postmaster*.pid
perpage=25
hba_conf=/var/lib/pgsql/data/pg_hba.conf
nodbi=0
user=postgres
setup_cmd=if [ -r /etc/rc.d/init.d/rhdb ]; then /etc/rc.d/init.d/rhdb start; else /etc/rc.d/init.d/postgresql initdb ; /etc/rc.d/init.d/postgresql start; fi
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
repository=/home/db_repository
sameunix=1
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+25
View File
@@ -0,0 +1,25 @@
login=postgres
psql=/usr/bin/psql
basedb=template1
start_cmd=systemctl start postgresql.service
stop_cmd=systemctl stop postgresql.service
pid_file=/var/run/postmaster*.pid
perpage=25
hba_conf=/var/lib/pgsql/data/pg_hba.conf
nodbi=0
user=postgres
setup_cmd=postgresql-setup initdb
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
repository=/home/db_repository
sameunix=1
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+24
View File
@@ -0,0 +1,24 @@
login=postgres
psql=/usr/bin/psql
basedb=template1
start_cmd=/etc/rc.d/init.d/postgresql start
stop_cmd=/etc/rc.d/init.d/postgresql stop
pid_file=/var/run/postmaster.pid
perpage=25
hba_conf=/var/lib/pgsql/data/pg_hba.conf
nodbi=0
setup_cmd=/etc/rc.d/init.d/postgresql start
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
repository=/home/db_repository
sameunix=0
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+25
View File
@@ -0,0 +1,25 @@
login=postgres
psql=/usr/bin/psql
basedb=template1
start_cmd=/etc/rc.d/init.d/postgresql start
stop_cmd=/etc/rc.d/init.d/postgresql stop
pid_file=/var/run/postmaster.pid
perpage=25
hba_conf=/var/lib/pgsql/data/pg_hba.conf
nodbi=0
user=postgres
setup_cmd=/etc/rc.d/init.d/postgresql start
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
repository=/home/db_repository
sameunix=0
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+25
View File
@@ -0,0 +1,25 @@
login=postgres
psql=/usr/bin/psql
basedb=template1
start_cmd=/etc/rc.d/init.d/postgresql start
stop_cmd=/etc/rc.d/init.d/postgresql stop
pid_file=/var/run/postmaster.pid
perpage=25
hba_conf=/var/lib/pgsql/data/pg_hba.conf
nodbi=0
user=postgres
setup_cmd=/etc/rc.d/init.d/postgresql start
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
repository=/home/db_repository
sameunix=1
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+22
View File
@@ -0,0 +1,22 @@
login=postgres
psql=/server/postgresql/bin/psql
basedb=template1
start_cmd=/etc/rc.d/postgresql up
stop_cmd=/etc/rc.d/postgresql down
pid_file=/server/postgresql/data/postmaster.pid
perpage=25
hba_conf=/server/postgresql/data/pg_hba.conf
nodbi=0
dump_cmd=/server/postgresql/bin/pg_dump
rstr_cmd=/server/postgresql/bin/pg_restore
sameunix=0
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+24
View File
@@ -0,0 +1,24 @@
hba_conf=/var/lib/pgsql/data/pg_hba.conf
psql=/usr/lib/pgsql/bin/psql
start_cmd=/sbin/init.d/postgres start
basedb=template1
perpage=25
plib=
pass=
login=postgres
stop_cmd=/sbin/init.d/postgres stop
pid_file=/var/run/postmaster.pid
nodbi=0
dump_cmd=/usr/lib/pgsql/bin/pg_dump
rstr_cmd=/usr/lib/pgsql/bin/pg_restore
sameunix=0
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+25
View File
@@ -0,0 +1,25 @@
hba_conf=/var/lib/pgsql/data/pg_hba.conf
psql=/usr/bin/psql
start_cmd=/sbin/init.d/postgres start
basedb=template1
perpage=25
plib=
pass=
login=postgres
stop_cmd=/sbin/init.d/postgres stop
pid_file=/var/run/postmaster.pid
nodbi=0
setup_cmd=/etc/init.d/postgresql start
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
sameunix=0
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+25
View File
@@ -0,0 +1,25 @@
hba_conf=/var/lib/pgsql/data/pg_hba.conf
psql=/usr/bin/psql
start_cmd=/etc/init.d/postgresql start
basedb=template1
perpage=25
plib=
pass=
login=postgres
stop_cmd=/etc/init.d/postgresql stop
pid_file=/var/run/postmaster.pid
nodbi=0
setup_cmd=/etc/init.d/postgresql start
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
sameunix=0
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+25
View File
@@ -0,0 +1,25 @@
hba_conf=/var/lib/pgsql/data/pg_hba.conf
psql=/usr/bin/psql
start_cmd=/etc/init.d/postgresql start
basedb=template1
perpage=25
plib=
pass=
login=postgres
stop_cmd=/etc/init.d/postgresql stop
pid_file=/var/run/postmaster.pid
nodbi=0
setup_cmd=/etc/init.d/postgresql start
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
sameunix=1
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+22
View File
@@ -0,0 +1,22 @@
pid_file=/var/tmp/postmaster.pid
hba_conf=/usr/syno/pgsql/etc/pg_hba.conf
access=*: *
basedb=template1
style=0
max_text=1000
nodbi=0
max_dbs=50
start_cmd=/usr/syno/etc/rc.d/S20pgsql.sh start
dump_cmd=/usr/syno/pgsql/bin/pg_dump
add_mode=1
psql=/usr/syno/pgsql/bin/psql
blob_mode=0
simple_sched=0
webmin_subs=0
stop_cmd=/usr/syno/etc/rc.d/S20pgsql.sh stop
access_own=0
rstr_cmd=/usr/syno/pgsql/bin/pg_restore
sameunix=1
date_subs=0
perpage=25
login=admin
+25
View File
@@ -0,0 +1,25 @@
login=postgres
psql=/usr/bin/psql
basedb=template1
start_cmd=su -l postgres -s /bin/sh -c "/usr/bin/pg_ctl -D /var/lib/postgresql/data -l postgresql.log start"
stop_cmd=/etc/init.d/postgresql stop
pid_file=/var/run/postmaster.pid
perpage=25
hba_conf=/var/lib/postgresql/data/pg_hba.conf
nodbi=0
user=postgres
setup_cmd=su -l postgres -s /bin/sh -c "/usr/bin/initdb --pgdata=/var/lib/postgresql/data"
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
repository=/home/db_repository
sameunix=0
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+25
View File
@@ -0,0 +1,25 @@
hba_conf=/var/lib/pgsql/data/pg_hba.conf
psql=/usr/bin/psql
start_cmd=/etc/init.d/postgresql start
basedb=template1
perpage=25
plib=
pass=
login=postgres
stop_cmd=/etc/init.d/postgresql stop
pid_file=/var/run/postmaster.pid
nodbi=0
setup_cmd=/etc/init.d/postgresql start
dump_cmd=/usr/bin/pg_dump
rstr_cmd=/usr/bin/pg_restore
sameunix=0
access=*: *
blob_mode=0
add_mode=1
date_subs=0
style=0
max_dbs=50
simple_sched=0
access_own=0
max_text=1000
webmin_subs=0
+28
View File
@@ -0,0 +1,28 @@
sameunix=0
date_subs=0
perpage=25
stop_cmd=sc stop pgsql-*
hba_conf=C:\Program Files\PostgreSQL\8.2\data\pg_hba.conf
pid_file=
psql=C:\Program Files\PostgreSQL\8.2\bin\psql.exe
plib=
nodbi=0
max_dbs=50
start_cmd=sc start pgsql-*
pass=
dump_cmd=C:\Program Files\PostgreSQL\8.2\bin\pg_dump.exe
access=*: *
style=0
rstr_cmd=C:\Program Files\PostgreSQL\8.2\bin\pg_restore.exe
basedb=template1
login=postgres
add_mode=1
blob_mode=0
simple_sched=
max_text=
setup_cmd=
encoding=
repository=
port=
host=
webmin_subs=0
+30
View File
@@ -0,0 +1,30 @@
line1=Configurable options,11
login=Administration login,0
pass=Administration password,12
sameunix=Unix user to connect to database as,1,1-Same as Administration login,0-root
perpage=Number of rows to display per page,0,5
style=Show databases and tables as,1,1-List,0-Icons,2-Names only
add_mode=Use vertical row editing interface,1,1-Yes,0-No
blob_mode=Show blob and text fields as,1,0-Data in table,1-Links to download
nodbi=Use DBI to connect if available?,1,0-Yes,1-No
date_subs=Do <tt>strftime</tt> substitution of backup destinations?,1,1-Yes,0-No
webmin_subs=Do Webmin variable substitution on backup destinations?,1,1-Yes,0-No
simple_sched=Schedule selector format,1,1-Simple,0-Complex
encoding=Encoding for database content,3,Default (from current language)
max_dbs=Maximum number of databases and tables to display,0,5
max_text=Maximum display length for text fields,3,Unlimited
line2=System configuration,11
psql=Path to psql command,0
plib=Path to PostgreSQL shared libraries,3,Not needed
basedb=Initial PostgreSQL database,0
start_cmd=Command to start PostgreSQL,0
stop_cmd=Command to stop PostgreSQL,3,Kill process
setup_cmd=Command to initialize PostgreSQL,3,None
pid_file=Path to postmaster PID file,8
hba_conf=Paths to host access config file,9,60,3,\t
host=PostgreSQL host to connect to,3,Local socket
port=PostgreSQL port to connect to,3,Default
sslmode=SSL connection mode,4,-Default,disable-Unencrypted only,allow-Unencrypted then SSL,prefer-SSL then unencrypted,require-SSL only,verify_ca-SSL with trusted CA only,verify_full-SSL with trusted CA and matching hostname only
dump_cmd=Path to pg_dump command,0
rstr_cmd=Path to pg_restore command,0
repository=Default backup repository directory,3,None
+29
View File
@@ -0,0 +1,29 @@
line1=Конфигурируеми опции,11
login=Логин за администриране,0
pass=Парола за администриране,12
sameunix=Unix потребител&#44; от чието име да е свързването към бази данни,1,1-Същият като логина за администриране,0-root
perpage=Брой редове за показване на страница,0,5
style=Показване на бази данни и таблици като,1,1-Списък,0-Икони,2-Само имена
add_mode=Използване на интерфейс за вертикално редактиране на редове,1,1-Да,0-0
blob_mode=Показване на blob и text полета като,1,0-Данни в таблица,1-Линкове за сваляне
nodbi=Свързване чрез DBI (ако е достъпно)?,1,0-Да,1-Не
date_subs=<tt>strftime</tt> заместване на дестинациите за резервни копия?,1,1-Да,0-Не
webmin_subs=Да замества ли Webmin променливите в дестинациите за резервни копия?,1,1-Да,0-Не
simple_sched=Формат за селектора на разписание,1,1-Прост,0-Сложен
encoding=Енкодинг за съдържание на база данни,3,Подразбиращо се (от настоящия език)
max_dbs=Максимален брой бази данни и таблици за показване,0,5
max_text=Максимална дължина за показване за текстови полета,3,Неограничена
line2=Системна конфигурация,11
psql=Път към командата pqsl,0
plib=Път към споделените библиотеки на PostgreSQL,3,Не са необходими
basedb=Начална база данни на PostgreSQL,0
start_cmd=Команда за стартиране на PostgreSQL,0
stop_cmd=Команда за спиране на PostgreSQL,3,Kill process
setup_cmd=Команда за инициализиране на PostgreSQL,3,Няма
pid_file=Път към PID файл на postmaster,0
hba_conf=Пътища към конфигурационен файл за достъп до хост,9,60,3,\t
host=Свързване към кой PostgreSQL хост?,3,localhost
port=Порт за свързване към PostgreSQL,3,Подразбиращият се
dump_cmd=Път към командата pg_dump,0
rstr_cmd=Път към командата pg_restore,0
repository=Подразбираща се директория за съхранение на резервни копия,3,Няма
+29
View File
@@ -0,0 +1,29 @@
line1=Opcions configurables,11
login=Usuari d'administració,0
pass=Contrasenya d'administració,12
sameunix=Usuari Unix per connectar-se a la base de dades,1,1-El mateix que el d'administració,0-root
perpage=Nombre de files a mostrar per pàgina,0,5
style=Mostra les bases de dades i les taules com a,1,1-Llista,0-Icones,2-Només noms
add_mode=Utilitza la interfície vertical d'edició de files,1,1-Sí,0-No
blob_mode=Mostra els camps <tt>BLOB</tt> i <tt>TEXT</tt> com a,1,0-Dades de la taula,1-Enllaços a descarregar
nodbi=Connecta amb DBI si està disponible,1,0-Sí,1-No
date_subs=Fes la substitució <tt>strftime</tt> de les destinacions de còpia,1,1-Sí,0-No
webmin_subs=Fes la substitució de les variables Webmin a les destinacions de còpia,1,1-Sí,0-No
simple_sched=Format del selector de planificació,1,1-Simple,0-Complex
encoding=Codificació del contingut de la base de dades,3,Per defecte (de l'idioma actual)
max_dbs=Nombre màxim de bases de dades i taules a mostrar,0,5
max_text=Llargada màxima de mostra dels camps de text,3,Il·limitada
line2=Configuració del sistema,11
psql=Camí de l'ordre psql,0
plib=Camí de les llibreries compartides de PostgreSQL,3,No cal
basedb=Base de dades inicial de PostgreSQL,0
start_cmd=Ordre per iniciar PostgreSQL,0
stop_cmd=Ordre per aturar PostgreSQL,3,Mata el procés
setup_cmd=Ordre per inicialitzar PostgreSQL,3,Cap
pid_file=Camí del fitxer de PID de postmaster,8
hba_conf=Camins del fitxer de configuració d'accés a hosts,8
host=Host PostgreSQL a connectar,3,localhost
port=Port PostgreSQL a connectar,3,Defecte
dump_cmd=Camí de l'ordre pg_dump,0
rstr_cmd=Camí de l'ordre pg_restore,0
repository=Directori per defecte de repositori de còpies,3,Cap
+15
View File
@@ -0,0 +1,15 @@
line1=Nastavení konfigurace,11
login=Přihlašovací jméno administrátora,0
pass=Heslo administrátora,12
perpage=Počet řádků zobrazujících se na jedné straně,0
nodbi=Použít DBI pro připojení je-li k dispozici?,1,0-Yes,1-No
line2=Konfigurace systému,11
psql=Cesta k příkazu psql,0
plib=Cesta ke sdíleným knihovnám PostgreSQL,3,Není potřeba
basedb=Počáteční PostgreSQL databáze,0
start_cmd=Přikaz ke spuštění PostgreSQL,0
stop_cmd=Příkaz k ukončení PostgreSQL,3,Zabít proces
setup_cmd=Příkaz k inicializaci PostgreSQL,3,Nic
pid_file=Cesta k PID souboru postmastera,0
hba_conf=Cesta ke konfiguračnímu souboru s přístupy hostů,0
host=PostgreSQL host ke kterému se připojuje,3,localhost
+29
View File
@@ -0,0 +1,29 @@
line1=Konfigurierbare Options,11
login=Administrations-Login,0
pass=Administrations-Passwort,12
sameunix=Unix-Benutzername mit welchem zur Datenbank verbunden wird,1,1-Wie Administrationslogin,0-root
perpage=Anzahl anzuzeigender Reihen je Seite,0,5
style=Zeig Datenbanken und Tabellen als,1,1-Liste,0-Icons,2-Nur Namen
add_mode=Benutze vertikale Reihen als Bearbeitungs-Schnittstelle,1,1-Ja,0-Nein
blob_mode=Zeige Blob- und Textfelder als,1,0-Daten in der Tabelle,1-Zu downloadende Verbindungen
nodbi=Benutze DBI zur Verbindung wenn verfügbar?,1,0-Ja,1-Nein
date_subs=Verwende <tt>strftime</tt> als Ersatz der Backup-Speicherorte?,1,1-Ja,0-Nein
webmin_subs=Webmin Variablensubstitution auf Backup-Zielen?,1,1-Ja,0-Nein
simple_sched=Schedule-Selektor-Format,1,1-Einfache,0-Komplex
encoding=Kodierung des Datenbank-Inhalts,3,Standard (aus der aktuellen Sprache)
max_dbs=Maximale Anzahl von Datenbanken und Tabellen zum angezeigen,0,5
max_text=Maximale Displaylänge für Textfelder,3,Unlimitiert
line2=Systemkonfiguration,11
psql=Pfad zu <tt>psql</tt>,0
plib=Pfad zu freigegebenen PostgreSQL-Bibliotheken,3,Nicht benötigt
basedb=Anfängliche PostgreSQL-Datenbank,0
start_cmd=Befehl zum Start von PostgreSQL,0
stop_cmd=Befehl zum Beenden von PostgreSQL,3,Beende Prozess
setup_cmd=Befehl um PostgreSQL zu initialisieren,3,Keiner
pid_file=Pfad zur Postmaster PID-Datei,8
hba_conf=Pfade zur Host Access Konfigurationsdatei,9,60,3,\t
host=Verbinde zu PostgreSQL-Host,3,Localhost
port=PostgreSQL-Port zu welchem verbunden wird,3,Standard
dump_cmd=Pfad zum <tt>pg_dump</tt> Befehl,0
rstr_cmd=Pfad zu <tt>pg_restore</tt>,0
repository=Standard Backup-Verzeichnis,3,Keines
+11
View File
@@ -0,0 +1,11 @@
login=Login de administración,0
pass=Clave de acceso de administración,0
perpage=Número de filas a mostrar por página,0
nodbi=¿Uso DBI para conectar si está disponible?,1,0-,1-No
psql=Trayectoria a comando psql,0
plib=Trayectoria a bibliotecas compartidas de PostgreSQL,3,No son necesarias
basedb=Base de datos inicial de PostgreSQL,0
start_cmd=Comando para arrancar PostgreSQL,0
stop_cmd=Comando para parar PostgreSQL,3,Matar proceso
pid_file=Trayectoria a archivo PID del jefe de estafeta de correos,0
host=Máquina PostgreSQL a conectarse,3,Local
+29
View File
@@ -0,0 +1,29 @@
line1=Options configurables,11
login=Connexion à l'administration,0
pass=Mot de passe d'administration,12
sameunix=Utilisateur Unix pour se connecter à la base de données en tant que,1,1-Identique à la connexion d'administration,0-root
perpage=Nombre de lignes à afficher par page,0,5
style=Afficher les bases de données et les tables comme,1,1-Liste,0-Icônes,2-Noms seulement
add_mode=Utiliser l'interface d'édition de lignes verticales,1,1-Oui,0-Non
blob_mode=Afficher les champs blob et texte comme,1,0-Données dans le tableau,1-Liens à télécharger
nodbi=Utiliser DBI pour se connecter si disponible?,1,0-Oui,1-Non
date_subs=Est-ce que <tt>strftime</tt> remplace les destinations de sauvegarde?,1,1-Oui,0-Non
webmin_subs=Est-ce que la substitution de variables Webmin sur les destinations de sauvegarde?,1,1-Oui,0-Non
simple_sched=Format du sélecteur d'horaire,1,1-Simple,0-Complex
encoding=Encodage du contenu de la base de données,3,Par défaut (à partir de la langue actuelle)
max_dbs=Nombre maximum de bases de données et de tables à afficher,0,5
max_text=Longueur d'affichage maximale des champs de texte,3,Illimité
line2=Configuration du système,11
psql=Chemin vers la commande psql,0
plib=Chemin vers les bibliothèques partagées PostgreSQL,3,Pas besoin
basedb=Base de données PostgreSQL initiale,0
start_cmd=Commande pour démarrer PostgreSQL,0
stop_cmd=Commande pour arrêter PostgreSQL,3,Tuer le processus
setup_cmd=Commande pour initialiser PostgreSQL,3,Aucun
pid_file=Chemin vers le fichier PID du postmaster,8
hba_conf=Chemins vers le fichier de configuration d'accès à l'hôte,9,60,3,\t
host=Hôte PostgreSQL auquel se connecter,3,localhost
port=Port PostgreSQL auquel se connecter,3,Défaut
dump_cmd=Chemin de la commande pg_dump,0
rstr_cmd=Chemin vers la commande pg_restore,0
repository=Répertoire du référentiel de sauvegarde par défaut,3,Aucun
+28
View File
@@ -0,0 +1,28 @@
line1=設定可能なオプション,11
login=PostgreSQLスーパユーザ,0
pass=PostgreSQLスーパユーザパスワード,0
sameunix=Unixユーザのデータベースへの接続方法,1,1-管理ログインと同じ,0-root
perpage=ページ表示行数,0
style=データベースとテーブルの表示,1,1-リスト,0-アイコン,2-名前のみ
add_mode=垂直行編集インターフェイスを使用する,1,1-はい,0-いいえ
blob_mode=BLOBとテキストフィールドの表示方法,1,0-テーブル内データ,1-ダウンロードリンク
nodbi=可能なら DBI 接続を使う ?,1,0-はい,1-いいえ
date_subs=バックアップ先の <tt>strftime</tt>変換を行いますか?,1,1-はい,0-いいえ
simple_sched=スケジュールセレクタのフォーマット,1,1-Simple,0-Complex
encoding=データベース内容のエンコーディング,3,デフォルト (現在の言語設定)
max_dbs=データベースとテーブルを表示する最大数,0,5
max_text=テキストフィールドの最大表示長,3,無制限
line2=システム設定,11
psql=psqlコマンドファイル,0
plib=PostgreSQL シェアードライブラリ,3,必要無し
basedb=PostgreSQL雛型データベース,0
start_cmd=PostgreSQL起動コマンド,0
stop_cmd=PostgreSQL停止コマンド,3,Kill プロセス
setup_cmd=PostgreSQL 初期化コマンド,3,無し
pid_file=postmaster PID ファイル,0
hba_conf=ホストアクセス設定ファイルへのパス,9,60,3,\t
host=PostgreSQL接続ホスト,3,localhost
port=PostgreSQLの接続ポート,3,デフォルト
dump_cmd=pg_dump コマンドのパス,0
rstr_cmd=pg_restore コマンドのパス,0
repository=バックアップ用のディレクトリ,0
+27
View File
@@ -0,0 +1,27 @@
line1=설정 옵션,11
login=관리자 로그인,0
pass=관리자 암호,12
sameunix=데이터베이스에 연결할 유닉스 사용자,1,1-관리자 로그인과 같도록,0-root
perpage=페이지당 출력할 라인수,0,5
style=데이터베이스와 테이블 보기,1,1-리스트,0-아이콘
add_mode=종단 편집 인터페이스 사용여부,1,1-예,0-아니오
blob_mode=blob 와 text 필드 보기,1,0-테이블의 데이터,1-다운로드 링크
nodbi=가능하다면 DBI 연결을 사용하겠습니까?,1,0-예,1-아니오
date_subs=백업 결과물에 <tt>strftime</tt> 대체를 하겠습니까?,1,1-예,0-아니오
simple_sched=스케쥴 선택 형식,1,1-간단히,0-자세히
encoding=데이터베이스 컨텐츠 인고팅,3,기본 (현재 언어설정)
max_dbs=데이터베이스와 테이블 최대 출력 수,0,5
max_text=텍스트 필ㄷ의 최대 출력 길이,3,제한없음
line2=시스템 설정,11
psql=psql 명령 경로,0
plib=PostgreSQL 공유 라이브러리 경로,3,필요 없음
basedb=PostgreSQL 데이터베이스 초기화,0
start_cmd=PostgreSQL 시작 명령,0
stop_cmd=PostgreSQL 정지 명령,3,프로세스 죽임
setup_cmd=PostgreSQL 초기화 명령,3,없음
pid_file=postmaster PID 파일 경로,8
host=연결할 PostgreSQL 호스트,3,localhost
port=연결할 PostgreSQL 포트,3,기본
dump_cmd=pg_dump 명령 경로,0
rstr_cmd=pg_restore 명령 경로,0
repository=기본 백업 저장소 디렉토리,3,없음
+29
View File
@@ -0,0 +1,29 @@
line1=Configureerbare opties,11
login=Administratie login,0
pass=Administratie wachtwoord,12
sameunix=Unix gebruiker die verbind met de database als,1,1-Zelfde als Administratie login,0-root
perpage=Aantal rijen om te laten zien per pagina,0,5
style=Laat databases en tabellen zien als,1,1-Lijst,0-Iconen,2-Alleen namen
add_mode=Gebruik een verticale rij bewerkings interface,1,1-Ja,0-Nee
blob_mode=Laat blob en tekst velden zien als,1,0-Data in tabel,1-Links om te downloaden
nodbi=Gebruik DBI om te verbinden indien beschikbaar?,1,0-Ja,1-Nee
date_subs=Doe <tt>strftime</tt> toevoegingen bij backup bestemmingen?,1,1-Ja,0-Nee
webmin_subs=Webmin variabele substitutie uitvoeren op backup bestemmingen?,1,1-Ja,0-Nee
simple_sched=Geplande selectie formaat,1,1-Simpel,0-Complex
encoding=Decoderen van database inhoud,3,Standaard (van huidige taal)
max_dbs=Maximum aantal databases en tabellen om te laten zien,0,5
max_text=Maximum overzicht lengte voor tekst velden,3,Ongelimiteerd
line2=Systeem configuratie,11
psql=Pad naar de psql opdracht,0
plib=Pad naar PostgreSQL gedeelde bibliotheken,3,Niet nodig
basedb=Initialiseer PostgreSQL database,0
start_cmd=Opdracht om PostgreSQL te starten,0
stop_cmd=Opdracht om PostgreSQL te stoppen,3,Kil proces
setup_cmd=Opdracht om PostgreSQL te initialiseren,3,Geen
pid_file=Pad naar postmaster PID file,8
hba_conf=Pad naar de host toegang config file,9,60,3, \t
host=PostgreSQL host om mee te verbinden,3,localhost
port=PostgreSQL poort om mee te verbinden,3,Standaard
dump_cmd=Pad naar de pg_dump opdracht,0
rstr_cmd=Pad naar pg_restore opdracht,0
repository=Standaard backup repository directory,3,Geen
+29
View File
@@ -0,0 +1,29 @@
line1=Konfigurerbare innstillinger,11
login=Administratorbrukernavn,0
pass=Administratorpassord,12
sameunix=Unix-bruker å koble til database som,1,1-Samme som Administrasjonsbruker,0-root
perpage=Antall rader som skal vises per side,0,5
style=Vis databaser og tabeller som,1,1-Liste,0-Ikoner,2-Kun navn
add_mode=Bruk grensesnitt med vertikal radredigering,1,1-Ja,0-Nei
blob_mode=Vis blob og tekstfelt som,1,0-Data i tabell,1-Lenker for nedlasting
nodbi=Vil du bruke DBI for tilkobling om tilgjengelig?,1,0-Ja,1-Nei
date_subs=Utfør <tt>strftime</tt> erstatning på destinasjoner for sikkerhetskopier?,1,1-Ja,0-Nei
webmin_subs=Utfør Webmin variabelerstatning på sikkerhetskopidestinasjoner,1,1-Ja,0-Nei
simple_sched=Format for tidsplan-velger,1,1-Enkel,0-Kompleks
encoding=Koding for databaseinnhold,3,Standard (fra gjeldende språk)
max_dbs=Maks. antall databaser og tabeller som skal vises,0,6
max_text=Maks. visningslengde for tekstfelt,3,Ubegrenset
line2=Systemkonfigurasjon,11
psql=Sti til psql kommando,0
plib=Sti til PostgreSQL delte biblioteker,3,Ikke nødvendig
basedb=Initiell PostgreSQL database,0
start_cmd=Kommando for å starte PostgreSQL,0
stop_cmd=Kommando for å stoppe PostgreSQL,3,Stopp prosess
setup_cmd=Kommando for å initalisere PostgreSQL,3,Ingen
pid_file=Sti til postmaster-PID-fil,0
hba_conf=Stier til vertstilgang-konfigfil,9,60,3,\t
host=PostgreSQL port å koble til,3,localhost
port=PostgreSQL å koble til,3,Standard
dump_cmd=Sti til pg_dump kommando,0
rstr_cmd=Sti til pg_restore kommando,0
repository=Standard oppbevaringskatalog for sikkerhetskopier,3,Ingen
+10
View File
@@ -0,0 +1,10 @@
login=Login administracyjny,0
pass=Hasło administracyjne,0
perpage=Ilość linii wyświetlanych na stronie,0
psql=Ścieżka do polecenia <tt>psql</tt>,0
plib=Ścieżka do bibliotek współdzielonych PostgreSQLa,3,Nie wymagana
basedb=Początkowa baza danych PostgreSQLa,0
start_cmd=Polecenie uruchamiające PostgreSQLa,0
stop_cmd=Polecenie zatrzymujące PostgreSQLa,3,Zabicie procesu
pid_file=Ścieżka z&nbsp;numerem PID procesu <tt>postmaster</tt>,0
host=Host PostgreSQLa&#44; z&nbsp;którym się łączyć,3,Localhost
+14
View File
@@ -0,0 +1,14 @@
line1=Настраиваемые параметры,11
login=Регистрация администратора,0
pass=Пароль администратора,12
perpage=Количество строк&#44; отображаемых на странице,0
nodbi=Использовать по возможности DBI для соединения?,1,0-Да,1-Нет
line2=Системные параметры,11
psql=Путь к команде psql,0
plib=Путь к разделяемым библиотекам PostgreSQL,3,Не нужен
basedb=Начальная база данных PostgreSQL,0
start_cmd=Команда для запуска PostgreSQL,0
stop_cmd=Команда для остановки PostgreSQL,3,Убить процесс
setup_cmd=Команда для инициализации PostgreSQL,3,Нет
pid_file=Путь к файлу PID postmaster,0
host=Узел PostgreSQL для соединений,3,localhost
+10
View File
@@ -0,0 +1,10 @@
login=Administratörskonto,0
pass=Administratörslösenord,0
perpage=Antal rader som ska visas per sida,0
psql=Sökväg till psql-kommando,0
plib=Sökväg till delade bibliotek för PostgreSQL,3,Behövs inte
basedb=PostgreSQL-databas att starta med,0
start_cmd=Kommando för att starta PostgreSQL,0
stop_cmd=Kommando för att stanna PostgreSQL,3,Döda processen
pid_file=Sökväg till postmaster-PID-fil,0
host=PostgreSQL-dator att koppla upp mot,3,Localhost
+27
View File
@@ -0,0 +1,27 @@
line1=Configurable options,11
login=Administration login,0
pass=Administration password,12
sameunix=Unix user to connect to database as,1,1-Same as Administration login,0-root
perpage=Number of rows to display per page,0
style=Show databases and tables as,1,1-List,0-Icons
add_mode=Use vertical row editing interface,1,1-Yes,0-No
blob_mode=Show blob and text fields as,1,0-Data in table,1-Links to download
nodbi=Use DBI to connect if available?,1,0-Yes,1-No
date_subs=Do <tt>strftime</tt> substitution of backup destinations?,1,1-Yes,0-No
simple_sched=Schedule selector format,1,1-Simple,0-Complex
encoding=Encoding for database content,3,Default (from current language)
max_dbs=Maximum number of databases and tables to display,0
max_text=Maximum display length for text fields,3,Unlimited
line2=System configuration,11
psql=Path to psql command,0
plib=Path to PostgreSQL shared libraries,3,Not needed
basedb=Initial PostgreSQL database,0
start_cmd=Command to start PostgreSQL,0
stop_cmd=Command to stop PostgreSQL,3,Kill process
setup_cmd=Command to initialize PostgreSQL,3,None
pid_file=Path to postmaster PID file,0
host=PostgreSQL host to connect to,3,localhost
port=PostgreSQL port to connect to,3,Default
dump_cmd=Path to pg_dump command,0
rstr_cmd=Path to pg_restore command,0
repository=Default backup repository directory,3,None
+14
View File
@@ -0,0 +1,14 @@
line1=Параметри&#44; що настроюються,11
login=Реєстрація адміністратора,0
pass=Пароль адміністратора,12
perpage=Кількість рядків&#44; відображуваних на сторінці,0
nodbi=Використовувати по можливості DBI для з'єднання?,1,0-да,1-немає
line2=Системні параметри,11
psql=Шлях до команди psql,0
plib=Шлях до поділюваних бібліотек PostgreSQL,3,Не потрібний
basedb=Початкова база даних PostgreSQL,0
start_cmd=Команда для запуску PostgreSQL,0
stop_cmd=Команда для зупинки PostgreSQL,3,Убити процес
setup_cmd=Команда для ініціалізації PostgreSQL,3,Немає
pid_file=Шлях до файлу PID postmaster,0
host=Вузол PostgreSQL для з'єднань,3,localhost
+9
View File
@@ -0,0 +1,9 @@
login=管理员登陆,0
pass=管理员口令,0
perpage=每页显示的行数,0
psql=命令的路径,0
plib=PostgreSQL 共享库路径,3,不需要
basedb=初始化 PostgreSQL 数据库,0
start_cmd=启动 PostgreSQL 的命令,0
stop_cmd=停止 PostgreSQL 的命令,3,关闭进程
pid_file=postmaster 进程标识文件的路径,0
+11
View File
@@ -0,0 +1,11 @@
login=管理員登入,0
pass=管理員密碼,0
perpage=每頁顯示的行數,0
nodbi=如果可以的話,使用DBI連線?,1,0-是,1-否
psql=psql命令路徑,0
plib=PostgreSQL 共用函式庫路徑,3,不需要
basedb=初始化 PostgreSQL 資料庫,0
start_cmd=啟動 PostgreSQL 的命令,0
stop_cmd=停止 PostgreSQL 的命令,3,關閉程序
pid_file=postmaster PID檔案路徑,0
host=PostgreSQL主機連線到,3,本地端
+8
View File
@@ -0,0 +1,8 @@
require 'postgresql-lib.pl';
sub cpan_recommended
{
return ( "DBI", "DBD::Pg" );
}
+38
View File
@@ -0,0 +1,38 @@
#!/usr/local/bin/perl
# create_table.cgi
# Create a new table
require './postgresql-lib.pl';
&ReadParse();
&can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'});
&error_setup($text{'table_err'});
$in{'name'} =~ /^\S+$/ || &error($text{'table_ename'});
for($i=0; defined($in{"field_$i"}); $i++) {
next if (!$in{"field_$i"});
$in{"field_$i"} =~ /^\S+$/ ||
&error(&text('table_efield', $in{"field_$i"}));
$in{"type_$i"} || &error(&text('table_etype', $in{"field_$i"}));
if ($in{"size_$i"}) {
if (&is_blob({ 'type' => $in{"type_$i"} })) {
&error(&text('table_eblob', $in{"field_$i"}));
}
$f = sprintf "\"%s\" %s(%s)",
$in{"field_$i"}, $in{"type_$i"}, $in{"size_$i"};
}
else {
$f = sprintf "\"%s\" %s", $in{"field_$i"}, $in{"type_$i"};
}
if ($in{"arr_$i"}) { $f .= "[]"; }
if (!$in{"null_$i"}) { $f .= " not null"; }
if ($in{"key_$i"}) { $f .= " primary key"; }
if ($in{"uniq_$i"}) { $f .= " unique"; }
push(@fields, $f);
}
@fields || &error($text{'table_enone'});
$qt = &quote_table($in{'name'});
$sql = "create table $qt (".join(",", @fields).")";
&execute_sql_logged($in{'db'}, $sql);
&webmin_log("create", "table", $in{'name'}, \%in);
&redirect("edit_dbase.cgi?db=$in{'db'}");
+83
View File
@@ -0,0 +1,83 @@
#!/usr/local/bin/perl
# Export the CSV
require './postgresql-lib.pl';
&ReadParse();
&error_setup($text{'csv_err'});
&can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'});
$access{'edonly'} && &error($text{'dbase_ecannot'});
# Validate inputs
if ($in{'dest'}) {
$in{'file'} =~ /^([a-z]:)?\/\S/ || &error($text{'csv_efile'});
$access{'backup'} || &error($text{'cvs_ebuser'});
}
if (!$in{'where_def'}) {
$in{'where'} =~ /\S/ || &error($text{'csv_ewhere'});
}
# Execute the SQL
@cols = split(/\0/, $in{'cols'});
@cols || &error($text{'csv_ecols'});
$cmd = "select ".join(",", @cols)." from ".&quote_table($in{'table'});
if (!$in{'where_def'}) {
$cmd .= " where ".$in{'where'};
}
$rv = &execute_sql($in{'db'}, $cmd);
# Open the destination
if (!$in{'dest'}) {
print "Content-type: text/plain\n\n";
$fh = STDOUT;
}
else {
# Open target file directly
&open_tempfile(OUT, ">$in{'file'}");
$fh = OUT;
}
# Send the data
if ($in{'headers'}) {
unshift(@{$rv->{'data'}}, $rv->{'titles'});
}
foreach $r (@{$rv->{'data'}}) {
if ($in{'format'} == 0) {
print $fh join(",", map { "\"".&quote_csv($_, "\"\n")."\"" } @$r);
}
elsif ($in{'format'} == 1) {
print $fh join(",", map { &quote_csv($_, ",\n") } @$r);
}
elsif ($in{'format'} == 2) {
print $fh join("\t", map { &quote_csv($_, "\t\n") } @$r);
}
print $fh "\n";
}
# All done .. tell the user
if ($in{'dest'}) {
&close_tempfile(OUT);
$desc = &text('table_header', "<tt>$in{'table'}</tt>", "<tt>$in{'db'}</tt>");
&ui_print_header($desc, $text{'csv_title'}, "", "csv");
@st = stat($in{'file'});
print &text('csv_done', "<tt>$in{'file'}</tt>",
&nice_size($st[7])),"<p>\n";
&ui_print_footer("edit_dbase.cgi?db=$in{'db'}", $text{'dbase_return'},
&get_databases_return_link($in{'db'}), $text{'index_return'});
}
sub quote_csv
{
local ($str, $q) = @_;
$str =~ s/\r//g;
foreach my $c (split(//, $q)) {
local $qc = $c eq "\"" ? "\\\"" :
$c eq "\n" ? "\\n" :
$c eq "," ? "\\," :
$c eq "\t" ? "\\t" : $c;
$str =~ s/\Q$c\E/$qc/g;
}
return $str;
}
+48
View File
@@ -0,0 +1,48 @@
#!/usr/local/bin/perl
# Show a form for exporting CSV data
require './postgresql-lib.pl';
&ReadParse();
&can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'});
$access{'edonly'} && &error($text{'dbase_ecannot'});
$desc = &text('table_header', "<tt>$in{'table'}</tt>", "<tt>$in{'db'}</tt>");
&ui_print_header($desc, $text{'csv_title'}, "", "csv");
print &ui_form_start("csv.cgi/$in{'table'}.csv", "post");
print &ui_hidden("db", $in{'db'}),"\n";
print &ui_hidden("table", $in{'table'}),"\n";
print &ui_table_start($text{'csv_header'}, undef, 2);
print &ui_table_row($text{'csv_format'},
&ui_radio("format", 0, [ [ 0, $text{'csv_format0'} ],
[ 1, $text{'csv_format1'} ],
[ 2, $text{'csv_format2'} ] ]));
print &ui_table_row($text{'csv_headers'},
&ui_yesno_radio("headers", 0));
if ($access{'backup'}) {
# Only allow saving to file if a backup user is configured
print &ui_table_row($text{'csv_dest'},
&ui_radio("dest", 0, [ [ 0, $text{'csv_browser'}."<br>" ],
[ 1, $text{'csv_file'} ] ])."\n".
&ui_textbox("file", undef, 40)." ".
&file_chooser_button("file"));
}
print &ui_table_row($text{'csv_where'},
&ui_opt_textbox("where", undef, 30, $text{'csv_all'}));
# Columns to select
@str = &table_structure($in{'db'}, $in{'table'});
@cols = map { $_->{'field'} } @str;
print &ui_table_row($text{'csv_cols'},
&ui_select("cols", \@cols,
[ map { [ $_->{'field'}, "$_->{'field'} - $_->{'type'}" ] } @str ], 5, 1));
print &ui_table_end();
print &ui_form_end([ [ "ok", $text{'csv_ok'} ] ]);
&ui_print_footer("edit_dbase.cgi?db=$in{'db'}", $text{'dbase_return'},
&get_databases_return_link($in{'db'}), $text{'index_return'});
+12
View File
@@ -0,0 +1,12 @@
dbs=*
create=1
delete=1
stop=1
users=1
backup=1
restore=1
tables=1
cmds=1
views=1
indexes=1
seqs=1
+22
View File
@@ -0,0 +1,22 @@
#!/usr/local/bin/perl
# Drop several fields from a table
require './postgresql-lib.pl';
&ReadParse();
&error_setup($text{'fdrop_err'});
&can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'});
# Validate inputs
@d = split(/\0/, $in{'d'});
@d || &error($text{'fdrop_enone'});
@desc = &table_structure($in{'db'}, $in{'table'});
@d < @desc || &error($text{'fdrop_eall'});
# Do the deed
foreach $d (@d) {
&execute_sql_logged($in{'db'},
"alter table ".&quote_table($in{'table'})." drop column \"$d\"");
}
&webmin_log("delete", "fields", scalar(@d), \%in);
&redirect("edit_table.cgi?db=$in{'db'}&table=".&urlize($in{'table'}));
+53
View File
@@ -0,0 +1,53 @@
#!/usr/local/bin/perl
# Reset privilege grants on some table/view/index
require './postgresql-lib.pl';
&ReadParse();
&error_setup($text{'dgrant_err'});
$access{'users'} || &error($text{'grant_ecannot'});
@d = split(/\0/, $in{'d'});
@d || &error($text{'dgrant_enone'});
foreach $d (@d) {
($db, $table, $ns, $type) = split(/\//, $d, -1);
$ss = &supports_schemas($db);
# Get old privileges
if ($ss) {
$s = &execute_sql($db, 'select relname, relacl, nspname from pg_class, pg_namespace where relnamespace = pg_namespace.oid and (relkind = \'r\' OR relkind = \'S\') and relname !~ \'^pg_\' order by relname');
$ss = 1;
}
else {
$s = &execute_sql($db, 'select relname, relacl, \'public\' from pg_class where (relkind = \'r\' OR relkind = \'S\') and relname !~ \'^pg_\' order by relname');
$ss = 0;
}
foreach $g (@{$s->{'data'}}) {
if ($g->[0] eq $table &&
$g->[2] eq $ns) {
$g->[1] =~ s/^\{//; $g->[1] =~ s/\}$//;
@grant = map { /^"(.*)=(.*)"$/ || /^(.*)=(.*)$/; [ $1, $2 ] }
split(/,/, $g->[1]);
}
}
# Revoke them
$qt = $ss ? &quote_table($ns.".".$table)
: &quote_table($table);
foreach $g (@grant) {
next if (!$g->[1]);
if ($g->[0] eq '') {
$who = "public";
}
elsif ($g->[0] =~ /group\s+(\S+)/) {
$who = "group \"$1\"";
}
else {
$who = "\"$g->[0]\"";
}
&execute_sql_logged($db, "revoke all on $qt from $who");
}
}
&webmin_log("degrant", undef, scalar(@d));
&redirect("list_grants.cgi?search=".&urlize($in{'search'}));
+21
View File
@@ -0,0 +1,21 @@
#!/usr/local/bin/perl
# Delete multiple PostgreSQL groups
require './postgresql-lib.pl';
&ReadParse();
$access{'users'} || &error($text{'user_ecannot'});
&error_setup($text{'group_derr'});
@d = split(/\0/, $in{'d'});
@d || &error($text{'group_enone'});
foreach $g (@d) {
if (&get_postgresql_version() >= 8.0) {
&execute_sql_logged($config{'basedb'}, "drop group $g");
}
else {
&execute_sql_logged($config{'basedb'}, "delete from pg_group where grosysid = $g");
}
}
&webmin_log("delete", "groups", scalar(@d));
&redirect("list_groups.cgi");
+19
View File
@@ -0,0 +1,19 @@
#!/usr/local/bin/perl
# Delete multiple PostgreSQL allowed hosts
require './postgresql-lib.pl';
&ReadParse();
$access{'users'} || &error($text{'host_ecannot'});
&error_setup($text{'host_derr'});
@d = split(/\0/, $in{'d'});
@d || &error($text{'host_enone'});
$v = &get_postgresql_version();
@hosts = &get_hba_config($v);
foreach $i (sort { $b <=> $a } @d) {
($host) = $hosts[$i];
&delete_hba($host, $v);
}
&webmin_log("delete", "hosts", scalar(@d));
&redirect("list_hosts.cgi");
+17
View File
@@ -0,0 +1,17 @@
#!/usr/local/bin/perl
# Delete multiple PostgreSQL users
require './postgresql-lib.pl';
&ReadParse();
$access{'users'} || &error($text{'user_ecannot'});
&error_setup($text{'user_derr'});
@d = split(/\0/, $in{'d'});
@d || &error($text{'user_enone'});
$main::disable_postgresql_escaping = 1;
foreach $u (@d) {
&execute_sql_logged($config{'basedb'}, "drop user \"$u\"");
}
&webmin_log("delete", "users", scalar(@d));
&redirect("list_users.cgi");
+21
View File
@@ -0,0 +1,21 @@
#!/usr/local/bin/perl
# down.cgi
# Move a hosts list entry down
require './postgresql-lib.pl';
&ReadParse();
$access{'users'} || &error($text{'host_ecannot'});
&lock_file($hba_conf_file);
@hosts = &get_hba_config();
$host = $hosts[$in{'idx'}];
&swap_hba($host, $hosts[$in{'idx'}+1]);
&unlock_file($hba_conf_file);
&restart_postgresql();
&webmin_log('move', 'hba',
$host->{'type'} eq 'local' ? 'local' :
$host->{'netmask'} eq '0.0.0.0' ? 'all' :
$host->{'netmask'} eq '255.255.255.255' ? $host->{'address'}:
"$host->{'address'}/$host->{'netmask'}", $host);
&redirect("list_hosts.cgi");
+1
View File
@@ -0,0 +1 @@
../mysql/download.cgi
+40
View File
@@ -0,0 +1,40 @@
#!/usr/local/bin/perl
# drop_dbase.cgi
# Drop an existing database
require './postgresql-lib.pl';
&ReadParse();
&error_setup($text{'ddrop_err'});
&can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'});
if ($in{'confirm'}) {
# Drop the database
&execute_sql_logged($config{'basedb'},
"drop database ".&quote_table($in{'db'}));
&delete_database_backup_job($in{'db'});
&webmin_log("delete", "db", $in{'db'});
&redirect("");
}
else {
# Ask the user if he is sure..
&ui_print_header(undef, $text{'ddrop_title'}, "");
@tables = &list_tables($in{'db'});
$rows = 0;
foreach $t (@tables) {
$d = &execute_sql($in{'db'},
"select count(*) from ".&quote_table($t));
$rows += $d->{'data'}->[0]->[0];
}
print "<center><b>",&text('ddrop_rusure', "<tt>$in{'db'}</tt>",
scalar(@tables), $rows),"\n";
print $text{'ddrop_mysql'},"\n" if ($in{'db'} eq $config{'basedb'});
print "</b><p>\n";
print "<form action=drop_dbase.cgi>\n";
print "<input type=hidden name=db value='$in{'db'}'>\n";
print "<input type=submit name=confirm value='$text{'ddrop_ok'}'>\n";
print "</form></center>\n";
&ui_print_footer("edit_dbase.cgi?db=$in{'db'}", $text{'dbase_return'},
"", $text{'index_return'});
}
+50
View File
@@ -0,0 +1,50 @@
#!/usr/local/bin/perl
# Drop all selected databases
require './postgresql-lib.pl';
&ReadParse();
&error_setup($text{'ddrops_err'});
@dbs = split(/\0/, $in{'d'});
foreach $db (@dbs) {
&can_edit_db($db) || &error(&text('ddrops_ecannot', $db));
}
if ($in{'confirm'}) {
# Drop the databases
foreach $db (@dbs) {
&execute_sql_logged($config{'basedb'}, "drop database \"$db\"");
&delete_database_backup_job($db);
}
&webmin_log("delete", "dbs", scalar(@dbs));
&redirect("");
}
else {
# Ask the user if he is sure..
&ui_print_header(undef, $text{'ddrop_title'}, "");
$rows = 0;
$tables = 0;
foreach $db (@dbs) {
next if (!&accepting_connections($db));
@tables = &list_tables($db);
foreach $t (@tables) {
$d = &execute_sql($db, "select count(*) from $t");
$rows += $d->{'data'}->[0]->[0];
$tables++;
}
}
print "<center><b>",&text('ddrops_rusure', scalar(@dbs),
$tables, $rows),"\n";
if (&indexof($config{'basedb'}, @dbs) >= 0) {
print $text{'ddrops_mysql'},"\n";
}
print "</b><p>\n";
print "<form action=drop_dbases.cgi>\n";
foreach $db (@dbs) {
print &ui_hidden("d", $db),"\n";
}
print "<input type=submit name=confirm value='$text{'ddrops_ok'}'>\n";
print "</form></center>\n";
&ui_print_footer("", $text{'index_return'});
}
+33
View File
@@ -0,0 +1,33 @@
#!/usr/local/bin/perl
# drop_table.cgi
# Delete an existing table
require './postgresql-lib.pl';
&ReadParse();
&can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'});
$qt = &quote_table($in{'table'});
if ($in{'confirm'}) {
# Drop the table
&error_setup($text{'tdrop_err'});
&execute_sql_logged($in{'db'}, "drop table $qt");
&webmin_log("delete", "table", $in{'table'}, \%in);
&redirect("edit_dbase.cgi?db=$in{'db'}");
}
else {
# Ask the user if he is sure..
&ui_print_header(undef, $text{'tdrop_title'}, "");
@tables = &list_tables($in{'db'});
$d = &execute_sql_safe($in{'db'}, "select count(*) from $qt");
$rows = $d->{'data'}->[0]->[0];
print "<center><b>", &text('tdrop_rusure', "<tt>$in{'table'}</tt>",
"<tt>$in{'db'}</tt>", $rows),"</b><p>\n";
print "<form action=drop_table.cgi>\n";
print "<input type=hidden name=db value='$in{'db'}'>\n";
print "<input type=hidden name=table value='$in{'table'}'>\n";
print "<input type=submit name=confirm value='$text{'tdrop_ok'}'>\n";
print "</form></center>\n";
&ui_print_footer("edit_table.cgi?db=$in{'db'}&table=$in{'table'}",
$text{'table_return'});
}
+61
View File
@@ -0,0 +1,61 @@
#!/usr/local/bin/perl
# Delete multiple tables
require './postgresql-lib.pl';
&ReadParse();
&can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'});
@tables = split(/\0/, $in{'d'});
@tables || &error($text{'tdrops_enone'});
if ($in{'confirm'}) {
# Drop the tables, views, sequences and indexes (tables last)
&error_setup($text{'tdrops_err'});
foreach $t (@tables) {
if ($t =~ /^\!(.*)$/) {
$qt = &quote_table($1);
&execute_sql_logged($in{'db'}, "drop index $qt");
}
elsif ($t =~ /^\*(.*)$/) {
$qt = &quote_table($1);
&execute_sql_logged($in{'db'}, "drop view $qt");
}
elsif ($t =~ /^\/(.*)$/) {
$qt = &quote_table($1);
&execute_sql_logged($in{'db'}, "drop sequence $qt");
}
else {
push(@rest, $t);
}
}
foreach $t (@rest) {
$qt = &quote_table($t);
&execute_sql_logged($in{'db'}, "drop table $qt");
}
&webmin_log("delete", "tables", scalar(@tables), \%in);
&redirect("edit_dbase.cgi?db=$in{'db'}");
}
else {
# Ask the user if he is sure..
&ui_print_header(undef, $text{'tdrops_title'}, "");
foreach $t (@tables) {
if ($t !~ /^\!/ && $t !~ /^\*/ && $t !~ /^\//) {
$qt = &quote_table($t);
$d = &execute_sql_safe($in{'db'}, "select count(*) from $qt");
$rows += $d->{'data'}->[0]->[0];
}
}
$msg = defined($rows) ? 'tdrops_rusure' : 'tdrops_rusure2';
print "<center><b>", &text($msg, scalar(@tables),
"<tt>$in{'db'}</tt>", $rows),"</b><p>\n";
print "<form action=drop_tables.cgi>\n";
print "<input type=hidden name=db value='$in{'db'}'>\n";
foreach $t (@tables) {
print &ui_hidden("d", $t),"\n";
}
print "<input type=submit name=confirm value='$text{'tdrops_ok'}'>\n";
print "</form></center>\n";
&ui_print_footer("edit_dbase.cgi?db=$in{'db'}",
$text{'dbase_return'});
}
+256
View File
@@ -0,0 +1,256 @@
#!/usr/local/bin/perl
# edit_dbase.cgi
# Show database tables
require './postgresql-lib.pl';
&ReadParse();
&can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'});
@titles = grep { &can_edit_db($_) } &list_databases();
$desc = "<tt>$in{'db'}</tt>";
if (@titles == 1 && $module_info{'usermin'}) {
# Single-database mode
&ui_print_header($desc, $text{'dbase_title'}, "", "edit_dbase", 1, 1);
$single = 1;
}
else {
&ui_print_header($desc, $text{'dbase_title'}, "", "edit_dbase");
}
# Is this database accepting connections?
if (!&accepting_connections($in{'db'})) {
print "$text{'dbase_noconn'}<p>\n";
&ui_print_footer("", $text{'index_return'});
exit;
}
@titles = &list_tables($in{'db'});
if (&supports_indexes() && $access{'indexes'}) {
@indexes = &list_indexes($in{'db'});
}
if (&supports_views() && $access{'views'}) {
@views = &list_views($in{'db'});
}
if (&supports_sequences() && $access{'seqs'}) {
@seqs = &list_sequences($in{'db'});
}
if ($in{'search'}) {
# Limit to those matching search
@titles = grep { /\Q$in{'search'}\E/i } @titles;
@indexes = grep { /\Q$in{'search'}\E/i } @indexes;
@views = grep { /\Q$in{'search'}\E/i } @views;
@seqs = grep { /\Q$in{'search'}\E/i } @seqs;
print "<table width=100%><tr>\n";
print "<td> <b>",&text('dbase_showing',
"<tt>$in{'search'}</tt>"),"</b></td>\n";
print "<td align=right><a href='edit_dbase.cgi?db=$in{'db'}'>",
"$text{'view_searchreset'}</a></td>\n";
print "</tr></table>\n";
}
if (@titles+@indexes+@views+@seqs > $max_dbs && !$in{'search'}) {
# Too many tables to show .. display search and jump forms
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'}),"<br>\n";
print &ui_form_end();
# Table selector
print &ui_form_start("edit_table.cgi");
print $text{'dbase_jump'},"\n";
print &ui_hidden("db", $in{'db'}),"\n";
print &ui_select("table", undef, [ map { [ $_ ] } @titles ],
1, 0, 0, 0, "onChange='form.submit()'"),"\n";
print &ui_submit($text{'index_jumpok'}),"<br>\n";
print &ui_form_end();
# View selector (if any)
if (@views) {
print &ui_form_start("edit_view.cgi");
print $text{'dbase_vjump'},"\n";
print &ui_hidden("db", $in{'db'}),"\n";
print &ui_select("view", undef, [ map { [ $_ ] } @views ],
1, 0, 0, 0, "onChange='form.submit()'"),"\n";
print &ui_submit($text{'index_jumpok'}),"<br>\n";
print &ui_form_end();
}
# Index selector (if any)
if (@indexes) {
print &ui_form_start("edit_index.cgi");
print $text{'dbase_ijump'},"\n";
print &ui_hidden("db", $in{'db'}),"\n";
print &ui_select("index", undef, [ map { [ $_ ] } @indexes ],
1, 0, 0, 0, "onChange='form.submit()'"),"\n";
print &ui_submit($text{'index_jumpok'}),"<br>\n";
print &ui_form_end();
}
# Sequence selector (if any)
if (@seqs) {
print &ui_form_start("edit_seq.cgi");
print $text{'dbase_sjump'},"\n";
print &ui_hidden("db", $in{'db'}),"\n";
print &ui_select("seq", undef, [ map { [ $_ ] } @seqs ],
1, 0, 0, 0, "onChange='form.submit()'"),"\n";
print &ui_submit($text{'index_jumpok'}),"<br>\n";
print &ui_form_end();
}
print "<p>\n";
}
elsif (@titles || @indexes || @views || @seqs) {
@icons = ( ( map { "images/table.gif" } @titles ),
( map { "images/index.gif" } @indexes ),
( map { "images/view.gif" } @views ),
( map { "images/seq.gif" } @seqs ),
);
@links = ( ( map { "edit_table.cgi?db=$in{'db'}&table=".&urlize($_) }
@titles ),
( map { "edit_index.cgi?db=$in{'db'}&index=".&urlize($_) }
@indexes ),
( map { "edit_view.cgi?db=$in{'db'}&view=".&urlize($_) }
@views ),
( map { "edit_seq.cgi?db=$in{'db'}&seq=".&urlize($_) }
@seqs ),
);
@descs = ( ( map { "" } @titles ),
( map { " ($text{'dbase_index'})" } @indexes),
( map { " ($text{'dbase_view'})" } @views),
( map { " ($text{'dbase_seq'})" } @seqs),
);
#&show_buttons();
@rowlinks = ( );
if ($access{'tables'}) {
print &ui_form_start("drop_tables.cgi");
print &ui_hidden("db", $in{'db'});
push(@rowlinks, &select_all_link("d", $form),
&select_invert_link("d", $form) );
@checks = ( ( @titles ),
( map { "!".$_ } @indexes ),
( map { "*".$_ } @views ),
( map { "/".$_ } @seqs ),
);
}
print &ui_links_row(\@rowlinks);
@dtitles = map { &html_escape($_) } ( @titles, @indexes, @views,@seqs );
if ($displayconfig{'style'} == 1) {
# Show as table
foreach $t (@titles) {
local $c;
eval {
local $main::error_must_die = 1;
$c = &execute_sql($in{'db'},
"select count(*) from ".quote_table($t));
};
$c ||= { 'data' => [ [ "-" ] ] };
push(@rows, $c->{'data'}->[0]->[0]);
local @str = &table_structure($in{'db'}, $t);
push(@fields, scalar(@str));
}
foreach $t (@indexes) {
$str = &index_structure($in{'db'}, $t);
push(@rows, "<i>$text{'dbase_index'}</i>");
push(@fields, scalar(@{$str->{'cols'}}));
}
foreach $t (@views) {
push(@rows, "<i>$text{'dbase_view'}</i>");
push(@fields, undef);
}
foreach $t (@seqs) {
$str = &sequence_structure($in{'db'}, $t);
push(@rows, "<i>$text{'dbase_seq'}</i>");
push(@fields, $str->{'last_value'});
}
&split_table([ "", $text{'dbase_table'}, $text{'dbase_rows'},
$text{'dbase_cols'} ],
\@checks, \@links, \@dtitles,
\@rows, \@fields) if (@titles);
}
elsif ($displayconfig{'style'} == 2) {
# Just show table names
@grid = ( );
@all = ( @titles, @indexes, @views, @seqs );
for(my $i=0; $i<@links; $i++) {
push(@grid, &ui_checkbox("d", $checks[$i]).
" <a href='$links[$i]'>".
&html_escape($all[$i])." ".$descs[$i]."</a>");
}
print &ui_grid_table(\@grid, 4, 100, undef, undef,
$text{'dbase_header'});
}
else {
# Show as icons
@checks = map { &ui_checkbox("d", $_) } @checks;
&icons_table(\@links, \@dtitles, \@icons, 5, undef, undef,undef,
@checks ? \@checks : undef);
}
print &ui_links_row(\@rowlinks);
if ($access{'tables'}) {
print &ui_form_end([ [ "delete", $text{'dbase_delete'} ] ]);
}
}
else {
print "<b>$text{'dbase_none'}</b> <p>\n";
}
&show_buttons();
if ($single) {
&ui_print_footer("/", $text{'index'});
}
else {
&ui_print_footer(&get_databases_return_link($in{'db'}), $text{'index_return'});
}
# Display buttons for adding tables, views and so on
sub show_buttons
{
print &ui_form_start("table_form.cgi");
print &ui_hidden("db", $in{'db'});
if ($access{'tables'}) {
# Add a new table
print &ui_submit($text{'dbase_add'})." ".$text{'dbase_fields'}.
" ".&ui_textbox("fields", 4, 4);
print "&nbsp;\n";
# Add a new view
if (&supports_views() && $access{'views'}) {
print &ui_submit($text{'dbase_vadd'}, 'addview');
print "&nbsp;\n";
}
# Add a new sequence
if (&supports_sequences() && $access{'seqs'}) {
print &ui_submit($text{'dbase_sadd'}, 'addseq');
print "&nbsp;\n";
}
}
# Drop database button
if ($access{'delete'}) {
print &ui_submit($text{'dbase_drop'}, 'dropdb');
print "&nbsp;\n";
}
# Backup and restore buttons
if (&get_postgresql_version() >= 7.2) {
if ($access{'backup'}) {
print &ui_submit($text{'dbase_bkup'}, 'backupdb');
print "&nbsp;\n";
}
if ($access{'restore'}) {
print &ui_submit($text{'dbase_rstr'}, 'restoredb');
print "&nbsp;\n";
}
}
# Execute SQL form
print &ui_submit($text{'dbase_exec'}, 'exec');
print "&nbsp;\n";
print &ui_form_end();
$form++;
}
+92
View File
@@ -0,0 +1,92 @@
#!/usr/local/bin/perl
# edit_field.cgi
# Display a form for editing an existing field or creating a new one
require './postgresql-lib.pl';
&ReadParse();
&can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'});
$desc = &text('field_in', "<tt>$in{'table'}</tt>", "<tt>$in{'db'}</tt>");
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'};
}
# Start of form block
print &ui_form_start("save_field.cgi", "post");
print &ui_hidden("db", $in{'db'});
print &ui_hidden("table", $in{'table'});
print &ui_hidden("new", $in{'type'});
print &ui_table_start($text{'field_header'}, undef, 2);
# Field name
print &ui_table_row($text{'field_name'},
&ui_textbox("field", $f->{'field'}, 40));
print &ui_hidden("old", $f->{'field'}) if (!$in{'type'});
# Field type
if ($type =~ /^(\S+)\((.*)\)/) {
$type = $1;
$size = $2;
}
print &ui_table_row($text{'field_type'}, $type);
print &ui_hidden("type", $type);
if ($type eq 'char' || $type eq 'varchar' || $type eq 'numeric' ||
$type eq 'bit') {
if ($in{'type'}) {
# Type has a size
print &ui_table_row($text{'field_size'},
&ui_textbox("size", $size, 15));
}
else {
# Type cannot be edited
print &ui_table_row($text{'field_size'}, $size);
}
}
if (!$in{'type'}) {
# Display if primary key
print &ui_table_row($text{'field_key'},
$f->{'key'} eq 'PRI' ? $text{'yes'} : $text{'no'});
}
if ($in{'type'}) {
# Ask if this is an array
print &ui_table_row($text{'field_arr'},
&ui_yesno_radio("arr", 0));
}
else {
# Display if array or not
print &ui_table_row($text{'field_arr'},
$f->{'arr'} eq 'YES' ? $text{'yes'} : $text{'no'});
}
if (!$in{'type'}) {
# Display nulls
print &ui_table_row($text{'field_null'},
$f->{'null'} eq 'YES' ? $text{'yes'} : $text{'no'});
}
print &ui_table_end();
if ($in{'type'}) {
print &ui_form_end([ [ undef, $text{'create'} ] ]);
}
else {
print &ui_form_end([ [ undef, $text{'save'} ],
&can_drop_fields() && @desc > 1 ?
( [ 'delete', $text{'delete'} ] ) : ( ) ]);
}
&ui_print_footer("edit_table.cgi?db=$in{'db'}&table=$in{'table'}",
$text{'table_return'},
"edit_dbase.cgi?db=$in{'db'}", $text{'dbase_return'},
&get_databases_return_link($in{'db'}), $text{'index_return'});
+88
View File
@@ -0,0 +1,88 @@
#!/usr/local/bin/perl
# edit_grant.cgi
# Display a form for editing or creating a grant
require './postgresql-lib.pl';
&ReadParse();
$access{'users'} || &error($text{'grant_ecannot'});
&ui_print_header(undef, $text{'grant_edit'}, "");
if (&supports_schemas($in{'db'})) {
$s = &execute_sql_safe($in{'db'}, 'select relname, relacl, nspname from pg_class, pg_namespace where relnamespace = pg_namespace.oid and (relkind = \'r\' OR relkind = \'S\') and relname !~ \'^pg_\' order by relname');
}
else {
$s = &execute_sql_safe($in{'db'}, 'select relname, relacl, \'public\' from pg_class where (relkind = \'r\' OR relkind = \'S\') and relname !~ \'^pg_\' order by relname');
}
foreach $g (@{$s->{'data'}}) {
if ($g->[0] eq $in{'table'} &&
$g->[2] eq $in{'ns'}) {
@grant = &extract_grants($g->[1]);
last;
}
}
# Start of form block
print &ui_form_start("save_grant.cgi", "post");
print &ui_hidden("db", $in{'db'});
print &ui_hidden("table", $in{'table'});
print &ui_hidden("ns", $in{'ns'});
print &ui_hidden("type", $in{'type'});
print &ui_hidden("search", $in{'search'});
print &ui_table_start($text{'grant_header'}, undef, 2);
# Database name
print &ui_table_row($text{'grant_db'}, "<tt>$in{'db'}</tt>");
# Schema name
print &ui_table_row($text{'grant_ns'}, "<tt>$in{'ns'}</tt>");
# Object name
print &ui_table_row($text{"grant_$in{'type'}"}, "<tt>$in{'table'}</tt>");
# Get users and groups for permissions table
($st) = &get_pg_shadow_table();
$u = &execute_sql_safe($config{'basedb'}, "select usename from $st");
@users = map { $_->[0] } @{$u->{'data'}};
$r = &execute_sql_safe($config{'basedb'}, "select groname from pg_group");
@groups = map { $_->[0] } @{$r->{'data'}};
# Table of users / groups and permissions
$i = 0;
@table = ( );
foreach $g (@grant, [ undef, undef ]) {
# User / group selector
local @row;
push(@row, &ui_select("user_$i",
!defined($g->[0]) ? "" :
$g->[0] eq '' ? "public" : $g->[0],
[ [ '', '&nbsp;' ],
[ 'public', $text{'grant_public'} ],
(map { [ "group $_", &text('grant_group', $_) ] }
@groups),
(@users) ], 1, 0, 1));
# Permissions
($acl = $g->[1]) =~ s/\/.*//g;
$cbs = "";
foreach $p ( [ 'SELECT', 'r' ], [ 'UPDATE', 'w' ],
[ 'INSERT', 'a' ], [ 'DELETE', 'd' ],
[ 'RULE', 'R' ], [ 'REFERENCES', 'x' ],
[ 'TRIGGER', 't' ] ) {
$cbs .= &ui_checkbox("what_$i", $p->[0], $p->[0],
$acl =~ /$p->[1]/)."\n";
}
push(@row, $cbs);
push(@table, \@row);
$i++;
}
print &ui_table_row($text{'grant_users'},
&ui_columns_table([ $text{'grant_user'}, $text{'grant_what'} ],
undef,
\@table));
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
&ui_print_footer("list_grants.cgi?search=".&urlize($in{'search'}),
$text{'grant_return'});
+64
View File
@@ -0,0 +1,64 @@
#!/usr/local/bin/perl
# edit_group.cgi
# Display a form for editing or creating a group
require './postgresql-lib.pl';
&ReadParse();
$access{'users'} || &error($text{'group_ecannot'});
if ($in{'new'}) {
&ui_print_header(undef, $text{'group_create'}, "");
}
else {
&ui_print_header(undef, $text{'group_edit'}, "");
$s = &execute_sql_safe($config{'basedb'}, "select * from pg_group ".
"where grosysid = '$in{'gid'}'");
@group = @{$s->{'data'}->[0]};
}
# Start of form block
print &ui_form_start("save_group.cgi");
print &ui_hidden("new", $in{'new'});
print &ui_table_start($text{'group_header'}, undef, 2);
# Group name
print &ui_table_row($text{'group_name'},
&ui_textbox("name", $group[0], 40));
# Group ID, dynamically selected for new ones
if ($in{'new'}) {
$s = &execute_sql($config{'basedb'},
"select max(grosysid) from pg_group");
$gid = $s->{'data'}->[0]->[0] + 1;
print &ui_table_row($text{'group_id'},
&ui_textbox("gid", $gid, 10));
}
else {
print &ui_table_row($text{'group_id'}, $group[1]);
print &ui_hidden("gid", $in{'gid'});
print &ui_hidden("oldname", $group[0]);
}
# Group members
($pg_table, $pg_cols) = &get_pg_shadow_table();
$s = &execute_sql($config{'basedb'}, "select $pg_cols from $pg_table");
%uidtouser = map { $_->[1], $_->[0] } @{$s->{'data'}};
if (!$in{'new'}) {
@mems = map { [ $_, $uidtouser{$_} || $_ ] } &split_array($group[2]);
}
@users = map { [ $_->[1], $_->[0] ] } @{$s->{'data'}};
print &ui_table_row($text{'group_mems'},
&ui_multi_select("mems", \@mems, \@users, 10, 1, 0,
$text{'group_memsopts'}, $text{'group_memsvals'}));
# End of the form buttons
print &ui_table_end();
if ($in{'new'}) {
print &ui_form_end([ [ undef, $text{'create'} ] ]);
}
else {
print &ui_form_end([ [ undef, $text{'save'} ],
[ 'delete', $text{'delete'} ] ]);
}
&ui_print_footer("list_groups.cgi", $text{'group_return'});
+134
View File
@@ -0,0 +1,134 @@
#!/usr/local/bin/perl
# edit_host.cgi
# Display a form for editing or creating an allowed host
require './postgresql-lib.pl';
&ReadParse();
$v = &get_postgresql_version();
if ($in{'new'}) {
$type = $in{'new'};
&ui_print_header(undef, $text{"host_create"}, "");
$host = { 'type' => $type, 'netmask' => '0.0.0.0',
'auth' => 'trust', 'db' => 'all' };
}
else {
@all = &get_hba_config($v);
$host = $all[$in{'idx'}];
$type = $host->{'type'};
&ui_print_header(undef, $text{"host_edit"}, "");
}
# Start of form block
print &ui_form_start("save_host.cgi", "post");
print &ui_hidden("idx", $in{'idx'});
print &ui_hidden("new", $in{'new'});
print &ui_table_start($text{'host_header'}, "width=100%", 2);
# Allowed IP address, network or connection type
$mode = $type eq 'local' ? 3 :
$host->{'cidr'} ne '' ? 4 :
$host->{'netmask'} eq '0.0.0.0' ? 0 :
$host->{'netmask'} eq '255.255.255.255' ? 1 : 2;
print &ui_table_row($text{'host_address'},
&ui_radio_table("addr_mode", $mode,
[ [ 3, $text{'host_local'} ],
[ 0, $text{'host_any'} ],
[ 1, $text{'host_single'},
&ui_textbox("host", $mode == 1 ? $host->{'address'} : '', 20) ],
[ 2, $text{'host_network'},
&ui_textbox("network", $mode == 2 ? $host->{'address'} : '', 20).
" ".$text{'host_netmask'}." ".
&ui_textbox("netmask", $mode == 2 ? $host->{'netmask'} : '', 20) ],
[ 4, $text{'host_network'},
&ui_textbox("network2", $mode == 4 ? $host->{'address'} : '', 20).
" ".$text{'host_cidr'}." ".
&ui_textbox("cidr", $mode == 4 ? $host->{'cidr'} : '', 5) ],
]));
# Force SSL connection?
if ($type eq "hostssl" || $v >= 7.3) {
print &ui_table_row($text{'host_ssl'},
&ui_yesno_radio("ssl", $type eq "hostssl"));
}
# Allowed databases
local $found = !$host->{'db'} || $host->{'db'} eq 'all' ||
$host->{'db'} eq 'sameuser' ||
$host->{'db'} eq 'samegroup';
@dbopts = ( [ "all", "&lt;$text{'host_all'}&gt;" ],
[ "sameuser", "&lt;$text{'host_same'}&gt;" ] );
if ($v >= 7.3) {
push(@dbopts, [ "samegroup", "&lt;$text{'host_gsame'}&gt;" ]);
}
eval {
$main::error_must_die = 1;
@dblist = &list_databases();
};
foreach $d (@dblist) {
push(@dbopts, $d);
$found++ if ($host->{'db'} eq $d);
}
push(@dbopts, [ '', $text{'host_other'} ]);
print &ui_table_row($text{'host_db'},
&ui_select("db", $found ? $host->{'db'} : '', \@dbopts)." ".
&ui_textbox("dbother",
$found ? "" : join(" ", split(/,/, $host->{'db'})), 40));
# Allowed users
if ($v >= 7.3) {
print &ui_table_row($text{'host_user'},
&ui_opt_textbox("user",
$host->{'user'} eq 'all' ? '' :
join(" ", split(/,/, $host->{'user'})),
40, $text{'host_uall'}, $text{'host_usel'}));
}
# Authentication type
foreach $a ('password',
($v < 8.4 ? ( 'crypt' ) : ( )),
($v >= 7.2 ? ( 'md5' ) : ( )),
'trust', 'reject', 'ident', 'krb4', 'krb5',
($v >= 7.3 ? ( 'pam' ) : ( )),
($v >= 9.0 ? ( 'peer' ) : ( )) ) {
$arg = $host->{'auth'} eq $a ? $host->{'arg'} : undef;
$extra = undef;
if ($a eq 'password') {
# Password file
$extra = &ui_checkbox("passwordarg", 1,
$text{'host_passwordarg'}, $arg)." ".
&ui_textbox("password", $arg, 40);
}
elsif ($a eq 'ident' || $a eq 'peer') {
# Ident server
$identarg = $arg eq "" ? 0 : $arg eq "sameuser" ? 2 : 1;
$extra = &ui_radio_table($a."arg", $identarg,
[ [ 0, $text{'host_identarg0'} ],
[ 2, $text{'host_identarg1'} ],
[ 1, $text{'host_identarg2'},
&ui_textbox($a,
$identarg == 1 ? $arg : "", 40)." ".
&file_chooser_button($a) ] ]);
}
elsif ($a eq 'pam') {
# PAM service
$extra = &ui_checkbox("pamarg", 1, $text{'host_pamarg'},
$arg)." ".
&ui_textbox("pam", $arg, 20);
}
push(@auths, [ $a, $text{"host_$a"}, $extra ]);
}
print &ui_table_row($text{'host_auth'},
&ui_radio_table("auth", $host->{'auth'}, \@auths));
# End of the form
print &ui_table_end();
if ($in{'new'}) {
print &ui_form_end([ [ undef, $text{'create'} ] ]);
}
else {
print &ui_form_end([ [ undef, $text{'save'} ],
[ 'delete', $text{'delete'} ] ]);
}
&ui_print_footer("list_hosts.cgi", $text{'host_return'});
+65
View File
@@ -0,0 +1,65 @@
#!/usr/local/bin/perl
# Show a form for creating or editing index on a table
require './postgresql-lib.pl';
&ReadParse();
&can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'});
$access{'edonly'} && &error($text{'dbase_ecannot'});
$access{'indexes'} || &error($text{'index_ecannot'});
if ($in{'index'}) {
# Editing an index
$str = &index_structure($in{'db'}, $in{'index'});
$table = $str->{'table'};
}
else {
# Creating an index
$table = $in{'table'};
}
$desc = &text('table_header', "<tt>$table</tt>", "<tt>$in{'db'}</tt>");
&ui_print_header($desc, $in{'index'} ? $text{'index_title2'}
: $text{'index_title1'}, "");
print &ui_form_start("save_index.cgi", "post");
print &ui_hidden("db", $in{'db'}),"\n";
print &ui_hidden("table", $table),"\n";
print &ui_hidden("old", $in{'index'}),"\n";
print &ui_table_start($text{'index_header1'}, undef, 2);
# Index name
print &ui_table_row($text{'index_name'},
&ui_textbox("name", $str->{'name'}, 20));
# Fields in index
@str = &table_structure($in{'db'}, $table);
@cols = map { $_->{'field'} } @str;
print &ui_table_row($text{'index_fields'},
&ui_select("cols", $str->{'cols'},
[ map { [ $_->{'field'}, "$_->{'field'} - $_->{'type'}" ] } @str ], 5, 1));
# Index type
print &ui_table_row($text{'index_type'},
&ui_select("type", $str->{'type'},
[ [ "unique", $text{'index_unique'} ],
[ "", $text{'index_nonunique'} ] ]));
# Access method
print &ui_table_row($text{'index_using'},
&ui_select("using", $str->{'using'} || "btree",
[ [ "btree", $text{'index_btree'} ],
[ "rtree", $text{'index_rtree'} ],
[ "hash", $text{'index_hash'} ],
[ "gist", $text{'index_gist'} ] ],
undef, undef, 1));
print &ui_table_end();
if ($in{'index'}) {
print &ui_form_end([ [ "save", $text{'save'} ],
[ "delete", $text{'delete'} ] ]);
}
else {
print &ui_form_end([ [ "create", $text{'create'} ] ]);
}
&ui_print_footer("edit_dbase.cgi?db=$in{'db'}", $text{'dbase_return'},
&get_databases_return_link($in{'db'}), $text{'index_return'});
+17
View File
@@ -0,0 +1,17 @@
#!/usr/local/bin/perl
# Show a config file for manual editing
require './postgresql-lib.pl';
$access{'users'} || &error($text{'host_ecannot'});
&ui_print_header(undef, $text{'manual_title'}, "");
# Config editor
print &ui_form_start("save_manual.cgi", "form-data");
print $form_hiddens;
print &ui_table_start(undef, undef, 2);
print &ui_table_row(undef,
&ui_textarea("data", &read_file_contents($hba_conf_file), 20, 80), 2);
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
&ui_print_footer("", $text{'index_return'});
+68
View File
@@ -0,0 +1,68 @@
#!/usr/local/bin/perl
# Show a form for creating or editing a sequence
require './postgresql-lib.pl';
&ReadParse();
&can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'});
$access{'edonly'} && &error($text{'dbase_ecannot'});
$access{'seqs'} || &error($text{'seq_ecannot'});
if ($in{'seq'}) {
# Editing a sequence
$str = &sequence_structure($in{'db'}, $in{'seq'});
}
else {
$str = { 'increment_by' => 1,
'last_value' => 1 };
}
$desc = "<tt>$in{'db'}</tt>";
&ui_print_header($desc, $in{'seq'} ? $text{'seq_title2'}
: $text{'seq_title1'}, "");
print &ui_form_start("save_seq.cgi", "post");
print &ui_hidden("db", $in{'db'}),"\n";
print &ui_hidden("old", $in{'seq'}),"\n";
print &ui_table_start($text{'seq_header1'}, undef, 2);
# Sequence name
print &ui_table_row($text{'seq_name'},
$in{'seq'} ? "<tt>$in{'seq'}</tt>"
: &ui_textbox("name", $str->{'name'}, 20));
# Current value
print &ui_table_row($text{'seq_last'},
$in{'seq'} && &supports_sequences() == 1 ?
&ui_opt_textbox("last", undef, 20, &text('seq_leave', $str->{'last_value'}))
: &ui_textbox("last", $str->{'last_value'}, 20));
# Min and max
print &ui_table_row($text{'seq_min'},
&ui_opt_textbox("min", $str->{'min_value'}, 20, $text{'seq_none'}));
print &ui_table_row($text{'seq_max'},
&ui_opt_textbox("max", $str->{'max_value'}, 20, $text{'seq_none'}));
# Increment
print &ui_table_row($text{'seq_inc'},
&ui_textbox("inc", $str->{'increment_by'}, 5));
# Values to cache
print &ui_table_row($text{'seq_cache'},
!$in{'seq'} ? &ui_opt_textbox("cache", undef, 5, $text{'default'})
: &ui_textbox("cache", $str->{'cache_value'}, 5));
# Wrap at end of cycle
print &ui_table_row($text{'seq_cycle'},
&ui_yesno_radio("cycle",
$str->{'is_cycled'} eq 't' || $str->{'is_cycled'} eq '1' ? 1 : 0));
print &ui_table_end();
if ($in{'seq'}) {
print &ui_form_end([ [ "save", $text{'save'} ],
[ "delete", $text{'delete'} ] ]);
}
else {
print &ui_form_end([ [ "create", $text{'create'} ] ]);
}
&ui_print_footer("edit_dbase.cgi?db=$in{'db'}", $text{'dbase_return'},
&get_databases_return_link($in{'db'}), $text{'index_return'});
+95
View File
@@ -0,0 +1,95 @@
#!/usr/local/bin/perl
# edit_table.cgi
# Display the structure of some table
require './postgresql-lib.pl';
&ReadParse();
&can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'});
$desc = &text('table_header', "<tt>$in{'table'}</tt>", "<tt>$in{'db'}</tt>");
&ui_print_header($desc, $text{'table_title'}, "", "edit_table");
# Table of fields
print &ui_form_start("delete_fields.cgi", "post");
print &ui_hidden("db", $in{'db'}),"\n";
print &ui_hidden("table", $in{'table'}),"\n";
@desc = &table_structure($in{'db'}, $in{'table'});
$candrop = &can_drop_fields() && @desc > 1;
@tds = $candrop ? ( "width=5" ) : ( );
@rowlinks = ( &select_all_link("d"), &select_invert_link("d") );
print &ui_links_row(\@rowlinks);
print &ui_columns_start([ $candrop ? ( "" ) : ( ),
$text{'table_field'},
$text{'table_type'},
$text{'table_arr'},
$text{'table_null'} ], 100, 0, \@tds);
$i = 0;
foreach $r (@desc) {
@cols = ( "<a href='edit_field.cgi?db=$in{'db'}&table=$in{'table'}&".
"idx=$i'>".&html_escape($r->{'field'})."</a>",
&html_escape($r->{'type'}),
$r->{'arr'} eq 'YES' ? $text{'yes'} : $text{'no'},
$r->{'null'} eq 'YES' ? $text{'yes'} : $text{'no'},
);
if ($candrop) {
print &ui_checked_columns_row(\@cols, \@tds, "d",$r->{'field'});
}
else {
print &ui_columns_row(\@cols, \@tds);
}
$i++;
}
print &ui_columns_end();
print &ui_links_row(\@rowlinks);
print &ui_form_end($candrop ? [ [ "delete", $text{'table_delete'} ] ] : [ ]);
$hiddens = &ui_hidden("db", $in{'db'}).&ui_hidden("table", $in{'table'});
print "<table><tr>\n";
# Add a field
print "<td>\n";
print &ui_form_start("edit_field.cgi");
print $hiddens;
print &ui_submit($text{'table_add'});
print &ui_select("type", undef, [ &list_types() ]);
print &ui_form_end();
print "</td>\n";
# View and edit data button
print "<td>\n";
print &ui_form_start("view_table.cgi", "form-data");
print $hiddens;
print &ui_submit($text{'table_data'});
print &ui_form_end();
print "</td>\n";
# CSV export button
print "<td>\n";
print &ui_form_start("csv_form.cgi");
print $hiddens;
print &ui_submit($text{'table_csv'});
print &ui_form_end();
print "</td>\n";
# Create index button
if (&supports_indexes() && $access{'indexes'}) {
print "<td>\n";
print &ui_form_start("edit_index.cgi");
print $hiddens;
print &ui_submit($text{'table_index'});
print &ui_form_end();
print "</td>\n";
}
# Drop table button
print "<td>\n";
print &ui_form_start("drop_table.cgi");
print $hiddens;
print &ui_submit($text{'table_drop'});
print &ui_form_end();
print "</td>\n";
print "</tr></table>\n";
&ui_print_footer("edit_dbase.cgi?db=$in{'db'}", $text{'dbase_return'},
&get_databases_return_link($in{'db'}), $text{'index_return'});
+90
View File
@@ -0,0 +1,90 @@
#!/usr/local/bin/perl
# edit_user.cgi
# Display a form for editing or creating a user
require './postgresql-lib.pl';
&ReadParse();
$access{'users'} || &error($text{'user_ecannot'});
if ($in{'new'}) {
&ui_print_header(undef, $text{'user_create'}, "");
}
else {
&ui_print_header(undef, $text{'user_edit'}, "");
($pg_table, $pg_cols) = &get_pg_shadow_table();
$s = &execute_sql_safe($config{'basedb'},
"select $pg_cols from $pg_table ".
"where usename = '$in{'user'}'");
@user = @{$s->{'data'}->[0]};
}
# Check if this is a Virtualmin-managed user
if (!$in{'new'} && &foreign_check("virtual-server")) {
&foreign_require("virtual-server");
my $d = &virtual_server::get_domain_by("postgres_user", $user[0],
"parent", "");
$d ||= &virtual_server::get_domain_by("user", $user[0],
"parent", "");
if ($d) {
print "<b>",&text('user_vwarning',
&virtual_server::show_domain_name($d)),"</b><p>\n";
}
}
# Start of the form
print &ui_form_start("save_user.cgi");
print &ui_hidden("new", $in{'new'});
print &ui_hidden("user", $in{'user'});
print &ui_table_start($text{'user_header'}, undef, 2);
# Username, not always editable
print &ui_table_row($text{'user_name'},
$in{'new'} || &get_postgresql_version() >= 7.4 ?
&ui_textbox("pname", $user[0], 40) :
$user[0]);
if ($in{'new'}) {
# For new users, can select empty or specific password
print &ui_table_row($text{'user_passwd'},
&ui_radio("ppass_def", 1,
[ [ 1, $text{'user_none'} ],
[ 0, $text{'user_setto'} ] ])." ".
&ui_password("ppass", undef, 20));
}
else {
# For existing users, can select empty, leave unchanged or
# specific password
print &ui_table_row($text{'user_passwd'},
&ui_radio("ppass_def", 2,
[ [ 2, $text{'user_nochange'} ],
[ 0, $text{'user_setto'} ] ])." ".
&ui_password("ppass", undef, 20));
}
# Can create databases?
print &ui_table_row($text{'user_db'},
&ui_yesno_radio("db", $user[2] =~ /t|1/));
if (&get_postgresql_version() < 9.5) {
# Create create other users?
print &ui_table_row($text{'user_other'},
&ui_yesno_radio("other", $user[4] =~ /t|1/));
}
# Valid until
$user[6] = '' if ($user[6] !~ /\S/);
print &ui_table_row($text{'user_until'},
$user[6] ? &ui_textbox("until", $user[6], 40) :
&ui_opt_textbox("until", $user[6], 40, $text{'user_forever'}));
# End of form and buttons
print &ui_table_end();
if ($in{'new'}) {
print &ui_form_end([ [ undef, $text{'create'} ] ]);
}
else {
print &ui_form_end([ [ undef, $text{'save'} ],
[ 'delete', $text{'delete'} ] ]);
}
&ui_print_footer("list_users.cgi", $text{'user_return'});
+50
View File
@@ -0,0 +1,50 @@
#!/usr/local/bin/perl
# Show a form for creating or editing a view
require './postgresql-lib.pl';
&ReadParse();
&can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'});
$access{'edonly'} && &error($text{'dbase_ecannot'});
$access{'views'} || &error($text{'view_ecannot'});
if ($in{'view'}) {
# Editing an index
$str = &view_structure($in{'db'}, $in{'view'});
}
$desc = "<tt>$in{'db'}</tt>";
&ui_print_header($desc, $in{'view'} ? $text{'view_title2'}
: $text{'view_title1'}, "");
print &ui_form_start("save_view.cgi", "post");
print &ui_hidden("db", $in{'db'}),"\n";
print &ui_hidden("old", $in{'view'}),"\n";
print &ui_table_start($text{'view_header1'}, undef, 2, [ "width=30%" ]);
# View name
print &ui_table_row($text{'view_name'},
&ui_textbox("name", $str->{'name'}, 20));
# Column names
if (!$in{'view'}) {
print &ui_table_row($text{'view_cols'},
&ui_radio("cols_set", 0, [ [ 0, $text{'view_auto'} ],
[ 1, $text{'view_below'} ] ]).
"<br>\n".
&ui_textarea("cols", undef, 3, 20));
}
# Selection query
print &ui_table_row($text{'view_query'},
&ui_textarea("query", $str->{'query'}, 5, 60, "on"));
print &ui_table_end();
if ($in{'view'}) {
print &ui_form_end([ [ "save", $text{'save'} ],
[ "delete", $text{'delete'} ] ]);
}
else {
print &ui_form_end([ [ "create", $text{'create'} ] ]);
}
&ui_print_footer("edit_dbase.cgi?db=$in{'db'}", $text{'dbase_return'},
&get_databases_return_link($in{'db'}), $text{'index_return'});
+57
View File
@@ -0,0 +1,57 @@
#!/usr/local/bin/perl
# exec.cgi
# Execute some SQL command and display output
require './postgresql-lib.pl';
&ReadParseMime();
&can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'});
&error_setup($text{'exec_err'});
if ($in{'clear'}) {
# Delete the history file
&unlink_file($commands_file.".".$in{'db'});
&redirect("exec_form.cgi?db=$in{'db'}");
}
else {
# Run some SQL
$in{'cmd'} = join(" ", split(/[\r\n]+/, $in{'cmd'}));
$cmd = $in{'cmd'} ? $in{'cmd'} : $in{'old'};
$d = &execute_sql_logged($in{'db'}, $cmd);
&ui_print_header(undef, $text{'exec_title'}, "");
print &text('exec_out', "<tt>".&html_escape($cmd)."</tt>"),"<p>\n";
@data = @{$d->{'data'}};
if (@data) {
print &ui_columns_start($d->{'titles'});
foreach $r (@data) {
@prow = map { ref($_) eq 'ARRAY' ? join(", ", @$_)
: $_ } @$r;
print &ui_columns_row([ map { &html_escape($_) } @prow ]);
}
print &ui_columns_end();
}
else {
print "<b>$text{'exec_none'}</b> <p>\n";
}
# Add to the old commands file
open(OLD, "<$commands_file.$in{'db'}");
while(<OLD>) {
s/\r|\n//g;
$already++ if ($_ eq $in{'cmd'});
}
close(OLD);
if (!$already && $in{'cmd'} =~ /\S/) {
&open_lock_tempfile(OLD, ">>$commands_file.$in{'db'}");
&print_tempfile(OLD, "$in{'cmd'}\n");
&close_tempfile(OLD);
chmod(0700, "$commands_file.$in{'db'}");
}
&webmin_log("exec", undef, $in{'db'}, \%in);
}
&ui_print_footer("exec_form.cgi?db=$in{'db'}", $text{'exec_return'},
"edit_dbase.cgi?db=$in{'db'}", $text{'dbase_return'},
"", $text{'index_return'});
+70
View File
@@ -0,0 +1,70 @@
#!/usr/local/bin/perl
# exec_files.cgi
# Execute some SQL commands from a file and display the output
require './postgresql-lib.pl';
&ReadParseMime();
&can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'});
&error_setup($text{'exec_err'});
if ($in{'mode'}) {
# From uploaded file
$in{'upload'} || &error($text{'exec_eupload'});
$file = &transname();
open(TEMP, ">$file");
print TEMP $in{'upload'};
close(TEMP);
&set_postgresql_command_file_permissions($file) ||
&error($text{'exec_efile'});
&ui_print_header(undef, $text{'exec_title'}, "");
print "$text{'exec_uploadout'}<p>\n";
$need_unlink = 1;
}
else {
# From local file
$file = &transname();
&copy_file_under_global_acl($in{'file'}, $file, undef,
&postgresql_command_unix_user()) ||
&error($text{'exec_efile'});
&ui_print_header(undef, $text{'exec_title'}, "");
print &text('exec_fileout', "<tt>$in{'file'}</tt>"),"<p>\n";
$need_unlink = 1;
}
# Un-compress file if needed
$cf = &compression_format($file);
$cmd = $cf == 1 ? "gunzip -c" :
$cf == 2 ? "uncompress -C" :
$cf == 3 ? "bunzip2 -c" : undef;
if ($cmd) {
($prog, @args) = split(/\s+/, $cmd);
&has_command($prog) ||
&error(&text('exec_ecompress', "<tt>$prog</tt>"));
$tempfile = &transname();
$out = &backquote_command(
"$cmd <".quotemeta($file)." 2>&1 >".quotemeta($tempfile));
if ($?) {
&error(&text('exec_ecompress2', "<pre>$out</pre>"));
}
&set_postgresql_command_file_permissions($tempfile) ||
&error($text{'exec_efile'});
unlink($file) if ($need_unlink);
$file = $tempfile;
$need_unlink = 1;
}
# Call the psql program on the file
print "<pre>";
($ex, $out) = &execute_sql_file($in{'db'}, $file);
print &html_escape($out);
$got++ if ($out =~ /\S/);
print "<i>$text{'exec_noout'}</i>\n" if (!$got);
print "</pre>\n";
&webmin_log("execfile", undef, $in{'db'}, { 'mode' => $in{'mode'},
'file' => $in{'file'} });
unlink($file) if ($need_unlink);
&ui_print_footer("exec_form.cgi?db=$in{'db'}&mode=file", $text{'exec_return'},
"edit_dbase.cgi?db=$in{'db'}", $text{'dbase_return'},
"", $text{'index_return'});
+96
View File
@@ -0,0 +1,96 @@
#!/usr/local/bin/perl
# exec_form.cgi
# Display a form for executing SQL in some database
require './postgresql-lib.pl';
&ReadParse();
&can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'});
&ui_print_header(undef, $text{'exec_title'}, "", "exec_form");
# Generate tabs for sections
$prog = "exec_form.cgi?db=".&urlize($in{'db'})."&mode=";
@tabs = ( [ "exec", $text{'exec_tabexec'}, $prog."exec" ],
[ "file", $text{'exec_tabfile'}, $prog."file" ],
[ "import", $text{'exec_tabimport'}, $prog."import" ] );
print &ui_tabs_start(\@tabs, "mode", $in{'mode'} || "exec", 1);
# Get recently run commands
open(OLD, "<$commands_file.$in{'db'}");
while(<OLD>) {
s/\r|\n//g;
push(@old, $_);
}
close(OLD);
# Form for executing an SQL command
print &ui_tabs_start_tab("mode", "exec");
print &text('exec_header', "<tt>$in{'db'}</tt>"),"<p>\n";
print &ui_form_start("exec.cgi", "form-data");
print &ui_hidden("db", $in{'db'});
print &ui_textarea("cmd", undef, 10, 70),"<br>\n";
if (@old) {
print $text{'exec_old'}," ",
&ui_select("old", undef,
[ map { [ $_, &html_escape(length($_) > 80 ?
substr($_, 0, 80).".." : $_) ] } @old ]),"\n",
&ui_button($text{'exec_edit'}, "movecmd", undef,
"onClick='cmd.value = old.options[old.selectedIndex].value'"),
" ",&ui_submit($text{'exec_clear'}, "clear"),"<br>\n";
}
print &ui_form_end([ [ undef, $text{'exec_exec'} ] ]);
print &ui_tabs_end_tab();
# Form for executing commands from a file
print &ui_tabs_start_tab("mode", "file");
print &text('exec_header2', "<tt>$in{'db'}</tt>"),"<p>\n";
print &ui_form_start("exec_file.cgi", "form-data");
print &ui_hidden("db", $in{'db'});
print &ui_radio_table("mode", 0, [
[ 0, $text{'exec_file'}, &ui_textbox("file", undef, 50)." ".
&file_chooser_button("file", 0, 1) ],
[ 1, $text{'exec_upload'}, &ui_upload("upload", 50) ] ]);
print &ui_form_end([ [ undef, $text{'exec_exec'} ] ]);
print &ui_tabs_end_tab();
# Form for loading a CSV or tab-separated file
print &ui_tabs_start_tab("mode", "import");
print &text('exec_header3', "<tt>$in{'db'}</tt>"),"<br>",
$text{'exec_header4'},"<p>\n";
print &ui_form_start("import.cgi", "form-data");
print &ui_hidden("db", $in{'db'});
print &ui_table_start(undef, undef, 2);
# Source for CSV file
print &ui_table_row($text{'exec_importmode'},
&ui_radio_table("mode", 0, [
[ 0, $text{'exec_file'}, &ui_textbox("file", undef, 50)." ".
&file_chooser_button("file", 0, 1) ],
[ 1, $text{'exec_upload'}, &ui_upload("upload", 50) ] ]));
# Table to import into
print &ui_table_row($text{'exec_import'},
&ui_select("table", undef, [ &list_tables($in{'db'}) ]));
# Delete existing rows?
print &ui_table_row($text{'exec_delete'},
&ui_yesno_radio("delete", 0));
# Ignore dupes?
print &ui_table_row($text{'exec_ignore'},
&ui_yesno_radio("ignore", 0));
# CSV format
print &ui_table_row($text{'exec_format'},
&ui_radio("format", 2, [ [ 0, $text{'csv_format0'} ],
[ 1, $text{'csv_format1'} ],
[ 2, $text{'csv_format2'} ] ]));
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'exec_exec'} ] ]);
print &ui_tabs_end_tab();
print &ui_tabs_end(1);
&ui_print_footer("edit_dbase.cgi?db=$in{'db'}", $text{'dbase_return'},
"", $text{'index_return'});
+1
View File
@@ -0,0 +1 @@
<header> تعليمات نموذج النسخ الاحتياطي Webmin PostgreSQL </header><p / style=";text-align:right;direction:rtl"> يجب أن يكون معرف مستخدم نظام PostgreSQL لديه إذن الكتابة على أي دليل يستخدم كهدف لأية نسخة احتياطية. <p / style=";text-align:right;direction:rtl"> بغض النظر عن تنسيق ملف النسخ الاحتياطي المحدد ، سيتم نسخ كل قاعدة بيانات احتياطيًا في ملف واحد يحتوي على النموذج: &lt;name&gt;. &lt;extension&gt; حيث سيكون &lt;extension&gt; واحدًا من &#39;post&#39; أو &#39;tar&#39; أو &#39;sql&#39;. <p / style=";text-align:right;direction:rtl"> يتم تشغيل الأوامر المحددة للتشغيل قبل وبعد النسخ الاحتياطي قبل وبعد <em><strong>كل</strong></em> قاعدة بيانات <strong>وليس</strong> مرة واحدة فقط قبل ومرة واحدة بعد المجموعة بأكملها. <footer>
+1
View File
@@ -0,0 +1 @@
<header> Помощ за формуляра за резервно копие на Webmin PostgreSQL </header><p> Потребителският идентификатор на PostgreSQL трябва да има разрешение за запис във всяка директория, използвана като цел за всяко архивиране. <p> Независимо от избрания формат за архивиране на файлове, всяка база данни ще бъде архивирана в един файл с формата: &lt;име&gt;. <p> Командите, определени за стартиране преди и след архивиране, се задействат преди и след <em><strong>всяка</strong></em> база данни, а <strong>НЕ</strong> само веднъж преди и веднъж след целия набор. <footer>
+19
View File
@@ -0,0 +1,19 @@
<header>Ajuda del Formulari de Còpia PostgreSQL de Webmin</header>
<p>
L'id d'usuari del sistema PostgreSQL ha de tenir permisos d'escriptura
a qualsevol directori utilitzat per qualsevol còpia.
<p>
Independentment del format de còpia seleccionat, cada base de dades
es copiarà en un sol fitxer de la forma:
&lt;nom&gt;.&lt;extensio&gt; on &lt;extensio&gt; serà un de
'post', 'tar', o 'sql'.
<p>
Les ordres especificades per executar abans i després de la còpia
s'executen abans i després de <em><strong>cada</strong></em> base de dades
i <strong>NO</strong> només un cop abans i un cop després de tot el conjunt.
<footer>
+1
View File
@@ -0,0 +1 @@
<header> Nápověda pro zálohovací formulář Webmin PostgreSQL </header><p> ID uživatele systému PostgreSQL musí mít oprávnění k zápisu do jakéhokoli adresáře použitého jako cíl jakékoli zálohy. <p> Bez ohledu na vybraný formát záložního souboru bude každá databáze zálohována do jediného souboru, který má tvar: &lt;jméno&gt;. &lt;Rozšíření&gt;, kde &lt;rozšíření&gt; bude jedno z &#39;post&#39;, &#39;dehtu&#39; nebo &#39;sql&#39;. <p> Příkazy určené ke spuštění před a po zálohování jsou spouštěny před a za <em><strong>každou</strong></em> databází a <strong>NE</strong> pouze jednou před a jednou za celou sadou. <footer>
+1
View File
@@ -0,0 +1 @@
<header> Webmin PostgreSQL Backup Form Hjælp </header><p> PostgreSQL-system-bruger-id skal have skrivetilladelse på ethvert bibliotek, der bruges som mål for enhver sikkerhedskopi. <p> Uanset hvilket valgt backup-filformat, sikkerhedskopieres hver database i en enkelt fil med formularen: &lt;navn&gt;. &lt;Udvidelse&gt; hvor &lt;udvidelse&gt; vil være en af &#39;post&#39;, &#39;tar&#39; eller &#39;sql&#39;. <p> Kommandoer, der er specificeret til at køre før og efter sikkerhedskopiering, udløses før og efter <em><strong>hver</strong></em> database og <strong>IKKE</strong> bare en gang før og en gang efter hele sættet. <footer>
+1
View File
@@ -0,0 +1 @@
<header>Webmin PostgreSQL Backup Form Hilfe</header><p>Die PostgreSQL-Systembenutzer-ID muss über Schreibberechtigungen für jedes Verzeichnis verfügen, das als Ziel für ein Backup verwendet wird.</p><p>Unabhängig vom ausgewählten Backup-Dateiformat wird jede Datenbank in eine einzelne Datei gesichert, die das Format &lt;name&gt;.&lt;extension&gt; hat, wobei &lt;extension&gt; eines der Formate 'post', 'tar' oder 'sql' ist.</p><p>Die Befehle, die vor und nach dem Backup ausgeführt werden, werden <em><strong>vor</strong></em> und <em><strong>nach</strong></em> <strong>jedem</strong> Backup der Datenbanken ausgelöst und <strong>nicht</strong> nur einmal vor und einmal nach dem gesamten Satz.</p><footer>

Some files were not shown because too many files have changed in this diff Show More