%
//====== Admin PAGE LOGIC ====================================
// Copyright 2005 SiC. All Rights Reserved.
// Last Update: 2005-03-01 22:57:56
//============================================================
if(!theUser.loggedIn||theUser.groupID!=1) Response.Redirect("default.asp");
getAdminLanguage(lang);
pageHeader(lang["administration"]);
if(input["act"]=="login"){
adminLogin();
}
if(input["act"]=="logout"){
Session("admin")=undefined;
Response.Redirect("default.asp");
}
if(Session("admin")==true){
// Admin has logged in
switch(String(input["in"])){
case "settings":
if(input["act"]=="update") updateSettings();
theCache.loadSettings();
outputSettings();
break;
case "category":
if(input["act"]) updateCategories();
theCache.loadCategories();
if(input["act"]!="move"||input["target"]){
outputCategories();
}
break;
case "group":
if(input["act"]) updateUserGroup();
theCache.loadUserGroup();
outputUserGroup();
break;
case "smilies":
if(input["act"]) updateSmilies();
theCache.loadSmilies();
outputSmilies();
break;
case "wordfilter":
if(input["act"]) updateWordFilter();
theCache.loadWordFilter();
outputWordFilter();
break;
case "database":
showDatabase();
break;
case "attachment":
showAttachment();
break;
case "announce":
showAnnouncement();
break;
case "links":
showLinks();
break;
case "misc":
showMisc();
break;
default:
switch(String(input["act"])){
case "closesite":
if(Session("admin")==true){
closeSite();
Response.Redirect("?");
}
break;
case "opensite":
if(Session("admin")==true){
openSite();
Response.Redirect("?");
}
break;
default:
showGeneralInfo();
}
}
}else{
// Admin has not logged in
adminLoginForm();
}
pageFooter();
// Admin Login Check ///////////////////////////////////////////////////////////////////
function adminLogin(){
var tmpA=connBlog.query("SELECT user_password, user_salt FROM [blog_User] WHERE user_id="+theUser.id);
if(!tmpA){
Session("admin")=undefined;
redirectMessage(lang["error"], lang["user_not_found"], "", "", false, "errorbox");
write("
");
}else{
if(tmpA[0]["user_password"]!=func.SHA1(input["password"]+tmpA[0]["user_salt"])){
Session("admin")=undefined;
redirectMessage(lang["error"], lang["password_invalid"], "", "", false, "errorbox");
write("
");
}else{
Session("admin")=true;
}
}
}
// Display General Information on the Server ///////////////////////////////////////////////
function showGeneralInfo(){
var serverInfo={ "software": Request.ServerVariables("SERVER_SOFTWARE"),
"ip": Request.ServerVariables("LOCAL_ADDR"),
"scriptEngine": ScriptEngineMajorVersion()+"."+ScriptEngineMinorVersion()+"."+ScriptEngineBuildVersion(),
"time": func.getDateTimeString("YY-MM-DD hh:ii:ss Z"),
"path": Request.ServerVariables("APPL_PHYSICAL_PATH"),
"objFSO": checkServerObject("Scripting.FileSystemObject"),
"objStream": checkServerObject("ADODB.Stream"),
"objXMLHTTP": checkServerObject("MSXML2.ServerXMLHTTP"),
"objXMLDOM": checkServerObject("Microsoft.XMLDOM")
}
outputGeneralInfo(serverInfo);
}
// Check if the object is usable on the server
function checkServerObject(strObjectName){
try{
var obj=Server.CreateObject(strObjectName);
}catch(e){
return false;
}
delete obj;
return true;
}
// Update Global Settings ///////////////////////////////////////////////////////////////////
function updateSettings(){
// Check path
if(input["baseurl"]){
input["baseurl"].replace(/\\/g,"/");
if(input["baseurl"].slice(-1)!="/") input["baseurl"]+="/";
}
if(input["logoimage"]){
input["logoimage"].replace(/\\/g,"/");
if(input["logoimage"].slice(-1)=="/") input["logoimage"]=input["stylesheet"].substr(0,input["stylesheet"].length-1);
}
if(input["stylesheet"]){
input["stylesheet"].replace(/\\/g,"/");
if(input["stylesheet"].slice(-1)=="/") input["stylesheet"]=input["stylesheet"].substr(0,input["stylesheet"].length-1);
}
if(input["imagefolder"]){
input["imagefolder"].replace(/\\/g,"/");
if(input["imagefolder"].slice(-1)=="/") input["imagefolder"]=input["imagefolder"].substr(0,input["imagefolder"].length-1);
}
if(input["smiliesfolder"]){
input["smiliesfolder"].replace(/\\/g,"/");
if(input["smiliesfolder"].slice(-1)=="/") input["smiliesfolder"]=input["smiliesfolder"].substr(0,input["smiliesfolder"].length-1);
}
if(input["uploadpath"]){
input["uploadpath"].replace(/\\/g,"/");
if(input["uploadpath"].slice(-1)!="/") input["uploadpath"]+="/";
}
// Do updates
connBlog.exec(genStrUpdate("blogtitle"));
connBlog.exec(genStrUpdate("blogdescription"));
connBlog.exec(genStrUpdate("baseurl"));
connBlog.exec(genStrUpdate("logoimage"));
connBlog.exec(genStrUpdate("blogwebmaster"));
connBlog.exec(genStrUpdate("blogwebmasteremail"));
connBlog.exec(genStrUpdate("bloglanguage"));
connBlog.exec(genBoolUpdate("defaultviewmode"));
connBlog.exec(genIntUpdate("articleperpagenormal",0,21));
connBlog.exec(genIntUpdate("articleperpagelist",19,101));
connBlog.exec(genIntUpdate("listentryperpage",9,101));
connBlog.exec(genIntUpdate("commentperpage",-1,51));
connBlog.exec(genBoolUpdate("commenttimeorder"));
connBlog.exec(genBoolUpdate("showtrackbackwithcomment"));
connBlog.exec(genIntUpdate("showtrackbackposition",-1,3));
connBlog.exec(genIntUpdate("recentarticlelist",2,31));
connBlog.exec(genIntUpdate("recentcommentlist",2,31));
connBlog.exec(genBoolUpdate("enabledynamiccalendar"));
connBlog.exec(genBoolUpdate("enablecontentautosplit"));
connBlog.exec(genIntUpdate("contentautosplitchars",99,2001));
connBlog.exec(genBoolUpdate("enableregister"));
connBlog.exec(genBoolUpdate("enablesecuritycode"));
connBlog.exec(genBoolUpdate("enabletrackbackin"));
connBlog.exec(genBoolUpdate("enabletrackbackout"));
connBlog.exec(genBoolUpdate("enablecomment"));
connBlog.exec(genIntUpdate("maxcommentlength",99,2001));
connBlog.exec(genBoolUpdate("enableguestbook"));
connBlog.exec(genIntUpdate("entryperpageguestbook",2,31));
connBlog.exec(genStrUpdate("stylesheet"));
connBlog.exec(genStrUpdate("imagefolder"));
connBlog.exec(genStrUpdate("smiliesfolder"));
connBlog.exec(genIntUpdate("smiliesperrow",0,31));
connBlog.exec(genIntUpdate("minpostduration",0,601));
connBlog.exec(genBoolUpdate("enablevisitorrecord"));
connBlog.exec(genIntUpdate("maxvisitorrecord",0,301));
connBlog.exec(genBoolUpdate("enableupload"));
connBlog.exec(genIntUpdate("uploadsize",1023,50000001));
connBlog.exec(genStrUpdate("uploadpath"));
connBlog.exec(genStrUpdate("uploadtypes"));
theCache.loadCalendar();
theCache.loadArticles();
theCache.loadComments();
function genStrUpdate(strName){
if(input[strName]){
return "UPDATE [blog_Settings] SET set_value1='"+func.checkStr(func.trim(input[strName]))+"' WHERE set_name='"+strName+"';";
}else{
return "";
}
}
function genBoolUpdate(strName){
input[strName] = input[strName] ? 1: 0;
return "UPDATE [blog_Settings] SET set_value0="+input[strName]+" WHERE set_name='"+strName+"';";
}
function genIntUpdate(strName,intMin, intMax){
input[strName]=func.checkInt(input[strName]);
if(input[strName]>intMin&&input[strName]
";
connBlog.close();
// Create FSO
strResult+="- "+lang["check_exist"]+"
";
try{
fso=Server.CreateObject("Scripting.FileSystemObject");
}catch(e){
return [false, strResult];
}
if(!fso.FileExists(connBlog.dbPath)){
return [false, strResult];
}
strResult+="- "+lang["compact_db"]+"
";
try{
// Create DB Engine Object & Compact Database
var jro = Server.CreateObject("JRO.JetEngine");
jro.CompactDatabase("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + connBlog.dbPath,
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + connBlog.dbPath+ ".tmp");
delete jro;
}catch(e){
return [false, strResult];
}
strResult+="- "+lang["rename_db_file"]+"
";
try{
// Rename DB File
fso.CopyFile(connBlog.dbPath+ ".tmp", connBlog.dbPath);
fso.DeleteFile(connBlog.dbPath+ ".tmp");
}catch(e){
return [false, strResult];
}
delete fso;
// Open site
openSite();
// Open DB Connection
connBlog.open();
return [true, strResult];
}
// Backup Database -------------------------------------------------------------
function backupDatabase(){
var fso;
var strResult="";
// Close site to prevent conflict
closeSite();
// Close DB Connection to unlock the DB file
strResult+="- "+lang["close_conn"]+"
";
connBlog.close();
// Create FSO
strResult+="- "+lang["check_exist"]+"
";
try{
fso=Server.CreateObject("Scripting.FileSystemObject");
}catch(e){
return [false, strResult];
}
if(!fso.FileExists(connBlog.dbPath)){
return [false, strResult];
}
strResult+="- "+lang["copy_to_backup"]+"
";
var strPath=connBlog.dbPath;
strPath=strPath.substr(0,strPath.lastIndexOf("."))+func.getDateTimeString("_YYMMDD_hhiiss")+".bak";
try{
// Rename DB File
fso.CopyFile(connBlog.dbPath, strPath);
}catch(e){
return [false, strResult];
}
delete fso;
// Open site
openSite();
// Open DB Connection
connBlog.open();
return [true, strResult];
}
// Restore Database -------------------------------------------------------------
function restoreDatabase(strFilePath){
var fso;
var strResult="";
// Close site to prevent conflict
closeSite();
// Close DB Connection to unlock the DB file
strResult+="- "+lang["close_conn"]+"
";
connBlog.close();
// Create FSO
strResult+="- "+lang["check_exist"]+"
";
try{
fso=Server.CreateObject("Scripting.FileSystemObject");
}catch(e){
return [false, strResult];
}
if(!fso.FileExists(connBlog.dbPath)){
return [false, strResult];
}
strResult+="- "+lang["copy_to_backup"]+"
";
try{
// Backup original file
fso.CopyFile(connBlog.dbPath, connBlog.dbPath+".tmp");
fso.DeleteFile(connBlog.dbPath);
// Copy DB File
fso.CopyFile(strFilePath, connBlog.dbPath);
}catch(e){
return [false, strResult];
}
try{
// Delete backup of original file
fso.DeleteFile(connBlog.dbPath+".tmp");
}catch(e){
return [false, strResult];
}
delete fso;
// Open site
openSite();
// Open DB Connection
connBlog.open();
return [true, strResult];
}
// Attachments /////////////////////////////////////////////////////////////////////////////
function showAttachment(){
// Get Path
var strFullPath;
var strCurrentPath;
var strBasePath=theCache.settings["uploadPath"];
var bShowParent=false;
if(input["path"]){
input["path"]= input["path"].replace(/^\/+/,"");
input["path"]= input["path"].replace(/\/+$/,"/");
strFullPath=Server.MapPath(theCache.settings["uploadPath"]+unescape(input["path"]));
strCurrentPath=unescape(input["path"])+"/";
bShowParent=true;
}else{
strFullPath=Server.MapPath(theCache.settings["uploadPath"]);
strCurrentPath="";
}
// Delet File or Folder ----------------------------------------
if(input["act"]=="delete"){
if(input["file"]){
try{
var fso=Server.CreateObject("Scripting.FileSystemObject");
fso.DeleteFile(strFullPath+"/"+unescape(input["file"]));
delete fso;
}catch(e){
}
}
if(input["folder"]){
try{
var fso=Server.CreateObject("Scripting.FileSystemObject");
var fileCount=fso.GetFolder(strFullPath+"/"+unescape(input["folder"])).Files.Count;
if(fileCount==0) fso.DeleteFolder(strFullPath+"/"+unescape(input["folder"]));
delete fso;
}catch(e){
}
}
}
// Get File list
var arrList=getFolderList(strFullPath);
// Output
outputAttachment(strBasePath, strCurrentPath, arrList, bShowParent);
}
// Announcement Page /////////////////////////////////////////////////////////////////////////////////////
function showAnnouncement(){
// Update -------------
if(input["act"]=="update"){
var ubbFlags = "";
ubbFlags+= input["e_ubb"]=="true" ? "1":"0";
ubbFlags+= input["e_autourl"]=="true" ? "1":"0";
ubbFlags+= input["e_image"]=="true" ? "1":"0";
ubbFlags+= input["e_media"]=="true" ? "1":"0";
ubbFlags+= input["e_smilies"]=="true" ? "1":"0";
ubbFlags+= "1"; // bTextBlock - always 1
if(input["e_html"]=="true") ubbFlags = "html";
connBlog.updateSQL("[blog_Settings]","set_value0="+(input["show"]=="true" ? 1 : 0),"set_name='announceShow'");
connBlog.updateSQL("[blog_Settings]","set_value1='"+ubbFlags+"'","set_name='announceUBBFlags'");
connBlog.updateSQL("[blog_Settings]","set_value1='"+func.checkStr(input["message"])+"'","set_name='announce'");
connBlog.updateSQL("[blog_Settings]","set_value1='"+func.getDateTimeString()+"'","set_name='announceDate'");
}
theCache.loadSettings();
outputAnnouncement();
}
// Links Page /////////////////////////////////////////////////////////////////////////////////////
function showLinks(){
// Update -------------
if(input["act"]=="update"){
connBlog.updateSQL("[blog_Settings]","set_value1='"+func.checkStr(input["links"])+"'","set_name='links'");
}
theCache.loadSettings();
outputLinks();
}
// Misc Page /////////////////////////////////////////////////////////////////////////////////////
function showMisc(){
// Resync Global Counter
if(input["act"]=="resync_g"){
var tmpA=connBlog.query("SELECT count(log_id) as cnt FROM [blog_Article]");
connBlog.updateSQL("[blog_Settings]","set_value0="+tmpA[0]["cnt"],"set_name='counterArticle'");
tmpA=connBlog.query("SELECT count(comm_id) as cnt FROM [blog_Comment]");
connBlog.updateSQL("[blog_Settings]","set_value0="+tmpA[0]["cnt"],"set_name='counterComment'");
tmpA=connBlog.query("SELECT count(tb_id) as cnt FROM [blog_Trackback]");
connBlog.updateSQL("[blog_Settings]","set_value0="+tmpA[0]["cnt"],"set_name='counterTrackback'");
tmpA=connBlog.query("SELECT count(user_id) as cnt FROM [blog_User]");
connBlog.updateSQL("[blog_Settings]","set_value0="+tmpA[0]["cnt"],"set_name='counterUser'");
theCache.loadSettings();
}
// Resync Category Counter
if(input["act"]=="resync_c"){
var tmpA=connBlog.query("SELECT cat_id FROM [blog_Category]");
if(tmpA){
for(var i=0;i