#!/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