From 1709426f3f42fb4cc9873402a4f6617312e356bf Mon Sep 17 00:00:00 2001 From: Jamie Cameron Date: Fri, 31 Jul 2015 16:15:42 -0700 Subject: [PATCH] Add icon for manually editing the squid config files https://github.com/webmin/webmin/issues/242 --- gray-theme/squid/images/manual.gif | Bin 0 -> 5031 bytes squid/acl_security.pl | 2 +- squid/backup_config.pl | 18 +--------------- squid/edit_manual.cgi | 32 +++++++++++++++++++++++++++++ squid/images/manual.gif | Bin 0 -> 478 bytes squid/lang/en | 9 ++++++++ squid/save_manual.cgi | 18 ++++++++++++++++ squid/squid-lib.pl | 23 +++++++++++++++++++++ 8 files changed, 84 insertions(+), 18 deletions(-) create mode 100755 gray-theme/squid/images/manual.gif create mode 100755 squid/edit_manual.cgi create mode 100644 squid/images/manual.gif create mode 100755 squid/save_manual.cgi diff --git a/gray-theme/squid/images/manual.gif b/gray-theme/squid/images/manual.gif new file mode 100755 index 0000000000000000000000000000000000000000..ce1f3a3f0f26f8785b26cb947ef331c791c11e3f GIT binary patch literal 5031 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 C`+kG~ literal 0 HcmV?d00001 diff --git a/squid/acl_security.pl b/squid/acl_security.pl index f8fdf9e17..d7e3a2d24 100755 --- a/squid/acl_security.pl +++ b/squid/acl_security.pl @@ -3,7 +3,7 @@ require 'squid-lib.pl'; @accopts = ('portsnets', 'othercaches', 'musage', 'logging', 'copts', 'hprogs', 'actrl', 'admopts', 'proxyauth', 'miscopt', 'cms', 'rebuild', 'calamaris', 'delay', 'headeracc', 'refresh', 'cachemgr', - 'authparam', 'iptables'); + 'authparam', 'iptables', 'manual'); # acl_security_form(&options) # Output HTML for editing security options for the squid module diff --git a/squid/backup_config.pl b/squid/backup_config.pl index 14993f056..622da761b 100755 --- a/squid/backup_config.pl +++ b/squid/backup_config.pl @@ -8,23 +8,7 @@ do 'squid-lib.pl'; # Returns files and directories that can be backed up sub backup_config_files { -# Add main config file -my @rv = ( $config{'squid_conf'} ); - -# Add users file -my $conf = &get_config(); -my $file = &get_auth_file($conf); -push(@rv, $file) if ($file); - -# Add files from ACLs -my @acl = &find_config("acl", $conf); -foreach my $a (@acl) { - if ($a->{'values'}->[2] =~ /^"(.*)"$/ || $a->{'values'}->[3] =~ /^"(.*)"$/) { - push(@rv, $1); - } - } - -return &unique(@rv); +return &get_all_config_files(); } # pre_backup(&files) diff --git a/squid/edit_manual.cgi b/squid/edit_manual.cgi new file mode 100755 index 000000000..3f9ac4fab --- /dev/null +++ b/squid/edit_manual.cgi @@ -0,0 +1,32 @@ +#!/usr/local/bin/perl +# Show a form for editing a mapping file + +require './squid-lib.pl'; +&ReadParse(); +$access{'manual'} || &error($text{'manual_ecannot'}); +&ui_print_header(undef, $text{'manual_title'}, ""); + +# Find all the config files +@files = &get_all_config_files(); +$file = $in{'file'} || $files[0]; +if (@files > 1) { + # Show form to select + print &ui_form_start("edit_manual.cgi"); + print $text{'manual_file'},"\n"; + print &ui_select("file", $file, [ map { [ $_ ] } @files ]),"\n"; + print &ui_submit($text{'manual_change'}); + print &ui_form_end(),"

