3 # Display a text box for manually editing directives
5 require './proftpd-lib.pl';
9 $global = &find_directive_struct("Global", $conf);
10 $conf = $global->{'members'};
11 if (defined($in{'limit'})) {
12 # limit within the global section
14 $d = $conf->[$in{'idx'}];
15 $l = $d->{'members'}->[$in{'limit'}];
16 $title = &text('limit_header4', $l->{'value'},
20 $l = $conf->[$in{'limit'}];
21 $title = &text('limit_header7', $l->{'value'});
23 $return = "limit_index.cgi"; $rmsg = $text{'limit_return'};
25 $start = $l->{'line'}+1; $end = $l->{'eline'}-1;
28 # directory in the global section
29 $d = $conf->[$in{'idx'}];
30 $title = &text('dir_header5', $d->{'words'}->[0]);
31 $return = "dir_index.cgi"; $rmsg = $text{'dir_return'};
33 $start = $d->{'line'}+1; $end = $d->{'eline'}-1;
36 elsif (defined($in{'virt'})) {
37 if (defined($in{'limit'})) {
38 # limit, maybe within a directory
39 ($conf, $v) = &get_virtual_config($in{'virt'});
41 $anon = &find_directive_struct("Anonymous", $conf);
42 $conf = $anon->{'members'};
44 if ($in{'idx'} ne '') {
45 $dir = $conf->[$in{'idx'}];
46 $conf = $dir->{'members'};
48 $l = $conf->[$in{'limit'}];
51 &text('limit_header4', $ln, $dir->{'words'}->[0]) :
53 &text('limit_header1', $ln, $v->{'words'}->[0]) :
54 &text('limit_header2', $ln);
55 $return = "limit_index.cgi"; $rmsg = $text{'limit_return'};
57 $start = $l->{'line'}+1; $end = $l->{'eline'}-1;
59 elsif (defined($in{'idx'})) {
60 # directory within virtual server
61 ($vconf, $v) = &get_virtual_config($in{'virt'});
63 $anon = &find_directive_struct("Anonymous", $vconf);
64 $vconf = $anon->{'members'};
66 $d = $vconf->[$in{'idx'}];
67 $dn = $d->{'words'}->[0];
68 $title = $in{'anon'} ? &text('dir_header4', $dn) : $in{'virt'} ?
69 &text('dir_header1', $dn, $v->{'words'}->[0]) :
70 &text('dir_header2', $dn);
71 $return = "dir_index.cgi"; $rmsg = $text{'dir_return'};
73 $start = $d->{'line'}+1; $end = $d->{'eline'}-1;
77 ($conf, $v) = &get_virtual_config($in{'virt'});
78 $title = $in{'virt'} eq '' ? $text{'virt_header2'} :
79 &text('virt_header1', $v->{'value'});
80 $return = "virt_index.cgi"; $rmsg = $text{'virt_return'};
82 $start = $v->{'line'}+1; $end = $v->{'eline'}-1;
86 # Something in a .ftpaccess file
87 if (defined($in{'limit'})) {
88 # limit within .ftpaccess file
89 $hconf = &get_ftpaccess_config($in{'file'});
90 $l = $hconf->[$in{'limit'}];
92 $start = $l->{'line'}+1; $end = $l->{'eline'}-1;
93 $title = &text('limit_header6', $l->{'value'},
94 "<tt>$in{'file'}</tt>");
95 $return = "limit_index.cgi";
96 $rmsg = $text{'limit_return'};
101 $title = &text('ftpindex_header', "<tt>$in{'file'}</tt>");
102 $return = "ftpaccess_index.cgi";
103 $rmsg = $text{'ftpindex_return'};
106 &ui_print_header($title, $text{'manual_title'}, "",
107 undef, undef, undef, undef, &restart_button());
109 print &text('manual_header', "<tt>$file</tt>"),"<p>\n";
110 print "<form action=manual_save.cgi method=post enctype=multipart/form-data>\n";
111 foreach $h ('virt', 'idx', 'file', 'limit', 'anon', 'global') {
112 if (defined($in{$h})) {
113 print "<input type=hidden name=$h value='$in{$h}'>\n";
114 push(@args, "$h=$in{$h}");
117 $args = join('&', @args);
119 print "<textarea rows=15 cols=80 name=directives>\n";
120 $lref = &read_file_lines($file);
121 if (!defined($start)) {
125 for($i=$start; $i<=$end; $i++) {
126 print &html_escape($lref->[$i]),"\n";
128 print "</textarea><br><input type=submit value=\"$text{'save'}\"></form>\n";
130 &ui_print_footer("$return?$args", $rmsg);