Loading src/blogi.cpp +199 −102 File changed.Preview size limit exceeded, changes collapsed. Show changes src/blogi.h +15 −2 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include <memory> #include <map> #include <mutex> #include <httppp//httpd.h> Loading @@ -40,11 +41,20 @@ namespace blogi { struct DomainContext { std::string domainName; std::string prefix; std::string startPage; std::string siteUrl; std::unique_ptr<PluginArgs> plgArgs; std::unique_ptr<blogi::Plugin> plugins; libhtmlpp::HtmlPage page, mPage; libhtmlpp::HtmlElement index, mIndex; libhtmlpp::HtmlElement cookieEl; std::string buildurl(const std::string &url) const { if (prefix.empty() || prefix == "/") return "/" + url; return prefix + "/" + url; } }; class Blogi : public libhttppp::HttpEvent{ Loading @@ -66,13 +76,16 @@ namespace blogi { // Reload SSL certificates at runtime (called after cert renewal) static bool reloadSSL(const std::string &certpath, const std::string &keypath, const std::string &password = ""); // Reload configuration from disk and rebuild domain contexts bool reloadConfig(); static std::unique_ptr<blogi::Config> Cfg; static libhttppp::HttpD *HttpServer; private: void initDomainContext(DomainContext &ctx, const DomainConfig &dcfg, bool debug); // Default domain (single-domain backward compat or fallback) std::unique_ptr<DomainContext> _defaultCtx; bool _debug = false; // Multi-domain contexts keyed by domain name (lowercase) std::map<std::string, std::unique_ptr<DomainContext>> _domains; std::mutex _domainsMutex; }; }; src/conf.cpp +5 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ #include "conf.h" blogi::Config::Config(const std::string &path) : confplus::Config(path){ blogi::Config::Config(const std::string &path) : confplus::Config(path), _ConfigPath(path){ for(size_t i =0; i<getElements(getKey("/BLOGI/PLUGINDIR")); ++i){ _PlgDir.push_back(getValue(getKey("/BLOGI/PLUGINDIR"),i)); } Loading Loading @@ -354,6 +354,10 @@ const blogi::AuthSource *blogi::Config::findAuthSource(const std::string &domain return nullptr; } const std::string &blogi::Config::getConfigPath() const{ return _ConfigPath; } const std::string blogi::DomainConfig::buildurl(const std::string &url) const { std::stringstream str; if (prefix.empty() || prefix == "/") Loading src/conf.h +2 −2 Original line number Diff line number Diff line Loading @@ -77,12 +77,11 @@ namespace blogi { Config(const std::string &path); ~Config(); const std::string &getConfigPath() const; const std::string &getsiteurl() const; const std::vector<std::string> &getsiteurls() const; const std::string &getprefix() const; const std::string &getConfigPath() const; const std::string &gettemplate() const; const std::string &getstartpage() const; Loading Loading @@ -123,6 +122,7 @@ namespace blogi { const DomainConfig *findDomainConfig(const std::string &hostname) const; private: std::string _ConfigPath; std::vector<std::string> _PlgDir; std::string _DBDriver; std::string _DBConnection; Loading Loading
src/blogi.h +15 −2 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include <memory> #include <map> #include <mutex> #include <httppp//httpd.h> Loading @@ -40,11 +41,20 @@ namespace blogi { struct DomainContext { std::string domainName; std::string prefix; std::string startPage; std::string siteUrl; std::unique_ptr<PluginArgs> plgArgs; std::unique_ptr<blogi::Plugin> plugins; libhtmlpp::HtmlPage page, mPage; libhtmlpp::HtmlElement index, mIndex; libhtmlpp::HtmlElement cookieEl; std::string buildurl(const std::string &url) const { if (prefix.empty() || prefix == "/") return "/" + url; return prefix + "/" + url; } }; class Blogi : public libhttppp::HttpEvent{ Loading @@ -66,13 +76,16 @@ namespace blogi { // Reload SSL certificates at runtime (called after cert renewal) static bool reloadSSL(const std::string &certpath, const std::string &keypath, const std::string &password = ""); // Reload configuration from disk and rebuild domain contexts bool reloadConfig(); static std::unique_ptr<blogi::Config> Cfg; static libhttppp::HttpD *HttpServer; private: void initDomainContext(DomainContext &ctx, const DomainConfig &dcfg, bool debug); // Default domain (single-domain backward compat or fallback) std::unique_ptr<DomainContext> _defaultCtx; bool _debug = false; // Multi-domain contexts keyed by domain name (lowercase) std::map<std::string, std::unique_ptr<DomainContext>> _domains; std::mutex _domainsMutex; }; };
src/conf.cpp +5 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ #include "conf.h" blogi::Config::Config(const std::string &path) : confplus::Config(path){ blogi::Config::Config(const std::string &path) : confplus::Config(path), _ConfigPath(path){ for(size_t i =0; i<getElements(getKey("/BLOGI/PLUGINDIR")); ++i){ _PlgDir.push_back(getValue(getKey("/BLOGI/PLUGINDIR"),i)); } Loading Loading @@ -354,6 +354,10 @@ const blogi::AuthSource *blogi::Config::findAuthSource(const std::string &domain return nullptr; } const std::string &blogi::Config::getConfigPath() const{ return _ConfigPath; } const std::string blogi::DomainConfig::buildurl(const std::string &url) const { std::stringstream str; if (prefix.empty() || prefix == "/") Loading
src/conf.h +2 −2 Original line number Diff line number Diff line Loading @@ -77,12 +77,11 @@ namespace blogi { Config(const std::string &path); ~Config(); const std::string &getConfigPath() const; const std::string &getsiteurl() const; const std::vector<std::string> &getsiteurls() const; const std::string &getprefix() const; const std::string &getConfigPath() const; const std::string &gettemplate() const; const std::string &getstartpage() const; Loading Loading @@ -123,6 +122,7 @@ namespace blogi { const DomainConfig *findDomainConfig(const std::string &hostname) const; private: std::string _ConfigPath; std::vector<std::string> _PlgDir; std::string _DBDriver; std::string _DBConnection; Loading