diff --git a/mysql/edit_manual.cgi b/mysql/edit_manual.cgi new file mode 100755 index 000000000..864c456bb --- /dev/null +++ b/mysql/edit_manual.cgi @@ -0,0 +1,32 @@ +#!/usr/local/bin/perl +# Show a config file for manual editing + +require './mysql-lib.pl'; +&ReadParse(); +&ui_print_header($header_subtext, $text{'manual_title'}, ""); + +$conf = &get_mysql_config(); +@files = &unique(map { $_->{'file'} } @$conf); +$in{'manual'} ||= $files[0]; +&indexof($in{'manual'}, @files) >= 0 || + &error($text{'manual_efile'}); + +# File selector +print &ui_form_start("edit_manual.cgi"); +print $form_hiddens; +print "$text{'manual_file'}\n", + &ui_select("manual", $in{'manual'}, \@files),"\n", + &ui_submit('Edit'); +print &ui_form_end(); + +# Config editor +print &ui_form_start("save_manual.cgi", "form-data"); +print $form_hiddens; +print &ui_hidden("manual", $in{'manual'}); +print &ui_table_start(undef, undef, 2); +print &ui_table_row(undef, + &ui_textarea("data", &read_file_contents($in{'manual'}), 20, 80), 2); +print &ui_table_end(); +print &ui_form_end([ [ undef, $text{'save'} ] ]); + +&ui_print_footer("", $text{'index_return'}); diff --git a/mysql/images/manual.gif b/mysql/images/manual.gif new file mode 100644 index 000000000..e57b83c90 Binary files /dev/null and b/mysql/images/manual.gif differ diff --git a/mysql/index.cgi b/mysql/index.cgi index 19222acf9..6a9c64902 100755 --- a/mysql/index.cgi +++ b/mysql/index.cgi @@ -220,22 +220,22 @@ else { @links = ( 'list_users.cgi', 'list_dbs.cgi', $canhosts ? ( 'list_hosts.cgi' ) : ( ), 'list_tprivs.cgi', 'list_cprivs.cgi', - 'edit_cnf.cgi', 'list_procs.cgi', + 'edit_cnf.cgi', 'edit_manual.cgi', 'list_procs.cgi', $canvars ? ( 'list_vars.cgi' ) : ( ), 'root_form.cgi', ); @titles = ( $text{'users_title'}, $text{'dbs_title'}, $canhosts ? ( $text{'hosts_title'} ) : ( ), - $text{'tprivs_title'}, - $text{'cprivs_title'}, $text{'cnf_title'}, + $text{'tprivs_title'}, $text{'cprivs_title'}, + $text{'cnf_title'}, $text{'manual_title'}, $text{'procs_title'}, $canvars ? ( $text{'vars_title'} ) : ( ), $text{'root_title'}, ); @images = ( 'images/users.gif', 'images/dbs.gif', $canhosts ? ( 'images/hosts.gif' ) : ( ), - 'images/tprivs.gif', - 'images/cprivs.gif', 'images/cnf.gif', + 'images/tprivs.gif', 'images/cprivs.gif', + 'images/cnf.gif', 'images/manual.gif', 'images/procs.gif', $canvars ? ( 'images/vars.gif' ) : ( ), 'images/root.gif', diff --git a/mysql/lang/en b/mysql/lang/en index cc04dc0e1..d09ce3654 100644 --- a/mysql/lang/en +++ b/mysql/lang/en @@ -591,6 +591,7 @@ log_importupload=Imported data from uploaded file log_importfile=Imported data from file $1 log_set=Changed $1 MySQL variables log_root=Changed administration password +log_manual=Manually edited config file backup_title=Backup Database backup_title2=Backup All Databases @@ -739,6 +740,12 @@ cnf_emax_connections=Missing or invalid maximum number of connections cnf_restart=Save and Restart MySQL cnf_fpt=Separate file for each InnoDB table? +manual_title=Edit Config Files +manual_file=Edit config file: +manual_ok=OK +manual_efile=Invalid configuration file! +manual_err=Failed to save configuration file + index_title1=Create Index index_header1=Index options index_name=Index name diff --git a/mysql/log_parser.pl b/mysql/log_parser.pl index 1c2057551..58bec8718 100755 --- a/mysql/log_parser.pl +++ b/mysql/log_parser.pl @@ -92,6 +92,9 @@ elsif ($action eq 'set') { elsif ($action eq 'root') { return $text{'log_root'}; } +elsif ($action eq 'manual') { + return $text{'log_manual'}; + } else { return undef; } diff --git a/mysql/save_manual.cgi b/mysql/save_manual.cgi new file mode 100755 index 000000000..d23d0b1a2 --- /dev/null +++ b/mysql/save_manual.cgi @@ -0,0 +1,22 @@ +#!/usr/local/bin/perl +# Save a manually edited config file + +require './mysql-lib.pl'; +&ReadParseMime(); +&error_setup($text{'manual_err'}); + +# Validate the filename +$conf = &get_mysql_config(); +@files = &unique(map { $_->{'file'} } @$conf); +$in{'manual'} ||= $files[0]; +&indexof($in{'manual'}, @files) >= 0 || + &error($text{'manual_efile'}); + +# Write the file +$in{'data'} =~ s/\r//g; +&open_lock_tempfile(MANUAL, ">$in{'manual'}"); +&print_tempfile(MANUAL, $in{'data'}); +&close_tempfile(MANUAL); + +&webmin_log("manual"); +&redirect("");