mirror of
https://github.com/webmin/webmin.git
synced 2026-02-05 07:02:14 +00:00
Compare commits
35 Commits
dev/server
...
dev/phpini
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cae06a79a0 | ||
|
|
b2f4dd4fe8 | ||
|
|
0c575c5266 | ||
|
|
acc47ce0e7 | ||
|
|
81e5120fc4 | ||
|
|
281cb21cce | ||
|
|
ad084a1ceb | ||
|
|
4b436c2f16 | ||
|
|
51e672b87d | ||
|
|
f21650971e | ||
|
|
eccb7a169c | ||
|
|
77c9d1fa9c | ||
|
|
fb0b6b4044 | ||
|
|
deb172ca82 | ||
|
|
f7dc0add11 | ||
|
|
915781d381 | ||
|
|
dca48f4f00 | ||
|
|
8e47199147 | ||
|
|
437bdd2528 | ||
|
|
bedb091e56 | ||
|
|
323f0cc043 | ||
|
|
df7bf3af4a | ||
|
|
94d3727b41 | ||
|
|
510c7153e4 | ||
|
|
389d061972 | ||
|
|
ad5e279231 | ||
|
|
f9bccb3853 | ||
|
|
3c21733d57 | ||
|
|
0d45d61edc | ||
|
|
eb79f4c169 | ||
|
|
48eb29e547 | ||
|
|
3fe5aa8887 | ||
|
|
50e058d2b6 | ||
|
|
2d85a2951c | ||
|
|
21e4debf24 |
File diff suppressed because one or more lines are too long
@@ -495,11 +495,10 @@ return $name.
|
||||
# Increase the serial number in some SOA record by 1
|
||||
sub bump_soa_record
|
||||
{
|
||||
my($r, $v, $vals);
|
||||
for(my $i=0; $i<@{$_[1]}; $i++) {
|
||||
$r = $_[1]->[$i];
|
||||
my ($file, $recs) = @_;
|
||||
foreach my $r (@$recs) {
|
||||
if ($r->{'type'} eq "SOA") {
|
||||
$v = $r->{'values'};
|
||||
my $v = $r->{'values'};
|
||||
# already set serial if no acl allow it to update or update
|
||||
# is disabled
|
||||
my $serial = $v->[2];
|
||||
@@ -507,8 +506,8 @@ for(my $i=0; $i<@{$_[1]}; $i++) {
|
||||
# automatically handle serial numbers ?
|
||||
$serial = &compute_serial($v->[2]);
|
||||
}
|
||||
$vals = "$v->[0] $v->[1] (\n\t\t\t$serial\n\t\t\t$v->[3]\n".
|
||||
"\t\t\t$v->[4]\n\t\t\t$v->[5]\n\t\t\t$v->[6] )";
|
||||
my $vals = "$v->[0] $v->[1] (\n\t\t\t$serial\n\t\t\t$v->[3]\n".
|
||||
"\t\t\t$v->[4]\n\t\t\t$v->[5]\n\t\t\t$v->[6] )";
|
||||
&modify_record($r->{'file'}, $r, $r->{'realname'}, $r->{'ttl'},
|
||||
$r->{'class'}, $r->{'type'}, $vals);
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ table { border-width: 0px;
|
||||
}
|
||||
table.formsection, table.ui_table, table.loginform {
|
||||
border-collapse: separate;
|
||||
*border-collapse: collapse;
|
||||
border-collapse: collapse;
|
||||
border: 1px solid #FFFFFF;
|
||||
width: 100%;
|
||||
}
|
||||
@@ -216,6 +216,20 @@ br[data-x-br] {
|
||||
opacity: .8;
|
||||
}
|
||||
|
||||
.ui_text_wrap {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.ui_link_help {
|
||||
display: initial;
|
||||
float: right;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
td:not(:hover) .ui_link_help {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
[data-tooltip][aria-label] {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
@@ -261,7 +261,7 @@ if ($rpmdepends && defined($minfo{'depends'})) {
|
||||
close($fh);
|
||||
@mod_def_list = split(/\s+/, $mod_def_list);
|
||||
if ( grep( /^$dmod$/, @mod_def_list ) ) {
|
||||
next;
|
||||
next;
|
||||
}
|
||||
}
|
||||
push(@rdeps, $dwebmin ? ("webmin", ">=", $dwebmin) :
|
||||
|
||||
@@ -1 +1 @@
|
||||
cron dfsadmin exports inetd init mount samba useradmin fdisk format proc webmin quota software pap acl apache lpadmin bind8 sendmail squid bsdexports hpuxexports net dhcpd custom servers time wuftpd syslog mysql man inittab raid postfix webminlog postgresql xinetd status cpan pam nis shell grub fetchmail passwd at proftpd sshd heartbeat cluster-software cluster-useradmin qmailadmin mon jabber stunnel usermin fsdump lvm procmail cluster-webmin firewall sgiexports vgetty openslp webalizer shorewall adsl-client updown ppp-client pptp-server pptp-client ipsec ldap-useradmin change-user cluster-shell cluster-cron spam htaccess-htpasswd logrotate cluster-passwd mailboxes ipfw sarg bandwidth cluster-copy backup-config smart-status idmapd krb5 smf ipfilter rbac tunnel zones cluster-usermin dovecot syslog-ng mailcap ldap-client phpini filter bacula-backup ldap-server exim tcpwrappers package-updates system-status webmincron shorewall6 iscsi-server iscsi-client gray-theme iscsi-target iscsi-tgtd bsdfdisk fail2ban authentic-theme firewalld filemin firewall6 logviewer xterm
|
||||
cron dfsadmin exports inetd init mount samba useradmin fdisk format proc webmin quota software pap acl apache lpadmin bind8 sendmail squid bsdexports hpuxexports net dhcpd custom servers time syslog mysql man inittab raid postfix webminlog postgresql xinetd status cpan pam nis shell fetchmail passwd at proftpd sshd heartbeat cluster-software cluster-useradmin qmailadmin stunnel usermin fsdump lvm procmail cluster-webmin firewall sgiexports openslp webalizer shorewall adsl-client updown ppp-client pptp-server pptp-client ipsec ldap-useradmin change-user cluster-shell cluster-cron spam htaccess-htpasswd logrotate cluster-passwd mailboxes ipfw sarg bandwidth cluster-copy backup-config smart-status idmapd krb5 smf ipfilter rbac tunnel zones cluster-usermin dovecot syslog-ng mailcap ldap-client phpini filter bacula-backup ldap-server exim tcpwrappers package-updates system-status webmincron shorewall6 iscsi-server iscsi-client gray-theme iscsi-target iscsi-tgtd bsdfdisk fail2ban authentic-theme firewalld filemin firewall6 logviewer xterm
|
||||
@@ -12,6 +12,7 @@ encoding=Encoding for database content,3,Default (from current language)
|
||||
max_dbs=Maximum number of databases and tables, indexes and views to display,0,5
|
||||
max_text=Maximum display length for text fields,3,Unlimited
|
||||
charset=Character set for MySQL data,15,charset
|
||||
auth_plugin=Force use of authentication plugin,3,System default
|
||||
line2=System configuration,11
|
||||
mysqlshow=Path to mysqlshow command,0
|
||||
mysqladmin=Path to mysqladmin command,0
|
||||
|
||||
@@ -1620,13 +1620,18 @@ return $sql;
|
||||
sub get_mysql_plugin
|
||||
{
|
||||
my ($query) = @_;
|
||||
my @plugin = &execute_sql($master_db,
|
||||
"show variables LIKE '%default_authentication_plugin%'");
|
||||
my $plugin = $plugin[0]->{'data'}->[0]->[1];
|
||||
if ($plugin && $query) {
|
||||
$plugin = " with $plugin ";
|
||||
if ($config{'auth_plugin'}) {
|
||||
return " with $config{'auth_plugin'}";
|
||||
}
|
||||
else {
|
||||
my @plugin = &execute_sql($master_db,
|
||||
"show variables LIKE '%default_authentication_plugin%'");
|
||||
my $plugin = $plugin[0]->{'data'}->[0]->[1];
|
||||
if ($plugin && $query) {
|
||||
$plugin = " with $plugin ";
|
||||
}
|
||||
return $plugin;
|
||||
}
|
||||
return $plugin;
|
||||
}
|
||||
|
||||
# perms_column_to_privilege_map(col)
|
||||
|
||||
@@ -161,9 +161,9 @@ if ($a && $a->{'virtual'} eq "" && !$in{'new'}) {
|
||||
}
|
||||
}
|
||||
print &ui_table_row($text{'ifcs_virts'},
|
||||
$vcount." ".
|
||||
"(<a href='edit_aifc.cgi?new=1&virtual=$a->{'name'}'>".
|
||||
"$text{'ifcs_addvirt'}</a>)");
|
||||
&ui_text_wrap($vcount)." ".
|
||||
&ui_element_inline("(<a href='edit_aifc.cgi?new=1&virtual=$a->{'name'}'>".
|
||||
"$text{'ifcs_addvirt'}</a>)", 'button'));
|
||||
}
|
||||
|
||||
# Physical parameters
|
||||
|
||||
@@ -227,10 +227,10 @@ if ($b && $b->{'virtual'} eq "" && !$in{'new'}) {
|
||||
}
|
||||
$vlink = "";
|
||||
if ($access{'virt'} && !$noos_support_add_virtifcs) {
|
||||
$vlink = "(<a href='edit_bifc.cgi?new=1&virtual=$b->{'name'}'>".
|
||||
"$text{'ifcs_addvirt'}</a>)\n";
|
||||
$vlink = &ui_element_inline("(<a href='edit_bifc.cgi?new=1&virtual=$b->{'name'}'>".
|
||||
"$text{'ifcs_addvirt'}</a>)\n", 'button');
|
||||
}
|
||||
print &ui_table_row($text{'ifcs_virts'}, $vcount." ".$vlink);
|
||||
print &ui_table_row($text{'ifcs_virts'}, &ui_text_wrap($vcount)." ".$vlink);
|
||||
}
|
||||
|
||||
# Special parameters for teaming
|
||||
|
||||
@@ -35,19 +35,20 @@ foreach my $f (glob("$nm_conn_dir/*.nmconnection")) {
|
||||
|
||||
# IPv4 addresses
|
||||
my @virts;
|
||||
my $offset = $iface->{'dhcp'} ? 1 : 2;
|
||||
for(my $i=1; defined(my $addr = &find_nm_config($cfg, "ipv4", "address$i")); $i++) {
|
||||
my ($ad, $gw) = split(/,/, $addr);
|
||||
my ($ad, $cidr) = split(/\//, $ad);
|
||||
my $nm = &prefix_to_mask($cidr);
|
||||
if ($i == 1) {
|
||||
if ($i == $offset-1) {
|
||||
$iface->{'address'} = $ad;
|
||||
$iface->{'netmask'} = $nm;
|
||||
$iface->{'gateway'} = $gw;
|
||||
}
|
||||
else {
|
||||
push(@virts,{ 'name' => $iface->{'name'},
|
||||
'fullname' => $iface->{'name'}.":".($i-2),
|
||||
'virtual' => $i-2,
|
||||
'fullname' => $iface->{'name'}.":".($i-$offset),
|
||||
'virtual' => $i-$offset,
|
||||
'file' => $f,
|
||||
'cfg' => $cfg,
|
||||
'edit' => 1,
|
||||
|
||||
@@ -16,40 +16,40 @@ print &ui_hidden("file", $in{'file'}),"\n";
|
||||
print &ui_table_start($text{'db_header1'}, "width=100%", 2);
|
||||
|
||||
# Allow persistent MySQL connections
|
||||
print &ui_table_row($text{'db_persist'},
|
||||
print &ui_table_row(&opt_help($text{'db_persist'}, 'mysql.allow_persistent'),
|
||||
&onoff_radio("mysql.allow_persistent"),
|
||||
undef, \@tds);
|
||||
|
||||
# Max persistent connections
|
||||
$mp = &find_value("mysql.max_persistent", $conf);
|
||||
print &ui_table_row($text{'db_maxpersist'},
|
||||
print &ui_table_row(&opt_help($text{'db_maxpersist'}, 'mysql.max_persistent'),
|
||||
&ui_opt_textbox("mysql.max_persistent", $mp <= 0 ? undef : $mp,
|
||||
5, $text{'db_unlimited'}),
|
||||
undef, \@tds);
|
||||
|
||||
# Max total connections
|
||||
$mp = &find_value("mysql.max_links", $conf);
|
||||
print &ui_table_row($text{'db_maxlinks'},
|
||||
print &ui_table_row(&opt_help($text{'db_maxlinks'}, 'mysql.max_links'),
|
||||
&ui_opt_textbox("mysql.max_links", $mp <= 0 ? undef : $mp,
|
||||
5, $text{'db_unlimited'}),
|
||||
undef, \@tds);
|
||||
|
||||
# Connection timeout
|
||||
$ct = &find_value("mysql.connect_timeout", $conf);
|
||||
print &ui_table_row($text{'db_timeout'},
|
||||
print &ui_table_row(&opt_help($text{'db_timeout'}, 'mysql.connect_timeout'),
|
||||
&ui_opt_textbox("mysql.connect_timeout", $ct <= 0 ? undef : $ct,
|
||||
5,$text{'default'})." ".$text{'db_s'},
|
||||
undef, \@tds);
|
||||
|
||||
# Default host
|
||||
print &ui_table_row($text{'db_host'},
|
||||
print &ui_table_row(&opt_help($text{'db_host'}, 'mysql.default_host'),
|
||||
&ui_opt_textbox("mysql.default_host",
|
||||
&find_value("mysql.default_host", $conf),
|
||||
30, "<tt>localhost</tt>"),
|
||||
undef, \@tds);
|
||||
|
||||
# Default port
|
||||
print &ui_table_row($text{'db_port'},
|
||||
print &ui_table_row(&opt_help($text{'db_port'}, 'mysql.default_port'),
|
||||
&ui_opt_textbox("mysql.default_port",
|
||||
&find_value("mysql.default_port", $conf),
|
||||
5, "<tt>3306</tt>"),
|
||||
@@ -62,25 +62,25 @@ print &ui_table_end();
|
||||
print &ui_table_start($text{'db_header2'}, "width=100%", 2);
|
||||
|
||||
# Allow persistent PostgreSQL connections
|
||||
print &ui_table_row($text{'db_persist'},
|
||||
print &ui_table_row(&opt_help($text{'db_persist'}, 'pgsql.allow_persistent'),
|
||||
&onoff_radio("pgsql.allow_persistent"),
|
||||
undef, \@tds);
|
||||
|
||||
# Re-open persistent PostgreSQL connections
|
||||
print &ui_table_row($text{'db_reset'},
|
||||
print &ui_table_row(&opt_help($text{'db_reset'}, 'pgsql.auto_reset_persistent'),
|
||||
&onoff_radio("pgsql.auto_reset_persistent"),
|
||||
undef, \@tds);
|
||||
|
||||
# Max persistent connections
|
||||
$mp = &find_value("pgsql.max_persistent", $conf);
|
||||
print &ui_table_row($text{'db_maxpersist'},
|
||||
print &ui_table_row(&opt_help($text{'db_maxpersist'}, 'pgsql.max_persistent'),
|
||||
&ui_opt_textbox("pgsql.max_persistent", $mp <= 0 ? undef : $mp,
|
||||
5, $text{'db_unlimited'}),
|
||||
undef, \@tds);
|
||||
|
||||
# Max total connections
|
||||
$mp = &find_value("pgsql.max_links", $conf);
|
||||
print &ui_table_row($text{'db_maxlinks'},
|
||||
print &ui_table_row(&opt_help($text{'db_maxlinks'}, 'pgsql.max_links'),
|
||||
&ui_opt_textbox("pgsql.max_links", $mp <= 0 ? undef : $mp,
|
||||
5, $text{'db_unlimited'}),
|
||||
undef, \@tds);
|
||||
|
||||
@@ -14,7 +14,7 @@ print &ui_table_start($text{'dirs_header'}, "width=100%", 2);
|
||||
|
||||
# Include files directories
|
||||
$include = &find_value("include_path", $conf);
|
||||
print &ui_table_row($text{'dirs_include'},
|
||||
print &ui_table_row(&opt_help($text{'dirs_include'}, 'include'),
|
||||
&ui_radio("include_def", $include ? 0 : 1,
|
||||
[ [ 1, $text{'default'} ], [ 0, $text{'dirs_below'} ] ]).
|
||||
"<br>\n".
|
||||
@@ -36,7 +36,7 @@ if (@avail) {
|
||||
}
|
||||
|
||||
# Can accept uploads?
|
||||
print &ui_table_row($text{'dirs_upload'},
|
||||
print &ui_table_row(&opt_help($text{'dirs_upload'}, 'file_uploads'),
|
||||
&onoff_radio("file_uploads"));
|
||||
|
||||
# Upload temp files directory
|
||||
|
||||
@@ -13,15 +13,15 @@ print &ui_hidden("file", $in{'file'}),"\n";
|
||||
print &ui_table_start($text{'errors_header'}, "width=100%", 4);
|
||||
|
||||
# Show and log errors
|
||||
print &ui_table_row($text{'errors_display'},
|
||||
print &ui_table_row(&opt_help($text{'errors_display'}, 'display_errors'),
|
||||
&onoff_radio("display_errors"));
|
||||
print &ui_table_row($text{'errors_log'},
|
||||
print &ui_table_row(&opt_help($text{'errors_log'}, 'log_errors'),
|
||||
&onoff_radio("log_errors"));
|
||||
|
||||
# Ignore repeated
|
||||
print &ui_table_row($text{'errors_ignore'},
|
||||
print &ui_table_row(&opt_help($text{'errors_ignore'}, 'ignore_repeated_errors'),
|
||||
&onoff_radio("ignore_repeated_errors"));
|
||||
print &ui_table_row($text{'errors_source'},
|
||||
print &ui_table_row(&opt_help($text{'errors_source'}, 'ignore_repeated_source'),
|
||||
&onoff_radio("ignore_repeated_source"));
|
||||
|
||||
# Error types to show
|
||||
@@ -43,23 +43,23 @@ if ($errs =~ /^[A-Z_\|]*$/) {
|
||||
$etable .= "</tr>\n" if ($i++%4 == 3);
|
||||
}
|
||||
$etable .= "</table>\n";
|
||||
print &ui_table_row($text{'errors_bits'}, $etable, 3);
|
||||
print &ui_table_row(&opt_help($text{'errors_bits'}, 'error_reporting'), $etable, 3);
|
||||
}
|
||||
else {
|
||||
# Custom expression
|
||||
print &ui_table_row($text{'errors_reporting'},
|
||||
print &ui_table_row(&opt_help($text{'errors_reporting'}, 'error_reporting'),
|
||||
&ui_opt_textbox("error_reporting", $errs, 60, $text{'default'}), 3);
|
||||
}
|
||||
|
||||
# Max error length
|
||||
$ml = &find_value("log_errors_max_len", $conf);
|
||||
print &ui_table_row($text{'errors_maxlen'},
|
||||
print &ui_table_row(&opt_help($text{'errors_maxlen'}, 'log_errors_max_len'),
|
||||
&ui_opt_textbox("log_errors_max_len", $ml || undef, 5,
|
||||
$text{'errors_unlimited'}));
|
||||
|
||||
# Where to log errors
|
||||
$el = &find_value("error_log", $conf);
|
||||
print &ui_table_row($text{'errors_file'},
|
||||
print &ui_table_row(&opt_help($text{'errors_file'}, 'error_log'),
|
||||
&ui_radio("error_log_def", $el eq "syslog" ? 1 : $el ? 2 : 0,
|
||||
[ [ 0, $text{'errors_none'} ],
|
||||
[ 1, $text{'errors_syslog'} ],
|
||||
|
||||
@@ -13,37 +13,37 @@ print &ui_hidden("file", $in{'file'}),"\n";
|
||||
print &ui_table_start($text{'limits_header'}, "width=100%", 4);
|
||||
|
||||
# Memory limit
|
||||
print &ui_table_row($text{'limits_mem'},
|
||||
print &ui_table_row(&opt_help($text{'limits_mem'}, 'memory_limit'),
|
||||
&ui_opt_textbox("memory_limit",
|
||||
&find_value("memory_limit", $conf),
|
||||
8, $text{'default'}));
|
||||
|
||||
# POST limit
|
||||
print &ui_table_row($text{'limits_post'},
|
||||
print &ui_table_row(&opt_help($text{'limits_post'}, 'post_max_size'),
|
||||
&ui_opt_textbox("post_max_size",
|
||||
&find_value("post_max_size", $conf),
|
||||
8, $text{'default'}));
|
||||
|
||||
# Upload limit
|
||||
print &ui_table_row($text{'limits_upload'},
|
||||
print &ui_table_row(&opt_help($text{'limits_upload'}, 'upload_max_filesize'),
|
||||
&ui_opt_textbox("upload_max_filesize",
|
||||
&find_value("upload_max_filesize", $conf),
|
||||
8, $text{'default'}));
|
||||
|
||||
# Max run time
|
||||
print &ui_table_row($text{'limits_exec'},
|
||||
print &ui_table_row(&opt_help($text{'limits_exec'}, 'max_execution_time'),
|
||||
&ui_opt_textbox("max_execution_time",
|
||||
&find_value("max_execution_time", $conf),
|
||||
8, $text{'default'})." ".$text{'db_s'});
|
||||
|
||||
# Max parsing time
|
||||
print &ui_table_row($text{'limits_input'},
|
||||
print &ui_table_row(&opt_help($text{'limits_input'}, 'max_input_time'),
|
||||
&ui_opt_textbox("max_input_time",
|
||||
&find_value("max_input_time", $conf),
|
||||
8, $text{'default'})." ".$text{'db_s'});
|
||||
|
||||
# Max parsing time
|
||||
print &ui_table_row($text{'limits_vars'},
|
||||
print &ui_table_row(&opt_help($text{'limits_vars'}, 'max_input_vars'),
|
||||
&ui_opt_textbox("max_input_vars",
|
||||
&find_value("max_input_vars", $conf),
|
||||
8, $text{'default'}));
|
||||
|
||||
@@ -22,33 +22,35 @@ print &ui_hidden("file", $in{'file'}),"\n";
|
||||
print &ui_table_start($text{'misc_header'}, "width=100%", 4);
|
||||
|
||||
# Tag styles
|
||||
print &ui_table_row($text{'misc_short'},
|
||||
print &ui_table_row(&opt_help($text{'misc_short'}, 'short_open_tag'),
|
||||
&onoff_radio("short_open_tag"));
|
||||
print &ui_table_row($text{'misc_asp'},
|
||||
&onoff_radio("asp_tags"));
|
||||
if (php_version_test_maximum('5.6')) {
|
||||
print &ui_table_row(&opt_help($text{'misc_asp'}, 'asp_tags'),
|
||||
&onoff_radio("asp_tags"));
|
||||
}
|
||||
|
||||
# Output options
|
||||
print &ui_table_row($text{'misc_zlib'},
|
||||
print &ui_table_row(&opt_help($text{'misc_zlib'}, 'zlib.output_compression'),
|
||||
&onoff_radio("zlib.output_compression"));
|
||||
print &ui_table_row($text{'misc_flush'},
|
||||
print &ui_table_row(&opt_help($text{'misc_flush'}, 'implicit_flush'),
|
||||
&onoff_radio("implicit_flush"));
|
||||
|
||||
# URL open options
|
||||
print &ui_table_row($text{'misc_fopen'},
|
||||
print &ui_table_row(&opt_help($text{'misc_fopen'}, 'allow_url_fopen'),
|
||||
&onoff_radio("allow_url_fopen"));
|
||||
|
||||
print &ui_table_hr();
|
||||
|
||||
# Email sending options
|
||||
$smtp = &find_value("SMTP", $conf);
|
||||
print &ui_table_row($text{'misc_smtp'},
|
||||
print &ui_table_row(&opt_help($text{'misc_smtp'}, 'smtp'),
|
||||
&ui_opt_textbox("smtp", $smtp, 20, $text{'misc_none'}));
|
||||
$port = &find_value("smtp_port", $conf);
|
||||
print &ui_table_row($text{'misc_port'},
|
||||
print &ui_table_row(&opt_help($text{'misc_port'}, 'smtp_port'),
|
||||
&ui_opt_textbox("smtp_port", $port, 5, $text{'default'}));
|
||||
|
||||
$sendmail = &find_value("sendmail_path", $conf);
|
||||
print &ui_table_row($text{'misc_sendmail'},
|
||||
print &ui_table_row(&opt_help($text{'misc_sendmail'}, 'sendmail_path'),
|
||||
&ui_opt_textbox("sendmail_path", $sendmail, 60,
|
||||
$text{'misc_none'}), 3);
|
||||
|
||||
@@ -56,11 +58,11 @@ print &ui_table_row($text{'misc_sendmail'},
|
||||
print &ui_table_hr();
|
||||
|
||||
# Include open options
|
||||
print &ui_table_row($text{'misc_include'},
|
||||
print &ui_table_row(&opt_help($text{'misc_include'}, 'allow_url_include'),
|
||||
&onoff_radio("allow_url_include"));
|
||||
|
||||
# CGI Fix Path options
|
||||
print &ui_table_row($text{'misc_path'},
|
||||
print &ui_table_row(&opt_help($text{'misc_path'}, 'cgi.fix_pathinfo'),
|
||||
&onoff_radio("cgi.fix_pathinfo"));
|
||||
|
||||
# PHP Timezone Dropdown
|
||||
@@ -76,7 +78,7 @@ print &ui_table_row(&hlink($text{'misc_timezone'}, "misc_timezone"),
|
||||
|
||||
# Default charset
|
||||
$charset = &find_value("default_charset", $conf);
|
||||
print &ui_table_row($text{'misc_charset'},
|
||||
print &ui_table_row(&opt_help($text{'misc_charset'}, 'default_charset'),
|
||||
&ui_opt_textbox("default_charset", $charset, 20,
|
||||
$text{'default'}));
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ print &ui_hidden("file", $in{'file'}),"\n";
|
||||
print &ui_table_start($text{'session_header'}, "width=100%", 2);
|
||||
|
||||
# Session saving handler
|
||||
print &ui_table_row($text{'session_handler'},
|
||||
print &ui_table_row(&opt_help($text{'session_handler'}, 'session.save_handler'),
|
||||
&ui_select("session.save_handler",
|
||||
&find_value("session.save_handler", $conf),
|
||||
[ [ "files", $text{'session_files'} ],
|
||||
@@ -23,26 +23,26 @@ print &ui_table_row($text{'session_handler'},
|
||||
[ "memcache", $text{'session_memcache'} ] ]));
|
||||
|
||||
# Where to save session files
|
||||
print &ui_table_row($text{'session_path'},
|
||||
print &ui_table_row(&opt_help($text{'session_path'}, 'session.save_path'),
|
||||
&ui_opt_textbox("session.save_path",
|
||||
&find_value("session.save_path", $conf),
|
||||
60, $text{'default'}." (<tt>/tmp</tt>)"));
|
||||
|
||||
# Use cookies for sessions?
|
||||
print &ui_table_row($text{'session_cookies'},
|
||||
print &ui_table_row(&opt_help($text{'session_cookies'}, 'session.use_cookies'),
|
||||
&onoff_radio("session.use_cookies"));
|
||||
print &ui_table_row($text{'session_only_cookies'},
|
||||
print &ui_table_row(&opt_help($text{'session_only_cookies'}, 'session.use_only_cookies'),
|
||||
&onoff_radio("session.use_only_cookies"));
|
||||
|
||||
# Cookie lifetime
|
||||
$lf = &find_value("session.cookie_lifetime", $conf);
|
||||
print &ui_table_row($text{'session_life'},
|
||||
print &ui_table_row(&opt_help($text{'session_life'}, 'session.cookie_lifetime'),
|
||||
&ui_opt_textbox("session.cookie_lifetime", $lf || undef,
|
||||
5, $text{'session_forever'})." ".$text{'db_s'});
|
||||
|
||||
# Session lifetime
|
||||
$lf = &find_value("session.gc_maxlifetime", $conf);
|
||||
print &ui_table_row($text{'session_maxlife'},
|
||||
print &ui_table_row(&opt_help($text{'session_maxlife'}, 'session.gc_maxlifetime'),
|
||||
&ui_opt_textbox("session.gc_maxlifetime", $lf || undef,
|
||||
5, $text{'session_forever'})." ".$text{'db_s'});
|
||||
|
||||
|
||||
@@ -11,20 +11,21 @@ $conf = &get_config_as_user($in{'file'});
|
||||
print &ui_form_start("save_vars.cgi", "post");
|
||||
print &ui_hidden("file", $in{'file'}),"\n";
|
||||
print &ui_table_start($text{'vars_header'}, "width=100%", 4);
|
||||
if (php_version_test_maximum('7.4')) {
|
||||
print &ui_table_row(&opt_help($text{'vars_magic'}, 'magic_quotes_gpc'),
|
||||
&onoff_radio("magic_quotes_gpc"));
|
||||
print &ui_table_row(&opt_help($text{'vars_runtime'}, 'magic_quotes_runtime'),
|
||||
&onoff_radio("magic_quotes_runtime"));
|
||||
}
|
||||
|
||||
print &ui_table_row($text{'vars_magic'},
|
||||
&onoff_radio("magic_quotes_gpc"));
|
||||
if (php_version_test_maximum('5.6')) {
|
||||
print &ui_table_row(&opt_help($text{'vars_register'}, 'register_globals'),
|
||||
&onoff_radio("register_globals"));
|
||||
print &ui_table_row(&opt_help($text{'vars_long'}, 'register_long_arrays'),
|
||||
&onoff_radio("register_long_arrays"));
|
||||
}
|
||||
|
||||
print &ui_table_row($text{'vars_runtime'},
|
||||
&onoff_radio("magic_quotes_runtime"));
|
||||
|
||||
print &ui_table_row($text{'vars_register'},
|
||||
&onoff_radio("register_globals"));
|
||||
|
||||
print &ui_table_row($text{'vars_long'},
|
||||
&onoff_radio("register_long_arrays"));
|
||||
|
||||
print &ui_table_row($text{'vars_args'},
|
||||
print &ui_table_row(&opt_help($text{'vars_args'}, 'register_argc_argv'),
|
||||
&onoff_radio("register_argc_argv"));
|
||||
|
||||
print &ui_table_end();
|
||||
|
||||
@@ -167,4 +167,8 @@ acl_anyfile=Can edit any file as a PHP configuration?
|
||||
acl_manual=Can manually edit configuration files?
|
||||
acl_inis=Additional configuration files<br>(In <i>filename</i>=<i>description</i> format)
|
||||
acl_user=Read and write files as user
|
||||
|
||||
opt_default=Default Value: <tt>$1</tt>
|
||||
opt_default_unknown=Unknown
|
||||
|
||||
__norefs=1
|
||||
|
||||
@@ -282,7 +282,16 @@ return grep { !$done{$_->[0]}++ } @rv;
|
||||
}
|
||||
|
||||
# get_php_ini_binary(file)
|
||||
# Given a php.ini path, try to guess the php command for it
|
||||
# Given a php.ini path, try to guess the PHP command for it
|
||||
# Examples:
|
||||
# caller: get_php_binary_version("/etc/php/8.3/fpm/pool.d/www.conf");
|
||||
# return: /bin/php8.3
|
||||
#
|
||||
# caller: get_php_binary_version("/etc/opt/remi/php81/php.ini");
|
||||
# return: /bin/php81
|
||||
#
|
||||
# caller: get_php_binary_version("php7.4");
|
||||
# return: /bin/php7.4 or /bin/php74
|
||||
sub get_php_ini_binary
|
||||
{
|
||||
my ($file) = @_;
|
||||
@@ -305,18 +314,110 @@ if (&foreign_check("virtual-server")) {
|
||||
}
|
||||
}
|
||||
|
||||
# Try to get version from the path
|
||||
if ($fle =~ /php(\d+)/) {
|
||||
# Try to get version from the path, e.g.
|
||||
# RHEL and derivatives /etc/opt/remi/php83
|
||||
# Debian/Ubuntu /etc/php/8.3/fpm/pool.d/www.conf
|
||||
# RHEL and derivatives Debian/Ubuntu
|
||||
if ($file =~ /php(\d+)/ || $file =~ /php\/([\d\.]+)/) {
|
||||
my $ver = $1;
|
||||
my $binary = &has_command("php$ver");
|
||||
return $binary if ($binary);
|
||||
}
|
||||
|
||||
# Given PHP version, e.g. `php7.4` as a string try to get binary
|
||||
if ($file =~ /^php.*?([\d\.]+)$/) {
|
||||
my $ver = $1;
|
||||
my $nodot = $ver;
|
||||
$nodot =~ s/\.//g;
|
||||
my $binary = &has_command("php$ver") ||
|
||||
&has_command("php$nodot");
|
||||
&has_command("php$nodot");
|
||||
return $binary if ($binary);
|
||||
}
|
||||
return &has_command("php");
|
||||
}
|
||||
|
||||
# get_php_binary_version(file|version-string)
|
||||
# Given a php.ini path or binary, try to guess the
|
||||
# PHP command and extract version for it
|
||||
# Examples:
|
||||
# caller: get_php_binary_version("/etc/php/8.3/fpm/pool.d/www.conf");
|
||||
# return: 8.3.0
|
||||
# caller: get_php_binary_version("/etc/opt/remi/php81/php.ini");
|
||||
# return: 8.1.2
|
||||
# caller: get_php_binary_version("php7.4");
|
||||
# return: 7.4.33
|
||||
sub get_php_binary_version
|
||||
{
|
||||
my ($file) = @_;
|
||||
my $phpbinary = &get_php_ini_binary($file || $in{'file'});
|
||||
return undef if (!$phpbinary);
|
||||
my $phpver = &backquote_command("$phpbinary -v 2>&1");
|
||||
($phpver) = $phpver =~ /^PHP\s+([\d\.]+)/;
|
||||
return $phpver;
|
||||
}
|
||||
|
||||
# php_version_test_against(version, comparison-operator, [file|version-string])
|
||||
# Given PHP version test if matches with currently installed or given
|
||||
# Returns 1 if given version matches to the given and/or installed, 0 if not matches
|
||||
#
|
||||
# Examples:
|
||||
# caller: php_version_test_against("7.4");
|
||||
# return: 1 if version 7.4 is lower or equal to the current (current is 7.4.33)
|
||||
# -----------------------------------------------------------------------------
|
||||
# caller: php_version_test_against("7.3", undef, "/etc/opt/remi/php81/php.ini");
|
||||
# return: 0 because version 7.3 is lower and not equal to found/instaled 8.1
|
||||
# -----------------------------------------------------------------------------
|
||||
# caller: php_version_test_against("7.4.33", undef, "php7.4.33");
|
||||
# return: 1 because version 7.4.33 is lower or equal to found/instaled 7.4.33
|
||||
# -----------------------------------------------------------------------------
|
||||
# caller: php_version_test_against("7.4.33", undef, "php7.3.3");
|
||||
# return: 0 because version 7.4.33 is greater found/instaled 7.3.3
|
||||
# -----------------------------------------------------------------------------
|
||||
# caller: php_version_test_against("7.3", undef, "php7.2");
|
||||
# return: 0 because version 7.3 is greater found/instaled 7.2
|
||||
# -----------------------------------------------------------------------------
|
||||
# caller: php_version_test_against('7.4.33', '<=', 'php7.4');
|
||||
# return: 1 for version 7.4.33 because PHP 7.4 is installed and version 7.4.33
|
||||
# -----------------------------------------------------------------------------
|
||||
# caller: php_version_test_against('7.4.34', '<=', 'php7.4');
|
||||
# return: 0 because version 7.4.34 is not lower or equal than intalled (7.4.33)
|
||||
sub php_version_test_against
|
||||
{
|
||||
my ($version, $cmp, $file) = @_;
|
||||
my $curr_php = &get_php_binary_version($file);
|
||||
return undef if (!$curr_php);
|
||||
$cmp ||= '>=';
|
||||
# Normalize the base version
|
||||
if ($version =~ /^\d+\.\d+$/) {
|
||||
# 7.4
|
||||
$curr_php =~ s/(\d+\.\d+)(.*)/$1/;
|
||||
}
|
||||
if ($version =~ /^\d+$/) {
|
||||
# 7
|
||||
$curr_php =~ s/(\d+)(.*)/$1/;
|
||||
}
|
||||
if (&compare_version_numbers($version, $cmp, $curr_php)) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
# php_version_test_minimum(version, [file|version-string])
|
||||
# Returns minimum version of PHP agaisnt installed or given
|
||||
sub php_version_test_minimum
|
||||
{
|
||||
my ($version, $file) = @_;
|
||||
return &php_version_test_against($version, '<=', $file);
|
||||
}
|
||||
|
||||
# php_version_test_maximum(version, [file|version-string])
|
||||
# Returns maximum version of PHP agaisnt installed or given
|
||||
sub php_version_test_maximum
|
||||
{
|
||||
my ($version, $file) = @_;
|
||||
return &php_version_test_against($version, '>=', $file);
|
||||
}
|
||||
|
||||
# onoff_radio(name)
|
||||
# Returns a field for editing a binary configuration value
|
||||
sub onoff_radio
|
||||
@@ -485,5 +586,40 @@ if ($dir) {
|
||||
return ();
|
||||
}
|
||||
|
||||
# list_default_value(file, value, no-cache)
|
||||
# Returns a list of all available PHP extension modules
|
||||
sub list_default_value
|
||||
{
|
||||
my ($file, $value, $nocache) = @_;
|
||||
my $binary = &get_php_ini_binary($file);
|
||||
if ($binary) {
|
||||
my $out = $main::list_default_value_cache{$binary};
|
||||
if ($nocache || !$out) {
|
||||
# Return defaults (without using any config file)
|
||||
$out = &backquote_command("$binary --no-php-ini -i 2>/dev/null </dev/null");
|
||||
$main::list_default_value_cache{$binary} = $out;
|
||||
}
|
||||
# Get default master value
|
||||
if ($out =~ /\Q$value\E\s+\=>\s+\S+\s+\=>\s+(\S+)/) {
|
||||
return $1;
|
||||
}
|
||||
}
|
||||
return undef;
|
||||
}
|
||||
|
||||
# opt_help(text, php-opt-name)
|
||||
# Returns the link to the PHP manual for some option
|
||||
sub opt_help
|
||||
{
|
||||
my ($text, $opt) = @_;
|
||||
my $opt_name = $opt;
|
||||
$opt_name =~ s/_/-/g;
|
||||
my $php_opt_default = &list_default_value($in{'file'}, $opt);
|
||||
my $optdef = defined($php_opt_default) ? $php_opt_default : "<em>$text{'opt_default_unknown'}</em>";
|
||||
$php_opt_default = "<strong>".&text('opt_default', "<br>$opt = $optdef")."</strong>";
|
||||
my $link = "https://www.php.net/$opt_name";
|
||||
return "@{[&ui_text_wrap($text)]}".&ui_link($link, &ui_help($php_opt_default), 'ui_link_help', 'target="_blank"');
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
|
||||
22
ui-lib.pl
22
ui-lib.pl
@@ -2804,7 +2804,7 @@ if (defined(&theme_ui_div_row)) {
|
||||
return &theme_ui_div_row(@_);
|
||||
}
|
||||
my ($label, $content) = @_;
|
||||
return "<div class='ui_div_row'><span>$label</span><span>$content</span></div>";
|
||||
return "<div class='ui_div_row'><span>$label</span><span>$content</span></div>\n";
|
||||
}
|
||||
|
||||
=head2 ui_space(number)
|
||||
@@ -2819,7 +2819,7 @@ if (defined(&theme_ui_space)) {
|
||||
}
|
||||
my ($number) = @_;
|
||||
$number ||= 1;
|
||||
return "<span class='ui_space'>".(" " x $number)."</span>";
|
||||
return "<span class='ui_space'>".(" " x $number)."</span>\n";
|
||||
}
|
||||
|
||||
=head2 ui_newline(number)
|
||||
@@ -2834,7 +2834,7 @@ if (defined(&theme_ui_newline)) {
|
||||
}
|
||||
my ($number) = @_;
|
||||
$number ||= 1;
|
||||
return "<span class='ui_newline'>".("<br>" x $number)."</span>";
|
||||
return "<span class='ui_newline'>".("<br>" x $number)."</span>\n";
|
||||
}
|
||||
|
||||
=head2 ui_text_wrap(text)
|
||||
@@ -2848,7 +2848,21 @@ if (defined(&theme_ui_text_wrap)) {
|
||||
return &theme_ui_text_wrap(@_);
|
||||
}
|
||||
my ($text) = @_;
|
||||
return "<span class='ui_text_wrap'>$text</span>";
|
||||
return "<span class='ui_text_wrap'>$text</span>\n";
|
||||
}
|
||||
|
||||
=head2 ui_element_inline(text)
|
||||
|
||||
Wraps any text into span tags
|
||||
|
||||
=cut
|
||||
sub ui_element_inline
|
||||
{
|
||||
if (defined(&theme_ui_element_inline)) {
|
||||
return &theme_ui_element_inline(@_);
|
||||
}
|
||||
my ($element, $type) = @_;
|
||||
return "<span data-element='$type' class='ui_element_inline'>$element</span>\n";
|
||||
}
|
||||
|
||||
=head2 ui_paginations(&array, &opts)
|
||||
|
||||
@@ -56,7 +56,7 @@ if (!@index) {
|
||||
push(@index, $bak) if (-r "$dir/$bak");
|
||||
}
|
||||
push(@index, "$in{'wav_filename'}.rmd");
|
||||
system("mv $rmdfile $dir/$in{'wav_filename'}.rmd");
|
||||
&rename_file($rmdfile, "$dir/$in{'wav_filename'}.rmd");
|
||||
&open_lock_tempfile(INDEX, ">$index");
|
||||
&print_tempfile(INDEX, map { "$_\n" } @index);
|
||||
&close_tempfile(INDEX);
|
||||
|
||||
@@ -1688,6 +1688,20 @@ $main::no_miniserv_userdb = 1;
|
||||
&setvar('error-fatal', 1);
|
||||
my $msg = join("", @_);
|
||||
$msg =~ s/<[^>]*>//g;
|
||||
my (@msg) = @_;
|
||||
my @stack;
|
||||
for(my $i=0; my @stack_ = caller($i); $i++) {
|
||||
push(@stack, \@stack_);
|
||||
}
|
||||
my $err_caller;
|
||||
$err_caller = "$stack[1]->[1] (line $stack[1]->[2])"
|
||||
if ($stack[1]->[1] && $stack[1]->[2]);
|
||||
if ($err_caller) {
|
||||
$err_caller =~ s/$root_directory\///;
|
||||
my $err_caller_ = &ui_help($err_caller);
|
||||
$msg = $msg ? "$msg $err_caller_" : $err_caller_;
|
||||
push(@msg, $err_caller_);
|
||||
}
|
||||
my $error_details = (($ENV{'WEBMIN_DEBUG'} || $gconfig{'debug_enabled'}) ? "" : "\n");
|
||||
my $error_output_right = sub {
|
||||
my ($err_msg) = @_;
|
||||
@@ -1698,7 +1712,7 @@ if (!$main::error_must_die) {
|
||||
}
|
||||
&load_theme_library();
|
||||
if ($main::error_must_die) {
|
||||
die "@_$error_details";
|
||||
die "@msg$error_details";
|
||||
}
|
||||
&call_error_handlers();
|
||||
if (!$ENV{'REQUEST_METHOD'}) {
|
||||
@@ -1711,7 +1725,7 @@ if (!$ENV{'REQUEST_METHOD'}) {
|
||||
&print_call_stack() if ($gconfig{'error_stack'});
|
||||
}
|
||||
elsif (defined(&theme_error)) {
|
||||
&theme_error(@_);
|
||||
&theme_error({err => \@_, stack => \@stack, err_caller => $err_caller});
|
||||
}
|
||||
elsif ($ENV{'REQUEST_URI'} =~ /json-error=1/) {
|
||||
my %jerror;
|
||||
@@ -1721,7 +1735,8 @@ elsif ($ENV{'REQUEST_URI'} =~ /json-error=1/) {
|
||||
%jerror = (error => $error,
|
||||
error_fatal => 1,
|
||||
error_what => $error_what,
|
||||
error_message => $error_message
|
||||
error_message => $error_message,
|
||||
error_caller => $err_caller,
|
||||
);
|
||||
print_json(\%jerror);
|
||||
}
|
||||
@@ -1738,11 +1753,11 @@ else {
|
||||
print "<hr>\n" if ($hh);
|
||||
if ($hh) {
|
||||
print "<h3 data-fatal-error-text>",($main::whatfailed ? "$main::whatfailed : " : ""),
|
||||
@_,"</h3>\n";
|
||||
@msg,"</h3>\n";
|
||||
}
|
||||
else {
|
||||
my $error_what = ($main::whatfailed ? "$main::whatfailed: " : "");
|
||||
my $error_html = join(",", @_);
|
||||
my $error_html = join(",", @msg);
|
||||
my $error_text;
|
||||
if ($error_html !~ /<pre.*?>/) {
|
||||
$error_text = " — $error_html";
|
||||
@@ -1759,11 +1774,11 @@ else {
|
||||
print "<tr> <td$cls_err_td><b>$text{'error_file'}</b></td> ",
|
||||
"<td$cls_err_td><b>$text{'error_line'}</b></td> ",
|
||||
"<td$cls_err_td><b>$text{'error_sub'}</b></td> </tr>\n";
|
||||
for($i=0; my @stack = caller($i); $i++) {
|
||||
foreach my $stack (@stack) {
|
||||
print "<tr>\n";
|
||||
print "<td$cls_err_td>$stack[1]</td>\n";
|
||||
print "<td$cls_err_td>$stack[2]</td>\n";
|
||||
print "<td$cls_err_td>$stack[3]</td>\n";
|
||||
print "<td$cls_err_td>$stack->[1]</td>\n";
|
||||
print "<td$cls_err_td>$stack->[2]</td>\n";
|
||||
print "<td$cls_err_td>$stack->[3]</td>\n";
|
||||
print "</tr>\n";
|
||||
}
|
||||
print "</table>\n";
|
||||
|
||||
@@ -1,52 +1,52 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v2.0.22 (GNU/Linux)
|
||||
|
||||
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
|
||||
bk6OFSh+t0wH
|
||||
=1KZ4
|
||||
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
|
||||
eMAhu3k=
|
||||
=ha4Q
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
@@ -44,7 +44,7 @@ our $webmin_key_email = "jcameron\@webmin.com";
|
||||
our $webmin_key_fingerprint = "1719 003A CE3E 5A41 E2DE 70DF D97A 3AE9 11F6 3C51";
|
||||
|
||||
our $developers_key_email = "developers\@webmin.com";
|
||||
our $developers_key_fingerprint = "B966 3227 39F9 8E2E 092E 69CF 28E1 1943 FF6A DD8B966 3227 39F9 8E2E 092E 69CF 28E1 1943 FF6A DD855";
|
||||
our $developers_key_fingerprint = "7D1A E915 F3DC FADA 344A 4FCB 2D22 3B91 8916 F2A2";
|
||||
|
||||
our $authentic_key_email = "gpg\@ilia.engineer";
|
||||
our $authentic_key_fingerprint = "EC60 F3DA 9CB7 9ADC CF56 0D1F 121E 166D D9C8 21AB";
|
||||
|
||||
Reference in New Issue
Block a user