#!/usr/bin/perl --
$incs_folder_PATH='incs'; #relative or absolute path to incs folder
$txts_folder_PATH='txts'; #relative or absolute path to txts folder
$imgs_folder_URL='/editor/imgs'; #virtual or full URL to imgs folder
# On Windows servers the above $incs_folder_PATH & $txts_folder_PATH above must be ABSOULTE paths
# The $incs_folder_PATH & $txts_folder_PATH will INSTEAD be set by the following if they ARE installed in the same path as edit.cgi
$full_urls=0; #Change to 1 if you want images and links to save full URLs instead of relative/virtual URLs
$smtp_server=''; #enter the SMTP server if on Windows and if you will email form submissions
$smtp_username=''; #enter the SMTP username for authentication if on Windows and if you will email form submissions
$smtp_password=''; #enter the SMTP password for authentication if on Windows and if you will email form submissions
#################### DO NOT EDIT BELOW THIS LINE ###################
if($^O eq 'MSWin32'){if($ENV{'PerlXS'} =~ /PerlIS/i){print "HTTP/1.0 200 OK\n"}}
($program_dir) = $0 =~ m`^(.*)[/\\]`;
$program_dir =~ s`/[^/]+$``;$program_dir =~ s`\\`/`g;$program_dir =~ s`^\w:``g;
if($ENV{'SCRIPT_FILENAME'} && !$program_dir){$program_dir=$ENV{'SCRIPT_FILENAME'};$program_dir =~ s`/[^/]+$``;}
elsif($program_dir eq''){`pwd` =~ /(.*)/;$program_dir=$1}
if(-d $program_dir){
$root=$program_dir;$root=~ s`/[^/]+$``;
}else{
$pi=$ENV{'PATH_INFO'} || $ENV{'SCRIPT_NAME'};
$pt=$ENV{'PATH_TRANSLATED'} || $ENV{'SCRIPT_FILENAME'};
$pt=~s`(.+)$pi`$1`;
if(-d $pt){$root=$pt;$root =~ s`\\`/`g;$root=~ s`^\w:``g;}
}
if($ENV{'DOCUMENT_ROOT'}){$root=$ENV{'DOCUMENT_ROOT'}}
$test=$program_dir."/".$incs_folder_PATH;
if(-d $test){
$incs_folder_PATH="$program_dir/incs";
$txts_folder_PATH="$program_dir/txts";
}
$http="http://";
push(@INC,$incs_folder_PATH);
$host=$http.$ENV{'HTTP_HOST'};
$host_=$ENV{'HTTP_HOST'};
$uttf=$host.$ENV{'SCRIPT_NAME'};
$utif=$imgs_folder_URL;
$close_img="modal_close";
$uns='unselectable="on"';
$uns_="unselectable='on'";
$unz=qq~unselectable="on" style="cursor:pointer"~;
$button_class=qq~onmouseup=this.className="button_center" onmousedown=this.className="button_center_" class=button_center~;
&browser;
&config;
$qs=$ENV{'QUERY_STRING'};
$qs=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
if($qs eq ''){&doLogin}
($action,$params)=split(/=/,$qs,2);
&$action;
sub admin_login{require 'adminLogin.htm';}
sub check_user{require 'checkUser.htm';&respond}
sub deleteFolder{require 'deleteFolder.htm';&respond}
sub deleteImage{require 'deleteImage.htm';&respond}
sub deletePage{require 'deletePage.htm';&respond}
sub doCreateFolder{require 'doCreateFolder.htm'}
sub doLogin{require 'getToolbar.htm';&respond}
sub doPassword{require 'doPassword.htm';&respond}
sub doRename{require 'doRename.htm';}
sub doSaveAs{require 'doSaveAs.htm'}
sub doUpload{require 'doUpload.htm';&holeRespond}
sub download{require 'forceDownload.htm'}
sub editTable{require 'editTable.htm';&respond}
sub email{require 'doSubmission.htm'}
sub getBackups{require 'getBackups.htm';&respond}
sub getChars{require 'getChars.htm';&respond}
sub getColor{require 'getColor.htm';&respond}
sub getColorPad{require 'getColorPad.htm';&respond}
sub getFonts{require 'getFonts.htm';&respond}
sub getForm{require 'getForm.htm';&respond}
sub getInput{require 'getInput.htm';&respond}
sub getLogin{require 'getLogin.htm';&respond}
sub getLinker{require 'getLinker.htm';&respond}
sub getOpenfolder{require 'getOpenfolder.htm';&respond}
sub getPassword{require 'getPassword.htm';&respond}
sub getPhotos{require 'getPhotos.htm';&respond}
sub getSave{require 'getSave.htm';&respond}
sub getSaveAs{require 'getSaveAs.htm';&respond}
sub getTablePad{require 'getTablePad.htm';&respond}
sub getUnformat{require 'getUnformat.htm';&respond}
sub getUpdate{require 'getUpdate.htm';&respond}
sub getUpload{require 'getUpload.htm';&respond}
sub htmlEdit{require 'htmlEdit.htm';&respond}
sub mailto{require 'mailTo.htm';&holeRespond}
sub pathTree{require 'pathTree.htm'}
sub saveWrite{require 'saveWrite.htm';&holeRespond}
sub sendmail{require 'sendMail.htm';}
sub userhelp{require 'userHelp.htm';&respond}
sub userList{require 'userList.htm'}
sub routines{require 'routines.htm'}
sub update_file{require 'updateFile.htm'}
sub respond{
print "Cache-control: no-cache\n";
print "Pragma: no-cache\n";
print "Content-type: text/html\n\n";
print "$RETURN";
exit;
}#respond
sub holeRespond{
print "Cache-control: no-cache\n";
print "Pragma: no-cache\n";
print "Content-type: text/html\n\n";
print qq~~;
exit;
}#holeRespond
sub holealert{
print "Cache-control: no-cache\n";
print "Pragma: no-cache\n";
print "Content-type: text/html\n\n";
print qq~~;
exit;
}#alert
sub alert{
print "Cache-control: no-cache\n";
print "Pragma: no-cache\n";
print "Content-type: text/html\n\n";
print qq~byId('yesBut').innerHTML="OK"
active_alert="$_[0]"
doAlert("alert")
active_function = new Function("closeAlert()")~;
exit;
}#alert
sub browser{
if($ENV{'HTTP_USER_AGENT'} =~ "MSIE"){
$isIE="1";
$abs=qq~absmiddle~;
}else{
$isFF="1";
$abs=qq~absmiddle~;
}
}#browser
sub get_cookie{
@jar = split(/\;/,$ENV{'HTTP_COOKIE'});
foreach $cookie (@jar){
$cookie =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
($name, $value) = split(/=/,$cookie);
$name =~ s/^\s*//;
$cookie{$name}=$value;
}
}#get_cookie
sub config{
$txts_folder_PATH=~s`/$``;
$config_txt=$txts_folder_PATH."/config.txt";
$users_txt=$txts_folder_PATH."/users.txt";
$custom_txt=$txts_folder_PATH."/custom.txt";
open(CONF,$config_txt);
while(){
chomp();
($n,$v)=split(/=/);
$$n=$v;
}
open(CUST,$custom_txt);
while(){
chomp();
($n,$v)=split(/=/);
$$n=$v;
}
}#config
sub setUp{
print "Cache-control: no-cache\n";
print "Pragma: no-cache\n";
print "Content-type: text/html\n\n";
open(SET,"$incs_folder_PATH/setUp.htm");
while(){print}
}#setUp
sub prompt{
print "Cache-control: no-cache\n";
print "Pragma: no-cache\n";
print "Content-type: text/html\n\n";
print qq~default_file_name="$default_file_name"
isIE="$isIE";isFF="$isFF"
kyz=''
key="272727"
key_='131313'
document.onkeypress=katch
function katch(evt){
var e = evt? evt : window.event;
if(e.keyCode){kyz+=e.keyCode}
else{kyz+=e.which}
if(kyz.indexOf(key)!=-1){kyz='';editLogin()}
if(kyz.indexOf(key_)!=-1){kyz='';editLogin()}
if(kyz.length>100){kyz=''}
}
function editLogin(){
checkFlash()
if(self!=top && parent.location.href.match("$uttf")){return false}
if(location.pathname.lastIndexOf("/")==location.pathname.length-1){
if(default_file_name==''){
alert("There is no file name in the browser's address field\\n\\nTo edit a file, the file's name must be in the browser's address field");return false;
}
}
var div = document.createElement( 'div' );
div.setAttribute( 'id', 'loginplace' );
document.getElementsByTagName( 'body' )[0].appendChild( div );
var URL="$uttf?getLogin"
JITc(URL)
}
function JITc(URL){
if(document.getElementById('JAX')){
document.getElementsByTagName('head')[0].removeChild(document.getElementById('JAX'))
};
script = document.createElement('script');
script.type = 'text/javascript';
script.defer = true;
script.id = 'JAX';
script.src=URL
document.getElementsByTagName('head')[0].appendChild(script);
}
function checkFlash(){
for(i=0;i){
if(/$ceuser=/){chomp();$usr=$_;last}
}
close(USRS);
($ceuser,$pw,$urls,$basic,$imgfldr,$utype,$nu_folders,$del_folders,$del_files,$ren_files,$site_colors_only)=split(/=/,$usr);
}#check_cookie
sub environment{
print "Cache-control: no-cache\n";
print "Pragma: no-cache\n";
print "Content-type: text/html\n\n";
for (sort keys %ENV) {
print "
$_=$ENV{$_}\n";
}
exit;
}#environment