#!perl BEGIN { chdir('..'); } use strict; use warnings; use IO::File; use CGI ':standard'; use CGI::Carp 'fatalsToBrowser'; use File::Copy; require "lib_pl"; our ($program, $submit_i, $file_i, $password_i); our $debug = 0; # session variables our $session_data = {}; our ($uid, $password, $token, $session_code, $authenticated); our ($user); load_session(); $user = auth(); if (!$user->{is_admin}) { logout("`$uid' is not an administrator"); # does not return } hdr(title => "Edit Config File"); my $filename = param("filename"); if (!$filename || param("back")) { file_chooser(); } else { file_editor($filename); } ftr(); exit; #sub get_pass { # print tbl_tsv(<1}, "filename", \@files); my $b = buttons("load", "logout"); print tbl_tsv(<$file); my $link = a({href=>$url}, $file); $tbl .= "\t" . $link; $tbl .= "\n"; } out(tbl_tsv($tbl)); } sub file_editor { my ($filename) = @_; my $data = param("data"); if (param("save")) { save_data($filename, $data); } edit_data($filename); } sub edit_data { my ($filename) = @_; my $data = slurp($filename); $data =~ tr/\r//d; $data =~ s/\t/ /go; print hidden("filename", $filename); print Tbl( File => $filename, Content => textarea(-name=>'data', -columns=>80, -rows=>20, default=>$data), '' => buttons("save", "back")); } sub save_data { my ($filename, $data) = @_; backup($filename); $data =~ tr/\r//d; $data =~ s/\t/ /g; belch($filename, $data); msg("saved changes"); } sub strip_dot_conf { my ($a) = @_; $a =~ s/\.conf$//; return $a; }