$in{'omenus'}
|;
}
}
sub GetImages2{
my($i) = @_;
my $rn = &GetRealName($i);
my($url) = "$rooturl/$in{'d'}/$rn";
$url =~ s/http:\/\///i;
$url =~ s/\/+/\//g;
$url = 'http://'.$url;
my($size,$date,@s);
@s = stat("$rootpath/$rn");
$size = $s[7];
$date = &ctime($s[9]);
return if(! -e "$rootpath/$rn");
my ($nw,$nh,$height,$width) = &psize("$rootpath/$rn",50);
if($in{'type'} eq ''){
$in{'imgline'} = qq| |;
}
elsif($in{'type'} eq 'ii'){
$in{'ilink'} = qq||;
$in{'imgline'} = qq| |;
$in{'ilink2'} = qq||;
}
elsif($in{'type'} eq 'iii'){
$in{'ilink'} = qq||;
$in{'imgline'} = qq| |;
$in{'ilink2'} = qq||;
}
else{
$in{'ilink'} = qq||;
$in{'imgline'} = qq| |;
$in{'ilink2'} = qq||;
}
$in{'idem'} = qq|Dimensions: $height h x $width w|;
}
sub GetPath{
my($dir,@p2);
$in{'path'} = "$in{'d'}";
my (@f) = split("/",$in{'path'});
$in{'path'} = '/';
foreach my $i (@f){
$dir .= "/$i";
$dir =~ s/\/+/\//g;
push(@p2,"$i");
}
if($in{'command'} =~ /^t/){
$in{'path'} = "/templates".join("/",@p2);
}
elsif($in{'command'} =~ /^i/){
$in{'path'} = "/images".join("/",@p2);
}
else{
$in{'path'} = "/rootpath".join("/",@p2);
}
}
sub CF{
my($fname) = @_;
my($ftc,@ext,$bad, $extensions);
($in{'nd'} =~ /\.\./)&&(&PError("Error. Invalid directory path"));
($in{'nd'} =~ /\|/)&&(&PError("Error. Invalid directory path"));
($in{'nd'} =~ /\//)&&(&PError("Error. Invalid directory path"));
($in{'nf'} =~ /\.\./)&&(&PError("Error. Invalid directory path"));
($in{'nf'} =~ /\|/)&&(&PError("Error. Invalid directory path"));
($in{'nf'} =~ /\//)&&(&PError("Error. Invalid directory path"));
($in{'filename'} =~ /\.\./)&&(&PError("Error. Invalid directory path"));
($in{'filename'} =~ /\|/)&&(&PError("Error. Invalid directory path"));
($in{'filename'} =~ /\//)&&(&PError("Error. Invalid directory path"));
($in{'d'} =~ /\.\./)&&(&PError("Error. Invalid directory path"));
($in{'d'} =~ /\|/)&&(&PError("Error. Invalid directory path"));
($in{'file'} =~ /\.\./)&&(&PError("Error. Invalid directory path"));
($in{'file'} =~ /\|/)&&(&PError("Error. Invalid directory path"));
$bad=1;
if($in{'command'} eq 'tcopy'){
@ext = @text;
$ftc = $in{'nf'};
$extensions = $in{'textensions'};
}
elsif($in{'command'} eq 'icopy'){
@ext = @iext;
$ftc = $in{'nf'};
$extensions = $in{'iextensions'};
}
elsif($in{'command'} eq 'copy'){
@ext = @fext;
$ftc = $in{'nf'};
$extensions = $in{'fextensions'};
}
elsif($in{'command'} eq 'trename'){
@ext = @text;
$ftc = $in{'nf'};
$extensions = $in{'textensions'};
}
elsif($in{'command'} eq 'irename'){
@ext = @iext;
$ftc = $in{'nf'};
$extensions = $in{'iextensions'};
}
elsif($in{'command'} eq 'rename'){
@ext = @fext;
$ftc = $in{'nf'};
$extensions = $in{'fextensions'};
}
elsif($in{'command'} eq 'tupload'){
@ext = @text;
$ftc = $fname;
$fsize = $in{'tsize'}*1000000;
$extensions = $in{'textensions'};
}
elsif($in{'command'} eq 'iupload'){
@ext = @iext;
$ftc = $fname;
$fsize = $in{'isize'}*1000000;
$extensions = $in{'iextensions'};
}
elsif($in{'command'} eq 'upload'){
@ext = @fext;
$ftc = $fname;
$fsize = $in{'fsize'}*1000000;
$extensions = $in{'fextensions'};
}
elsif($in{'command'} eq 'createfile'){
@ext = @fext;
$ftc = $in{'nf'};
$fsize = $in{'fsize'}*1000000;
$extensions = $in{'fextensions'};
}
elsif($in{'command'} eq 'tcreatefile'){
@ext = @text;
$ftc = $in{'nf'};
$fsize = $in{'tsize'}*1000000;
$extensions = $in{'textensions'};
}
elsif($in{'command'} eq 'savechanges'){
@ext = @fext;
$ftc = $in{'nd'};
$fsize = $in{'fsize'}*1000000;
$extensions = $in{'fextensions'};
}
elsif($in{'command'} eq 'tsavechanges'){
@ext = @text;
$ftc = $in{'nd'};
$fsize = $in{'tsize'}*1000000;
$extensions = $in{'textensions'};
}
else{
$bad=0;
}
my ($oext) = $ftc =~ /\.(.*)$/;
$oext =~ tr/A-Z/a-z/;
foreach my $i (@ext){
($i eq $oext)&&($bad=0);
}
($extensions)&&($bad)&&(&PError("Error. You are only allowed $extensions file extensions."));
}
sub GetConfig{
open(DB,"<$cgipath/data/config.cgi");
my $config = ;
close DB;
($in{'fextensions'},$in{'fsize'},$in{'textensions'},$in{'tsize'},$in{'iextensions'},$in{'isize'},$in{'rextensions'},$in{'txt'},$in{'pdownload'}) = split("\t",$config);
($in{'ufextensions'})&&($in{'fextensions'} = $in{'ufextensions'});
($in{'utextensions'})&&($in{'textensions'} = $in{'utextensions'});
($in{'uiextensions'})&&($in{'iextensions'} = $in{'uiextensions'});
($in{'ufsize'})&&($in{'fsize'} = $in{'ufsize'});
($in{'utsize'})&&($in{'tsize'} = $in{'utsize'});
($in{'uisize'})&&($in{'isize'} = $in{'uisize'});
@fext = split(/,\s*/,$in{'fextensions'});
@text = split(/,\s*/,$in{'textensions'});
@iext = split(/,\s*/,$in{'iextensions'});
@rext = split(/,\s*/,$in{'rextensions'});
@txtext = split(/,\s*/,$in{'txt'});
}
sub GetTemplates{
if(($in{'atype'} eq 'admin')||($in{'utread'} eq 'checked')){
&GetFiles();
}
}
sub GetFiles{
my($dir) = @_;
my(@files);
("$templatepath/$dir" =~ /\.\./)&&(&PError("Error. Invalid path name."));
("$templatepath/$dir" =~ /\|/)&&(&PError("Error. Invalid path name."));
opendir(DIR,"$templatepath/$dir");
@files = readdir(DIR);
close dir;
foreach my $i (@files){
next if ($i =~ /^\./);
next if ($i =~ /^\_/);
$dir =~ s/\/+/\//g;
(-d "$templatepath/$dir/$i")?(&GetFiles("/$dir/$i")):($in{'templates'} .= qq|\n|);
}
}
sub GetLogin{
&GetCookies;
$in{'UserName'} = $cookie{'UserName'};
$in{'PassWord'} = $cookie{'PassWord'};
# if no password, then output the login screen
if(!$in{'UserName'}){
(!$in{'command'})&&($in{'command'} = 'manage');
&PageOut("$cgipath/t_login.htm");
exit;
}
# otherwise check to see if username and password are correct
if($windows){
if(($in{'UserName'} eq $username)&&($in{'PassWord'} eq $password)){
#good to go.
$in{'atype'} = 'admin';
return 1;
}
}
else{
if(($in{'UserName'} eq $username)&&(crypt($in{'PassWord'},'CS') eq $password)){
#good to go.
$in{'atype'} = 'admin';
return 1;
}
}
# check other users
(&CheckUserLogin)&&(return 1);
# password failed
&PError("Error. Invalid username or password");
}
sub CheckUserLogin{
my(@fields);
open(DB,"<$cgipath/data/users.cgi");
while(){
chomp;
@fields = split("\t",$_);
if($fields[0] eq $in{'UserName'}){
$in{'atype'} = $fields[2];
$in{'atype'} =~ tr/A-Z/a-z/;
$in{'ufdirectory'} = $fields[3];
$in{'ufread'} = $fields[4];
$in{'ufwrite'} = $fields[5];
$in{'ufextensions'} = $fields[6];
$in{'ufsize'} = $fields[7];
$in{'utdirectory'} = $fields[8];
$in{'utread'} = $fields[9];
$in{'utwrite'} = $fields[10];
$in{'utextensions'} = $fields[11];
$in{'utsize'} = $fields[12];
$in{'uidirectory'} = $fields[13];
$in{'uiread'} = $fields[14];
$in{'uiwrite'} = $fields[15];
$in{'uiextensions'} = $fields[16];
$in{'uisize'} = $fields[17];
$in{'ueditor'} = $fields[18];
$in{'furl'} = $fields[19];
$in{'turl'} = $fields[20];
$in{'iurl'} = $fields[21];
$in{'fquota'} = $fields[22];
$in{'lquota'} = $fields[23];
if($in{'fquota'}){
if((!$cookie{'isLogged'})||(($in{'command'} !~ /show/)&&($in{'command'} !~ /uo$/))){
&RecalQuota;
}
}
($in{'fquota'})&&(&CheckQuota);
last;
}
}
close DB;
if($windows){
if(($in{'UserName'} eq $fields[0])&&($in{'PassWord'} eq $fields[1])){
($in{'furl'})&&($rooturl = $in{'furl'});
($in{'turl'})&&($templateurl = $in{'turl'});
($in{'iurl'})&&($libraryurl = $in{'iurl'});
($in{'ufdirectory'})&&($rootpath = $in{'ufdirectory'});
($in{'utdirectory'})&&($templatepath = $in{'utdirectory'});
($in{'uidirectory'})&&($librarypath = $in{'uidirectory'});
$in{'UserName'} = $fields[0];
return 1;
}
}
else{
if(($in{'UserName'} eq $fields[0])&&(crypt($in{'PassWord'},'CS') eq $fields[1])){
#good to go.
($in{'furl'})&&($rooturl = $in{'furl'});
($in{'turl'})&&($templateurl = $in{'turl'});
($in{'iurl'})&&($libraryurl = $in{'iurl'});
($in{'ufdirectory'})&&($rootpath = $in{'ufdirectory'});
($in{'utdirectory'})&&($templatepath = $in{'utdirectory'});
($in{'uidirectory'})&&($librarypath = $in{'uidirectory'});
$in{'UserName'} = $fields[0];
return 1;
}
}
return 0;
}
sub RecalQuota{
&RecalcQuotas2($in{'ufdirectory'});
chdir($cgipath);
##update global used
my(@l);
open(DB,"+<$cgipath/data/users.cgi");
while(){
my @f = split("\t",$_);
if($f[0] ne $in{'UserName'}){
push(@l,$_);
}
else{
$f[23]=$quota;
my $newentry = join("\t",@f);
push(@l,"$newentry\n");
}
}
seek(DB,0,0);
if(@l){
foreach my $i (@l){
print DB $i;
}
}
truncate(DB,tell(DB));
close DB;
}
sub RecalcQuotas2{
my($cdir) = @_;
my(@files,$i);
opendir(DIR,$cdir);
@files = readdir(DIR);
close DIR;
($cdir eq '.')?($cdir=''):($cdir .= '/');
foreach my $i (@files){
next if ($i =~ /^\./);
next if ($i =~ /^\_/);
if(-d "$cdir$i"){&RecalcQuotas2("$cdir$i");}
else{
$quota += (stat("$cdir$i"))[7];
}
}
}
sub CheckQuota{
if(($in{'fquota'})&&($in{'lquota'} > ($in{'fquota'} * 1000000))){
if($in{'command'} =~ /copy/){
&PError("Quota Exceeded! Please remove some of your files before proceeding");
}
if($in{'command'} =~ /create/){
&PError("Quota Exceeded! Please remove some of your files before proceeding");
}
if($in{'command'} =~ /save/){
&PError("Quota Exceeded! Please remove some of your files before proceeding");
}
if($in{'command'} =~ /upload/){
&PError("Quota Exceeded! Please remove some of your files before proceeding");
}
}
else{
my $limit = ($in{'fquota'} * 1000000) - $in{'lquota'};
$limit = sprintf("%.2f",$limit/1000000);
$in{'showquota'} = "Disk Useage: $limit MB Remaining ";
}
}
sub Login{
$in{'command'} = 'manage';
&PageOut("$cgipath/t_login.htm");
exit;
}
sub GetRealName{
my($filename) = @_;
my(@array,$real_name);
if ($filename =~ /\//) {
@array = split(/\//, $filename);
$real_name = pop(@array);
} elsif ($filename =~ /\\/) {
@array = split(/\\/, $filename);
$real_name = pop(@array);
} else {
$real_name = "$filename";
}
return $real_name;
}
sub Setup{
use Cwd;
$in{'cgipath'} = Cwd::cwd();
$in{'cgiurl'} = "$ENV{'HTTP_HOST'}/$ENV{'SCRIPT_NAME'}";
$in{'cgiurl'} =~ s/\/\//\//g;
$in{'cgiurl'} = "http://".$in{'cgiurl'};
$in{'cgiurl'} =~ s/\/csPublisher\.cgi//i;
$in{'rooturl'} = "http://$ENV{'HTTP_HOST'}";
$in{'rootpath'} = "$ENV{'DOCUMENT_ROOT'}";
if(($^O !~ /win/i)&&($in{'cgipath'} =~ /cgi\-bin/i)){
$in{'templateurl'} = "http://$ENV{'HTTP_HOST'}/cgi-script/csPublisher/templates";
$in{'templatepath'} = "$ENV{'DOCUMENT_ROOT'}/cgi-script/csPublisher/templates";
$in{'libraryurl'} = "http://$ENV{'HTTP_HOST'}/cgi-script/csPublisher/library";
$in{'librarypath'} = "$ENV{'DOCUMENT_ROOT'}/cgi-script/csPublisher/library";
$in{'csspath'} = "http://$ENV{'HTTP_HOST'}/cgi-script/csPublisher/css";
$in{'cssurl'} = "$ENV{'DOCUMENT_ROOT'}/cgi-script/csPublisher/css";
$in{'imageurl'} = "http://$ENV{'HTTP_HOST'}/cgi-script/csPublisher/images";
}
else{
$in{'templateurl'} = "$in{'cgiurl'}/templates";
$in{'templatepath'} = "$in{'cgipath'}/templates";
$in{'libraryurl'} = "$in{'cgiurl'}/library";
$in{'librarypath'} = "$in{'cgipath'}/library";
$in{'csspath'} = "$in{'cgipath'}/css";
$in{'cssurl'} = "$in{'cgiurl'}/css";
$in{'imageurl'} = "$in{'cgiurl'}/images";
}
&PageOut("t_setup.htm");
exit;
}
# _____________________________________________________________________________
sub SaveSetup{
(-e "$basepath/setup.cgi")&&(&PError("Error. Access Denied"));
$in{'setup'} =~ s/\r*\n/\n/g;
(!$in{'susername'})&&(&PError("Error. Please enter a username."));
(!$in{'spassword'})&&(&PError("Error. Please enter a password."));
($in{'spassword'} ne $in{'spassword'})&&(&PError("Error. Please retype password."));
if($^O !~ /win/i){
$in{'spassword'} = crypt($in{'spassword'},'CS');
}
open(SETUP,">$basepath/setup.cgi")||(($^O !~ /win/i)?(&PError("Error. Permission denied saving setup.cgi file. \\nPlease contact your systems administrator to give the webserve write access to the csPublisher directory.")):(&PError("Error. Permission denied saving setup.cgi file. \\nYou will need to chmod the csPublisher directory to 777")));
($flock)&&(flock(SETUP,2));
print SETUP "\$cgiurl='$in{'scgiurl'}';\n";
print SETUP "\$cgipath='$in{'scgipath'}';\n";
print SETUP "\$rooturl='$in{'srooturl'}';\n";
print SETUP "\$rootpath='$in{'srootpath'}';\n";
print SETUP "\$templateurl='$in{'stemplateurl'}';\n";
print SETUP "\$templatepath='$in{'stemplatepath'}';\n";
print SETUP "\$libraryurl='$in{'slibraryurl'}';\n";
print SETUP "\$librarypath='$in{'slibrarypath'}';\n";
print SETUP "\$cssurl='$in{'scssurl'}';\n";
print SETUP "\$csspath='$in{'scsspath'}';\n";
print SETUP "\$imageurl='$in{'simageurl'}';\n";
print SETUP "\$username='$in{'susername'}';\n";
print SETUP "\$password='$in{'spassword'}';\n";
print SETUP "1;\n";
($flock)&&(flock(SETUP,8));
print <<"EOF";
EOF
exit;
}
|