Re: [webmin-devel] Improvement to apache module's "edit config files"

"Jamie Cameron" <[email protected]>
Newsgroups gmane.comp.web.webmin.devel
Message-ID <[email protected]>
Hi Joseph,
That's a nice patch, although I'm not totally sure that it belongs in the 
Apache module in the core Webmin distribution ... mainly because I am working
on a new separate module for editing the PHP configuration file, in a user-friendly
way. It should be out in a release or two ..

 - Jamie

On 3/Nov/2006 14:00 Fry, Joseph wrote ..
> I have developers who need access to view the apache log files, and edit
> php.ini on our server.  Unfortunately, I cannot give those developers access
> to the logs module or the file manager module.  So, to meet their need
> I modified apache/allmanual_save.cgi and apache/allmanual_form.cgi as follows.
> I am not an experienced developer, so I am unfamiliar with submitting patches,
> but I felt that this would be a valuable feature to include in future releases,
> if anyone is willing to review and improve my code for submittion, I would
> appreciate it!
> 
> Essentially, these modifications cause a file in the module's directory
> (should be in /etc/ but I didn't take the time to do this) called "editfiles.ini"
> to be parsed, and appends any line that is not started with a # or whitespace
> to be added to the dropdown list of files to edit.  If any line begins
> with "ro ", that file is read-only.
> 
> If a file is read-only, the submit button is removed, and the file name
> is italicised in the dropdown box.  Users will not be able to save a read-only
> file.
> 
> The files I started with were from webmin Version 1.300.  I am sorry I
> do not have a diff file.
> 
> Thank you all for a great product!
> 
> Joe Fry
> 
> -----------------------------------------------------------
> #!/usr/bin/perl
> # allmanual_save.cgi
> # Save an entire config file
> 
> require './apache-lib.pl';
> &ReadParseMime();
> $access{'types'} eq '*' && $access{'virts'} eq '*' ||
>         &error($text{'manual_ecannot'});
> 
> $conf = &get_config();
> @files = &unique(map { $_->{'file'} } @$conf);
> 
> $editfiles = &read_file_lines("editfiles.ini");
> foreach $editfile (@$editfiles) {
>         if ($editfile !~ /^#/ and $editfile !~ /^$|^\s+/)
>         {
>                 if ($editfile !~ /^ro\s/)
>                 {
>                         push(@files, $editfile);
>                 }
>         }
> }
> 
> &indexof($in{'file'}, @files) >= 0 || &error($text{'manual_efile'});
> 
> $temp = &transname();
> &execute_command("cp ".quotemeta($in{'file'})." $temp");
> $in{'data'} =~ s/\r//g;
> &lock_file($in{'file'});
> &open_tempfile(FILE, ">$in{'file'}");
> &print_tempfile(FILE, $in{'data'});
> &close_tempfile(FILE);
> &unlock_file($in{'file'});
> if ($config{'test_manual'}) {
>         $err = &test_config();
>         if ($err) {
>                 &execute_command("mv $temp '$in{'file'}'");
>                 &error(&text('manual_etest', "<pre>$err</pre>"));
>                 }
>         }
> unlink($temp);
> &webmin_log("manual", undef, undef, { 'file' => $in{'file'} });
> &redirect("");
> -------------------------------------------------------------------
> #!/usr/bin/perl
> # allmanual_form.cgi
> # Display a text box for manually editing directives from one of the files
> 
> require './apache-lib.pl';
> &ReadParse();
> $access{'types'} eq '*' && $access{'virts'} eq '*' ||
>         &error($text{'manual_ecannot'});
> &ui_print_header(undef, $text{'manual_configs'}, "");
> 
> $conf = &get_config();
> @files = grep { -f $_ } &unique(map { $_->{'file'} } @$conf);
> 
> # ADD FILES TO EDIT OR DISPLAY IN editfiles.ini
> 
> $editfiles = &read_file_lines("editfiles.ini");
> foreach $editfile (@$editfiles) {
>         if ($editfile !~ /^#/ and $editfile !~ /^$|^\s+/)
>         {
>                 push(@files, $editfile);
>         }
> }
> $in{'file'} = $files[0] if (!$in{'file'});
> print "<form action=allmanual_form.cgi>\n";
> print "<input type=submit value='$text{'manual_file'}'>\n";
> print "<select name=file>\n";
> foreach $f (@files) {
>         if ($f =~ /^ro\s/) {
>                 $format = "style='font-style: italic'";
>         } else {
>                 $format = "";
>         }
>         printf "<option %s %s>%s\n",
>                 $format, $f eq $in{'file'} ? 'selected' : '', $f;
>         $found++ if ($f eq $in{'file'});
>         }
> print "</select>Files in italics are Read Only</form>\n";
> $found || &error($text{'manual_efile'});
> 
> if ($in{'file'} =~ /^ro\s/)
> {
>         print "<form action=allmanual_form.cgi method=post ",
>                 "enctype=multipart/form-data>\n";
>         $buttontype = "hidden";
>         $filename = $in{'file'};
>         $filename =~ s/^ro\s//;
> } else {
>         print "<form action=allmanual_save.cgi method=post ",
>                 "enctype=multipart/form-data>\n";
>         $buttontype = "submit";
>         $filename = $in{'file'};
> }
> print "<input type=hidden name=file value='$in{'file'}'>\n";
> print "<textarea name=data rows=20 cols=80 style='width:100%'>";
> open(FILE, $filename);
> while(<FILE>) { print &html_escape($_); }
> close(FILE);
> print "</textarea><br>\n";
> print "<input type=$buttontype value='$text{'save'}'>\n";
> print "</form>\n";
> 
> &ui_print_footer("", $text{'index_return'});
> 
> -- 
> No virus found in this outgoing message.
> Checked by AVG Free Edition.
> Version: 7.5.430 / Virus Database: 268.13.25/515 - Release Date: 11/3/2006
> 5:15 AM
>  
> 
> -------------------------------------------------------------------------
> Using Tomcat but need to do more? Need to support web services, security?
> Get stuff done quickly with pre-integrated technology to make your job
> easier
> Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
> -
> Forwarded by the Webmin development list at [email protected]
> To remove yourself from this list, go to
> http://lists.sourceforge.net/lists/listinfo/webadmin-devel

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
-
Forwarded by the Webmin development list at [email protected]
To remove yourself from this list, go to
http://lists.sourceforge.net/lists/listinfo/webadmin-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.