📄 webftppages.pm
字号:
for(@{$self->{conf}{editors}}) { next unless $_->[0]; if($_->[1]) { $OUT .= qq`<TR><TD><FONT SIZE="-1"><A HREF="javascript:edit('$_->[0]')">$_->[1]</A></TD></TR>`; } if($_->[2]) { $OUT .= qq`<TR><TD><FONT SIZE="-1"><A HREF="javascript:newfile('$_->[0]')">$_->[2]</A></TD></TR>`; } } $OUT .= qq`<TR><TD><FONT SIZE="-1"><A HREF="javascript:site()">$self->{conf}{lang}{site}</A></TD></TR>` unless $self->{conf}{hidesite}; $OUT .= qq`<TR><TD><FONT SIZE="-1"><A HREF="javascript:messages()">$self->{conf}{lang}{messages}</A></TD></TR>` unless $self->{conf}{hidemessages}; $OUT .= qq`<TR><TD><FONT SIZE="-1"><A HREF="$self->{conf}{SCRIPT}$self->{conf}{COOKIE}/QUIT" TARGET="_top"><B>QUIT</B></A></TD></TR>`; $OUT .= q`</TABLE></BODY></HTML>`; return \$OUT;}sub mkdirScreen { my $self = shift; \qq`<HTML> <HEAD> <TITLE>$self->{conf}{lang}{version} $self->{VERSION}: $self->{conf}{lang}{new_directory} $self->{HOSTNAME}</TITLE> </HEAD><BODY BGCOLOR="$self->{conf}{backgroundcolor}" TEXT="$self->{conf}{textcolor}" VLINK="$self->{conf}{visitedlinkcolor}" LINK="$self->{conf}{linkcolor}"> <H3>$self->{conf}{lang}{version} $self->{VERSION}: $self->{conf}{lang}{new_directory_in} $self->{HOSTNAME}:$self->{CURRENTDIR}</H3> <FORM TARGET=MAIN ENCTYPE="multipart/form-data" ACTION="$self->{conf}{SCRIPT}$self->{conf}{COOKIE}/POST" METHOD=POST> <B>$self->{conf}{lang}{directory_name}:</B> <INPUT NAME="Directories" SIZE=40> <BR> <INPUT TYPE=SUBMIT NAME="action" VALUE="$self->{conf}{lang}{make_directory}"> <A HREF="$self->{conf}{SCRIPT}$self->{conf}{COOKIE}/MAIN"><FONT SIZE=+2>$self->{conf}{lang}{cancel}</FONT></A> </FORM> </BODY></HTML>`;}sub moveScreen { my $self = shift; my $reply = qq`<HTML> <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <HEAD> <TITLE>$self->{conf}{lang}{version} $self->{VERSION}: $self->{conf}{lang}{moving_files_on} $self->{HOSTNAME}</TITLE> </HEAD><BODY BGCOLOR="$self->{conf}{backgroundcolor}" TEXT="$self->{conf}{textcolor}" VLINK="$self->{conf}{visitedlinkcolor}" LINK="$self->{conf}{linkcolor}"> <H3>$self->{conf}{lang}{version} $self->{VERSION}: $self->{conf}{lang}{moving_files_within} $self->{HOSTNAME}:$self->{CURRENTDIR}</H3> <BR NOSHADE> <FORM ENCTYPE="multipart/form-data" ACTION="$self->{conf}{SCRIPT}$self->{conf}{COOKIE}/POST" METHOD=POST>`; foreach my $file (@_) { $file = $self->unencode($file); (my $str = $self->{conf}{lang}{rename_file_to}) =~ s/__file__/$file/g; $reply .= " $str <INPUT NAME=\"Directories\">\n" . " <BR>\n" . " <INPUT TYPE=HIDDEN NAME=\"Files\" VALUE=\"$file\">\n"; } $reply .= qq` <INPUT TYPE=SUBMIT NAME="action" VALUE="$self->{conf}{lang}{move_button}"> <A HREF="$self->{conf}{SCRIPT}$self->{conf}{COOKIE}/MAIN"><FONT SIZE=+2>$self->{conf}{lang}{cancel}</FONT></A> </form> </BODY></HTML>`; \$reply;}sub permsScreen { my $self = shift; my @colors = ($self->{conf}{oddcolcolor},$self->{conf}{evencolcolor}); my $reply = qq`<HTML> <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <HEAD> <TITLE>$self->{conf}{lang}{version} $self->{VERSION}: $self->{conf}{lang}{altering_permissions_on} $self->{HOSTNAME}</TITLE> </HEAD><BODY BGCOLOR="$self->{conf}{backgroundcolor}" TEXT="$self->{conf}{textcolor}" VLINK="$self->{conf}{visitedlinkcolor}" LINK="$self->{conf}{linkcolor}"> <H3>Web-FTP $self->{VERSION}: $self->{conf}{lang}{altering_permissions_within} $self->{HOSTNAME}:$self->{CURRENTDIR}</H3> <BR NOSHADE> <FORM ENCTYPE="multipart/form-data" ACTION="$self->{conf}{SCRIPT}$self->{conf}{COOKIE}/POST" METHOD=POST><TABLE>`; my $i = 0; foreach my $file (@_) { my $f = $self->unencode($file); my(%c,@list,$list,$not_simple,$perm); $perm = $self->{PERMISSIONS}{$f}; my @perms = split '', $perm; if($perms[0] !~ /[d-]/) { $not_simple = 1; } for(2,5,8) { my($v); if($perms[$_] !~ /[w-]/) { $not_simple = 1; } $v = 2**(9-$_); $c{$v} = 'CHECKED' if $perms[$_] eq 'w'; } for(3,6,9) { my($v); if($perms[$_] !~ /[x-]/) { $not_simple = 1; } $v = 2**(9-$_); $c{$v} = 'CHECKED' if $perms[$_] eq 'x'; } for(1,4,7) { my($v); if($perms[$_] !~ /[r-]/) { $not_simple = 1; } $v = 2**(9-$_); $c{$v} = 'CHECKED' if $perms[$_] eq 'r'; } $reply .= qq`<TR><TD>$self->{conf}{lang}{new_permissions_for} <B>$f</B> ($perm):<INPUT TYPE=HIDDEN NAME="Files" VALUE="$f"></TD></TR>`; $reply .= qq`<TR><TD ALIGN=CENTER><INPUT NAME="Directories" SIZE=4>\n$self->{conf}{lang}{octal_advanced}</TD></TR>` unless $self->{conf}{hideoctalperms}; $reply .= qq`<TR><TD><TABLE BORDER=1><TR><TH BGCOLOR="$colors[0]" COLSPAN=3>$self->{conf}{lang}{owner}</TH><TH BGCOLOR="$colors[1]" COLSPAN=3>$self->{conf}{lang}{group}</TH><TH BGCOLOR="$colors[0]" COLSPAN=3>$self->{conf}{lang}{world}</TH></TR><TR><TD BGCOLOR="$colors[0]" ALIGN=CENTER>$self->{conf}{lang}{read}</TD><TD BGCOLOR="$colors[0]" ALIGN=CENTER>$self->{conf}{lang}{write}</TD><TD BGCOLOR="$colors[0]" ALIGN=CENTER>$self->{conf}{lang}{execute}</TD><TD BGCOLOR="$colors[1]" ALIGN=CENTER>$self->{conf}{lang}{read}</TD><TD BGCOLOR="$colors[1]" ALIGN=CENTER>$self->{conf}{lang}{write}</TD><TD BGCOLOR="$colors[1]" ALIGN=CENTER>$self->{conf}{lang}{execute}</TD><TD BGCOLOR="$colors[0]" ALIGN=CENTER>$self->{conf}{lang}{read}</TD><TD BGCOLOR="$colors[0]" ALIGN=CENTER>$self->{conf}{lang}{write}</TD><TD BGCOLOR="$colors[0]" ALIGN=CENTER>$self->{conf}{lang}{execute}</TD></TR><TR><TD BGCOLOR="$colors[0]" ALIGN=CENTER><INPUT TYPE=CHECKBOX NAME="perm_$i" VALUE="256" $c{256}></TD><TD BGCOLOR="$colors[0]" ALIGN=CENTER><INPUT TYPE=CHECKBOX NAME="perm_$i" VALUE="128" $c{128}></TD><TD BGCOLOR="$colors[0]" ALIGN=CENTER><INPUT TYPE=CHECKBOX NAME="perm_$i" VALUE="64" $c{64}></TD><TD BGCOLOR="$colors[1]" ALIGN=CENTER><INPUT TYPE=CHECKBOX NAME="perm_$i" VALUE="32" $c{32}></TD><TD BGCOLOR="$colors[1]" ALIGN=CENTER><INPUT TYPE=CHECKBOX NAME="perm_$i" VALUE="16" $c{16}></TD><TD BGCOLOR="$colors[1]" ALIGN=CENTER><INPUT TYPE=CHECKBOX NAME="perm_$i" VALUE="8" $c{8}></TD><TD BGCOLOR="$colors[0]" ALIGN=CENTER><INPUT TYPE=CHECKBOX NAME="perm_$i" VALUE="4" $c{4}></TD><TD BGCOLOR="$colors[0]" ALIGN=CENTER><INPUT TYPE=CHECKBOX ONCLICK="if(this.checked) { return confirm('$self->{conf}{lang}{world_writeable_query}') }" NAME="perm_$i" VALUE="2" $c{2}></TD><TD BGCOLOR="$colors[0]" ALIGN=CENTER><INPUT TYPE=CHECKBOX NAME="perm_$i" VALUE="1" $c{1}></TD></TABLE></TD></TR>` unless $not_simple; $i++; } $reply .= qq` </TABLE> <INPUT TYPE=SUBMIT NAME="action" VALUE="$self->{conf}{lang}{change_permissions}"> <A HREF="$self->{conf}{SCRIPT}$self->{conf}{COOKIE}/MAIN"><FONT SIZE=+2>$self->{conf}{lang}{cancel}</FONT></A> </FORM> </BODY></HTML>`; \$reply;}sub frameset { my $self = shift; \qq`<HTML> <HEAD> <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <TITLE>Web-FTP $self->{VERSION}: $self->{HOSTNAME}</TITLE></HEAD><FRAMESET BORDER=0 COLS="*" ROWS="75,*,35"><FRAME NORESIZE NAME=HEAD SCROLLING="NO" SRC="$self->{conf}{SCRIPT}$self->{conf}{COOKIE}/HEAD"></FRAME><FRAMESET BORDER=0 COLS="125,*" ROWS"*"><FRAME NORESIZE NAME=NAVBAR SRC="$self->{conf}{SCRIPT}$self->{conf}{COOKIE}/NAVBAR"></FRAME><FRAME NORESIZE NAME=MAIN SRC="$self->{conf}{SCRIPT}$self->{conf}{COOKIE}/MAIN"></FRAME></FRAMESET><FRAME NORESIZE NAME=FOOT SCROLLING="NO" SRC="$self->{conf}{SCRIPT}$self->{conf}{COOKIE}/FOOT"></FRAME></FRAMESET></HTML>`;}sub getDirectory { my $self = shift; my (@DirEntries, @FileEntries); %{$self->{PERMISSIONS}} = ();# print STDERR "Direntries: @_\n"; foreach my $Entry (@_) { my($pr,$fs,$us,$gr,$sz,$d1,$d2,$d3,$fn); # This line is FTPD dependant. I hope that doesn't matter too much. if($self->{conf}{servertype} eq 'MS') { ($d1,$d3,$sz,$fn) = split / +/, $Entry, 4; } else { if($self->{dircheck} < 2) { ($pr,$fs,$us,$gr,$sz,$d1,$d2,$d3,$fn) = split / +/, $Entry, 9; if(!$self->{dircheck} && ($gr || $sz)) { $self->{dircheck} = ($gr =~ /^\d+$/ && $sz !~ /^\d+$/ ? 2 : 1); } } if($self->{dircheck} == 2) { ($pr,$fs,$us,$sz,$d1,$d2,$d3,$fn) = split / +/, $Entry, 8; } }# Bill Gate's Version # 10-23-99 02:41PM <DIR> Anwendungsdaten $self->{PERMISSIONS}{$fn} = $pr if $pr;# print STDERR "$pr,$fs,$us,$gr,$sz,$d1,$d2,$d3,$fn\n"; my @colors = ($self->{conf}{oddcolcolor},$self->{conf}{evencolcolor}); if($fn) { my $i = 0; my($fnlink,$fnq,@Option); my $type = 'Files'; if($pr) { my @pr = unpack('a1a3a3a3', $pr); $pr = "$pr[0]<B>$pr[1]</B>$pr[2]<B>$pr[3]</B>"; $type = 'Directories' if $pr[0] eq 'd'; if($pr[0] eq 'l') { my($foo) = 1 if($fn =~ m|/$|); $fn =~ s/\s+->.*$//; if ($foo) { $type = 'Directories'; } else { $type = 'Directories' unless $self->{conf}{FTP}->size($fn); } } } else { $type = 'Directories' if $sz eq '<DIR>'; }# print STDERR "Type: $type\n"; $fnq = $self->encode($fn); if($type eq 'Directories') { $fnlink = qq`<A TARGET=MAIN HREF="$self->{conf}{SCRIPT}$self->{conf}{COOKIE}/CDTO?$fnq">$fn</A>`; } else { $fnlink = qq`<A HREF="$self->{conf}{SCRIPT}$self->{conf}{COOKIE}/DNLD?$fnq">$fn</A>`; } push @Option, q`<TR>`; push @Option, qq`<TD BGCOLOR="${\($colors[$i++%2])}" ALIGN=CENTER><FONT SIZE=1><INPUT TYPE=CHECKBOX NAME=$type VALUE="$fnq"> </TD>` unless $self->{conf}{hidetag}; push @Option, qq`<TD BGCOLOR="${\($colors[$i++%2])}" ALIGN=RIGHT WIDTH=150><FONT SIZE=2>$fnlink </TD>`; push @Option, qq`<TD BGCOLOR="${\($colors[$i++%2])}" ALIGN=RIGHT><FONT SIZE=2>$d1 $d2 $d3 </TD>` unless $self->{conf}{hidelastmod}; push @Option, qq`<TD BGCOLOR="${\($colors[$i++%2])}" ALIGN=RIGHT><FONT SIZE=2>$sz </TD>` unless $self->{conf}{hidesize}; push @Option, qq`<TD BGCOLOR="${\($colors[$i++%2])}" ALIGN=CENTER><FONT SIZE=2>$us:$gr </TD>` unless $self->{conf}{hideowngrp}; my $perm = ''; $perm .= qq`<A TARGET=MAIN HREF="$self->{conf}{SCRIPT}$self->{conf}{COOKIE}/PERM?$fnq">` unless $self->{conf}{hidepermbutton}; $perm .= $pr; $perm .= q`</A>` unless $self->{conf}{hidepermbutton}; push @Option, qq`<TD BGCOLOR="${\($colors[$i++%2])}"><FONT SIZE=2>$perm</TD>` unless $self->{conf}{hidepermissions}; push @Option, q`</TR>`; if($type eq 'Directories') { push @DirEntries, @Option; } else { push @FileEntries, @Option; } } } $self->{list}{DirEntries} = \@DirEntries; $self->{list}{FileEntries} = \@FileEntries;}sub encode { $_ = $_[1]; s/(\W)/'%'.sprintf("%lx", ord($1))/ge; return $_;}sub unencode { $_ = $_[1]; s/\%([\da-fA-F][\da-fA-F])/chr(hex($1))/ge; return $_;}sub html_header { my $self = shift; qq`<HTML><BODY BGCOLOR="$self->{conf}{backgroundcolor}" TEXT="$self->{conf}{textcolor}" VLINK="$self->{conf}{visitedlinkcolor}" LINK="$self->{conf}{linkcolor}">`;}sub html_footer { my $self = shift; q` </BODY></HTML>`;}1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -