X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ffreenet%2Fsiteinserter.cpp;h=c717d0d707e9ecfb1a8c60a8a6caa31634988c02;hb=9a14c0d9f7f7c319e539583b93664953764e83b7;hp=9db96517ed98b5378c897ea470d9651bc8d1918b;hpb=e773b0ecb8a35c67cde5b2e82bbebb05224f34d0;p=fms.git
diff --git a/src/freenet/siteinserter.cpp b/src/freenet/siteinserter.cpp
index 9db9651..c717d0d 100644
--- a/src/freenet/siteinserter.cpp
+++ b/src/freenet/siteinserter.cpp
@@ -84,6 +84,9 @@ std::string SiteInserter::GenerateIndex(const std::string &htmltemplate, const l
content+="";
content+="
";
content+=SanitizeOutput(post);
+ //post=SanitizeOutput(post);
+ //StringFunctions::Replace(post,"\r\n","
");
+ //content+=post;
content+="
";
content+="";
@@ -113,7 +116,7 @@ std::string SiteInserter::GenerateLinks(const bool publishtrustlist, const bool
void SiteInserter::GeneratePages(const long localidentityid, std::string &uskkey, std::map &pages)
{
- SQLite3DB::Statement st=m_db->Prepare("SELECT Name, PrivateKey, PublishTrustList, PublishBoardList FROM tblLocalIdentity WHERE LocalIdentityID=?;");
+ SQLite3DB::Statement st=m_db->Prepare("SELECT Name, PrivateKey, PublishTrustList, PublishBoardList, FreesiteEdition FROM tblLocalIdentity WHERE LocalIdentityID=?;");
st.Bind(0,localidentityid);
st.Step();
@@ -127,14 +130,29 @@ void SiteInserter::GeneratePages(const long localidentityid, std::string &uskkey
std::string publishboardliststr="";
bool publishtrustlist=false;
bool publishboardlist=false;
+ std::string editionstr="";
st.ResultText(0,name);
st.ResultText(1,key);
st.ResultText(2,publishtrustliststr);
st.ResultText(3,publishboardliststr);
+ st.ResultText(4,editionstr);
publishtrustliststr=="true" ? publishtrustlist=true : publishtrustlist=false;
publishboardliststr=="true" ? publishboardlist=true : publishboardlist=false;
+ // no edition exists - start at 0
+ if(editionstr=="")
+ {
+ editionstr="0";
+ }
+ // previous edition exists - add 1
+ else
+ {
+ int edition=0;
+ StringFunctions::Convert(editionstr,edition);
+ edition++;
+ StringFunctions::Convert(edition,editionstr);
+ }
filename=name+"-template.htm";
FILE *infile=fopen(filename.c_str(),"r+b");
@@ -173,7 +191,7 @@ void SiteInserter::GeneratePages(const long localidentityid, std::string &uskkey
key.erase(0,3);
key="USK"+key;
}
- key+=m_messagebase+"/0/";
+ key+=m_messagebase+"/"+editionstr+"/";
uskkey=key;
}
@@ -182,6 +200,66 @@ void SiteInserter::GeneratePages(const long localidentityid, std::string &uskkey
LogFile::Instance()->WriteLog(LogFile::LOGLEVEL_ERROR,"SiteInserter::GeneratePages unable to open "+filename+" or site-template.htm.");
}
+ // get extra files that the user wants to add to the Freesite
+ filename=name+"-files.txt";
+ infile=fopen(filename.c_str(),"r+b");
+ if(infile)
+ {
+ std::vector files;
+
+ fseek(infile,0,SEEK_END);
+ long len=ftell(infile);
+ fseek(infile,0,SEEK_SET);
+
+ std::vector data;
+ data.resize(len);
+ fread(&data[0],1,data.size(),infile);
+ fclose(infile);
+
+ // split on \r and \n - on systems with \r\n line endings there will be blank entries, but we'll just skip those
+ std::string filecontent(data.begin(),data.end());
+ StringFunctions::SplitMultiple(filecontent,"\r\n",files);
+
+ for(std::vector::iterator i=files.begin(); i!=files.end(); i++)
+ {
+ if((*i)!="" && (*i).find("index.htm")==std::string::npos && (*i).find("trustlist.htm")==std::string::npos && (*i).find("files.htm")==std::string::npos)
+ {
+ filename=(*i);
+ infile=fopen(filename.c_str(),"r+b");
+ if(infile)
+ {
+ fseek(infile,0,SEEK_END);
+ len=ftell(infile);
+ fseek(infile,0,SEEK_SET);
+
+ data.resize(len);
+ fread(&data[0],1,data.size(),infile);
+ fclose(infile);
+
+ filecontent="";
+ filecontent.append(data.begin(),data.end());
+
+ // strip off path from filename
+ while(filename.find_first_of("/")!=std::string::npos)
+ {
+ filename.erase(0,filename.find_first_of("/")+1);
+ }
+
+ if(filecontent.size()>0)
+ {
+ pages[filename]=filecontent;
+ }
+
+ }
+ else
+ {
+ m_log->WriteLog(LogFile::LOGLEVEL_ERROR,"SiteInserter::GeneratePages could not include user file "+(*i));
+ }
+ }
+ }
+
+ }
+
}
}
@@ -285,6 +363,8 @@ const bool SiteInserter::HandlePutFailed(FCPMessage &message)
RemoveFromInsertList(localidentityid);
+ m_log->WriteLog(LogFile::LOGLEVEL_ERROR,"SiteInserter::HandlePutFailed failed to insert Freesite, Freenet error code : "+message["Code"]);
+
return true;
}
@@ -337,7 +417,7 @@ const std::string SiteInserter::SanitizeOutput(const std::string &input)
return output;
}
-void SiteInserter::StartInsert(const long &localidentityid)
+const bool SiteInserter::StartInsert(const long &localidentityid)
{
FCPMessage message;
std::string localidentityidstr="";
@@ -381,4 +461,6 @@ void SiteInserter::StartInsert(const long &localidentityid)
m_inserting.push_back(localidentityid);
+ return true;
+
}