- ConfigReader c(ServerInstance);
- this->stylesheet = c.ReadValue("httpstats", "stylesheet", 0);
+ Implementation eventlist[] = { I_OnEvent };
+ ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation));
+ }
+
+ std::string Sanitize(const std::string &str)
+ {
+ std::string ret;
+ ret.reserve(str.length() * 2);
+
+ for (std::string::const_iterator x = str.begin(); x != str.end(); ++x)
+ {
+ std::map<char, char const*>::const_iterator it = entities.find(*x);
+
+ if (it != entities.end())
+ {
+ ret += '&';
+ ret += it->second;
+ ret += ';';
+ }
+ else if (*x == 0x9 || *x == 0xA || *x == 0xD || *x >= 0x20)
+ {
+ // The XML specification defines the following characters as valid inside an XML document:
+ // Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
+ ret += *x;
+ }
+ else
+ {
+ // If we reached this point then the string contains characters which can
+ // not be represented in XML, even using a numeric escape. Therefore, we
+ // Base64 encode the entire string and wrap it in a CDATA.
+ ret.clear();
+ ret += "<![CDATA[";
+ ret += BinToBase64(str);
+ ret += "]]>";
+ break;
+ }
+ }
+ return ret;