⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 webftppages.pm

📁 本文件为Web-FTP的实现源代码 是cgi编程 使用perl为主 本软件适用于linux下
💻 PM
📖 第 1 页 / 共 3 页
字号:
    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}">      &nbsp;&nbsp;      <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}">      &nbsp;&nbsp;      <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}">      &nbsp;&nbsp;      <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">&nbsp;&nbsp;</TD>` unless $self->{conf}{hidetag};            push @Option, qq`<TD BGCOLOR="${\($colors[$i++%2])}" ALIGN=RIGHT WIDTH=150><FONT SIZE=2>$fnlink&nbsp;&nbsp;</TD>`;            push @Option, qq`<TD BGCOLOR="${\($colors[$i++%2])}" ALIGN=RIGHT><FONT SIZE=2>$d1 $d2 $d3&nbsp;&nbsp;</TD>` unless $self->{conf}{hidelastmod};            push @Option, qq`<TD BGCOLOR="${\($colors[$i++%2])}" ALIGN=RIGHT><FONT SIZE=2>$sz&nbsp;&nbsp;</TD>` unless $self->{conf}{hidesize};            push @Option, qq`<TD BGCOLOR="${\($colors[$i++%2])}" ALIGN=CENTER><FONT SIZE=2>$us:$gr&nbsp;&nbsp;</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 + -