1
0
Fork 0
tera/Source/SITE/JS/web-addon.js

235 lines
5.8 KiB
JavaScript

const fs = require('fs');
global.BlogList=[];
global.BlogMap=[];
function ReloadBufer()
{
global.BlogList=[];
global.BlogMap=[];
global.SendHTMLMap={};
}
setInterval(ReloadBufer,60*1000);
HostingCaller.TestAddon=function (Params,response,ArrPath)
{
return "Test. Your params:"+JSON.stringify(Params)+" Path:"+JSON.stringify(ArrPath);
}
HostingCaller.blog=function (Params,response,ArrPath)
{
if(ArrPath[1]==="reload")
{
ReloadBufer();
return "Reload OK";
}
var PathUploads="./SITE/blog/uploads/";
if(!global.BlogList.length)//init
{
var ArrList=fs.readdirSync(PathUploads);
for (var i=0;i<ArrList.length;i++)
{
var name=ArrList[i];
if(name.substring(name.length-5)===".html")
{
var filename=PathUploads+name;
var Data={name:name,filename:filename};
if(!CheckPostData(Data))
continue;
BlogList.push(Data);
}
}
BlogList.sort(function (a,b)
{
return parseInt(b.id)-parseInt(a.id);
});
}
var TemplPath="./SITE/blog/";
if(ArrPath.length===1 || (ArrPath.length===2 && !ArrPath[1]))
{
//list
//var StrHeader = String(fs.readFileSync(TemplPath+"post-header.html"));
var StrHeader = GetFileHTMLWithParsing(TemplPath+"post-header.html");
var StrAdd="";
for(var i=0;i<BlogList.length;i++)
{
var Data=BlogList[i];
if(!Data)
continue;
if(!CheckPostData(Data))
continue;
var Str=StrHeader;
for(var key in Data)
{
var str_repl=new RegExp("\\{\\{"+key+"\\}\\}",'g');
Str=Str.replace(str_repl,Data[key]);
}
StrAdd=StrAdd+"\n"+Str;
}
//var StrList = String(fs.readFileSync(TemplPath+"index.html"));
var StrList = GetFileHTMLWithParsing(TemplPath+"index.html");
var index=StrList.indexOf("{{List}}");
if(index<=0)
{
ToLog("Error file format index.html - not found {{List}}");
return 0;
}
StrList=StrList.substring(0,index)+StrAdd+StrList.substring(index+8);
response.writeHead(200, { 'Content-Type': 'text/html'});
response.end(StrList);
}
else
if(ArrPath.length===2)
{
var Num=parseInt(ArrPath[1]);
var Data=BlogMap[Num];
if(!Data)
{
return "Blog not found1:"+Num;
}
if(!CheckPostData(Data,1))
return "Blog not found2:"+Num;
//var Str = String(fs.readFileSync(TemplPath+"post.html"));
var Str = GetFileHTMLWithParsing(TemplPath+"post.html");
for(var key in Data)
{
var str_repl=new RegExp("\\{\\{"+key+"\\}\\}",'g');
Str=Str.replace(str_repl,Data[key]);
}
response.writeHead(200, { 'Content-Type': 'text/html'});
response.end(Str);
}
else
if(ArrPath.length===4 && ArrPath[1]==="uploads")
{
var name=ArrPath[2]+"/"+ArrPath[3];
var Path=PathUploads+name;
SendWebFile(response,Path,"");
}
else
{
return "Your params:"+JSON.stringify(Params)+" Path:"+JSON.stringify(ArrPath);
}
// var Path="./SITE/blog/";
// fs.readdir(Path, function (Err,files)
// {
// if(Err)
// {
// response.end("Error: "+Err);
// return;
// }
//
// response.end(JSON.stringify(files));
// });
return null;
}
function CheckPostData(Data, bBody)
{
if(!Data.Init)
{
var Str = String(fs.readFileSync(Data.filename));
if(!Str.length>0)
{
ToLog("Error file length: "+Data.filename);
return 0;
}
var index=Str.indexOf("=START=");
if(index<=0)
{
ToLog("Error file format: "+Data.filename);
return 0;
}
var Str1=Str.substring(0,index);
try
{
var Data2=JSON.parse(Str1);
}
catch(e)
{
ToLog("Error: "+e+"\n\n"+Str1)
return 0;
}
for(var key in Data2)
{
Data[key]=Data2[key];
}
global.BlogMap[Data.id]=Data;
if(bBody)
{
var Str2=Str.substring(index+7);
Data.Body=Str2;
}
//Data.Init=1;
}
return 1;
}
//document.body.contentEditable='true'; document.designMode='on';
HostingCaller.GetFileContent=function (Params,response,ArrPath)
{
if(!global.HTTP_ADMIN_PASSORD)
return {result:0,Text:"Not set password"};
if(Params.Password!==global.HTTP_ADMIN_PASSORD)
return {result:0,Text:"Error password"};
var Str=GetFileSimple(Params.Path);
return {result:1,Body:Str};
}
HostingCaller.SaveFileContent=function (Params,response,ArrPath)
{
if(!global.HTTP_ADMIN_PASSORD)
return {result:0,Text:"Not set password"};
if(Params.Password!==global.HTTP_ADMIN_PASSORD)
return {result:0,Text:"Error password"};
SaveFileSimple(Params.Path,Params.Body);
var Str=GetFileHTMLFromMarkdown(Params.Path);
return {result:1,Body:Str};
}
// HostingCaller.GetFileMarkdown=function (Params,response,ArrPath)
// {
// if(!global.HTTP_ADMIN_PASSORD)
// return {result:0,Text:"Not set password"};
// if(Params.Password!==global.HTTP_ADMIN_PASSORD)
// return {result:0,Text:"Error password"};
//
// var Str=GetFileHTMLFromMarkdown(Params.Path);
// return {result:1,Body:Str};
// }