\n"; + } + +# Show the file contents +$data = &read_file_contents($file); +print &ui_form_start("save_manual.cgi", "form-data"); +print &ui_hidden("file", $file); +print &text('manual_editing', "$file"),"
\n"; +print &ui_table_start(); +print &ui_table_row(undef, &ui_textarea("data", $data, 20, 80), 2); +print &ui_table_end(); +print &ui_form_end([ [ "save", $text{'save'} ] ] ); + +&ui_print_footer("", $text{'index_return'}); + diff --git a/squid/images/manual.gif b/squid/images/manual.gif new file mode 100644 index 0000000000000000000000000000000000000000..e57b83c90b70c191f4e142a86a456a52438ac895 GIT binary patch literal 478 zcmZ?wbhEHbG+;1bXklRZ|NsBYnKKy}7|x`notc^TKW*ljnKRD-!OS!NXBz)MV|-?& z@tHHm@7}%pe`Ki;O^-gz@Ye(g%PA*2Sk8e!NB@Y zL7^`tb6!RkTgHJty$9zuW}SY?{diB^cDtYp;(z8w9G=;s*0ML_RO-i_(Vx~uyb{e6 zb=&?RE4(|otJ+$2;}KTz&38XpYUZuZ4qS2OPw(vSZjCv<%1mud9fjdc%)LyVZl*!{ zOf0M{{S#&>wK22J)Xqtn*f58^XF>C-&PfbRj2z1?ooB6WV`p6HyQN}pa3B+B+sxX< zAyN57bGW#<`m_AjrcBDuJ;-w|H={JnFuP?6C)c4{$3n~QuF_#Td+1c^zUly<+7COq zxOmoIoNcM{=5fi_%?}^X+TGa6^1!-7U?Kw>=a;`fHY?rhO!&bfXIb2L;b;d>r~^0a zbERz)l)UOsYVX|C=u{~6x3p#vJMZoe!(cxr^YppR>>93RGFENf49t8*c`}pNsfaoY l2n2o+= 0 || &error($text{'manual_efile'}); + +# Save the data +$in{'data'} =~ s/\r//g; +&open_lock_tempfile(FILE, ">$in{'file'}"); +&print_tempfile(FILE, $in{'data'}); +&close_tempfile(FILE); + +&webmin_log("manual", undef, $in{'file'}); +&redirect(""); \ No newline at end of file diff --git a/squid/squid-lib.pl b/squid/squid-lib.pl index e23e91731..14e296d9d 100755 --- a/squid/squid-lib.pl +++ b/squid/squid-lib.pl @@ -608,5 +608,28 @@ sub list_cachemgr_actions return ("5min" ,"60min" ,"asndb" ,"authenticator" ,"cbdata" ,"client_list" ,"comm_incoming" ,"config" ,"counters" ,"delay" ,"digest_stats" ,"dns" ,"events" ,"filedescriptors" ,"fqdncache" ,"histograms" ,"http_headers" ,"info" ,"io" ,"ipcache" ,"mem" ,"menu" ,"netdb" ,"non_peers" ,"objects" ,"offline_toggle" ,"pconn" ,"peer_select" ,"redirector" ,"refresh" ,"server_list" ,"shutdown" ,"store_digest" ,"storedir" ,"utilization" ,"via_headers" ,"vm_objects"); } +# get_all_config_files() +# Returns all files from the Squid config +sub get_all_config_files +{ +# Add main config file +my @rv = ( $config{'squid_conf'} ); + +# Add users file +my $conf = &get_config(); +my $file = &get_auth_file($conf); +push(@rv, $file) if ($file); + +# Add files from ACLs +my @acl = &find_config("acl", $conf); +foreach my $a (@acl) { + if ($a->{'values'}->[2] =~ /^"(.*)"$/ || $a->{'values'}->[3] =~ /^"(.*)"$/) { + push(@rv, $1); + } + } + +return &unique(@rv); +} + 1;