summaryrefslogtreecommitdiff
path: root/tntconfig.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tntconfig.cpp')
-rw-r--r--tntconfig.cpp160
1 files changed, 0 insertions, 160 deletions
diff --git a/tntconfig.cpp b/tntconfig.cpp
index 3325776..03bea9e 100644
--- a/tntconfig.cpp
+++ b/tntconfig.cpp
@@ -26,167 +26,8 @@ namespace vdrlive {
TntConfig::TntConfig()
{
-#if ! TNT_CONFIG_INTERNAL
- WriteConfig();
-#endif
- }
-
-#if ! TNT_CONFIG_INTERNAL
- void TntConfig::WriteConfig()
- {
- WriteProperties();
-
- string const configDir(Plugin::GetConfigDirectory());
-#if APIVERSNUM > 10729
- string const resourceDir(Plugin::GetResourceDirectory());
-#endif
-
- ostringstream builder;
- builder << configDir << "/httpd.config";
- m_configPath = builder.str();
-
- ofstream file( m_configPath.c_str(), ios::out | ios::trunc );
- if ( !file ) {
- ostringstream builder;
- builder << "Can't open " << m_configPath << " for writing: " << strerror( errno );
- throw runtime_error( builder.str() );
- }
-
- // +++ CAUTION +++ CAUTION +++ CAUTION +++ CAUTION +++ CAUTION +++
- // ------------------------------------------------------------------------
- // These MapUrl statements are very security sensitive!
- // A wrong mapping to content@ may allow retrieval of arbitrary files
- // from your VDR system via live.
- // Two meassures are taken against this in our implementation:
- // 1. The MapUrls need to be checked regulary against possible exploits
- // One tool to do this can be found here:
- // http://www.lumadis.be/regex/test_regex.php
- // Newly inserted MapUrls should be marked with author and confirmed
- // by a second party. (use source code comments for this)
- // 2. content.ecpp checks the given path to be
- // a. an absolute path starting at /
- // b. not containing ../ paths components
- // In order to do so, the MapUrl statements must create absolute
- // path arguments to content@
- // ------------------------------------------------------------------------
- // +++ CAUTION +++ CAUTION +++ CAUTION +++ CAUTION +++ CAUTION +++
-
-
- file << "MapUrl ^/$ login@" << endl;
-
- // the following redirects vdr_request URL to the component
- // specified by the action parameter.
- // inserted by 'tadi' -- verified with above, but not counterchecked yet!
- file << "MapUrl ^/vdr_request/([^.]+) $1@" << endl;
-
- // the following selects the theme specific 'theme.css' file
- // inserted by 'tadi' -- verified with above, but not counterchecked yet!
-#if APIVERSNUM > 10729
- file << "MapUrl ^/themes/([^/]*)/css.*/(.+\\.css) content@ " << resourceDir << "/themes/$1/css/$2 text/css" << endl;
-#else
- file << "MapUrl ^/themes/([^/]*)/css.*/(.+\\.css) content@ " << configDir << "/themes/$1/css/$2 text/css" << endl;
-#endif
-
- // the following rules provide a search scheme for images. The first
- // rule where a image is found, terminates the search.
- // 1. /themes/<theme>/img/<imgname>.<ext>
- // 2. /img/<imgname>.<ext>
- // deprecated: 3. <imgname>.<ext> (builtin images)
- // inserted by 'tadi' -- verified with above, but not counterchecked yet!
-#if APIVERSNUM > 10729
- file << "MapUrl ^/themes/([^/]*)/img.*/(.+)\\.(.+) content@ " << resourceDir << "/themes/$1/img/$2.$3 image/$3" << endl;
- file << "MapUrl ^/themes/([^/]*)/img.*/(.+)\\.(.+) content@ " << resourceDir << "/img/$2.$3 image/$3" << endl;
-#else
- file << "MapUrl ^/themes/([^/]*)/img.*/(.+)\\.(.+) content@ " << configDir << "/themes/$1/img/$2.$3 image/$3" << endl;
- file << "MapUrl ^/themes/([^/]*)/img.*/(.+)\\.(.+) content@ " << configDir << "/img/$2.$3 image/$3" << endl;
-#endif
- // deprecated: file << "MapUrl ^/themes/([^/]*)/img.*/(.+)\\.(.+) $2@" << endl;
-
- // Epg images
- string const epgImgPath(LiveSetup().GetEpgImageDir());
- if (!epgImgPath.empty()) {
- // inserted by 'winni' -- EXPLOITABLE! (checked by tadi)
- // file << "MapUrl ^/epgimages/(.*)\\.(.+) content@ " << epgImgPath << "/$1.$2 image/$2" << endl;
-
- // inserted by 'tadi' -- verified with above, but not counterchecked yet!
- file << "MapUrl ^/epgimages/([^/]*)\\.([^./]+) content@ " << epgImgPath << "/$1.$2 image/$2" << endl;
- }
-
- // select additional (not build in) javascript.
- // WARNING: no path components with '.' in the name are allowed. Only
- // the basename may contain dots and must end with '.js'
- // inserted by 'tadi' -- verified with above, but not counterchecked yet!
-#if APIVERSNUM > 10729
- file << "MapUrl ^/js(/[^.]*)([^/]*\\.js) content@ " << resourceDir << "/js$1$2 text/javascript" << endl;
-#else
- file << "MapUrl ^/js(/[^.]*)([^/]*\\.js) content@ " << configDir << "/js$1$2 text/javascript" << endl;
-#endif
-
- // map to 'css/basename(uri)'
- // inserted by 'tadi' -- verified with above, but not counterchecked yet!
-#if APIVERSNUM > 10729
- file << "MapUrl ^/css.*/(.+) content@ " << resourceDir << "/css/$1 text/css" << endl;
-#else
- file << "MapUrl ^/css.*/(.+) content@ " << configDir << "/css/$1 text/css" << endl;
-#endif
-
- // map to 'img/basename(uri)'
- // inserted by 'tadi' -- verified with above, but not counterchecked yet!
-#if APIVERSNUM > 10729
- file << "MapUrl ^/img.*/(.+)\\.([^.]+) content@ " << resourceDir << "/img/$1.$2 image/$2" << endl;
-#else
- file << "MapUrl ^/img.*/(.+)\\.([^.]+) content@ " << configDir << "/img/$1.$2 image/$2" << endl;
-#endif
-
- // Map favicon.ico into img directory
-#if APIVERSNUM > 10729
- file << "MapUrl ^/favicon.ico$ content@ " << resourceDir << "/img/favicon.ico image/x-icon" << endl;
-#else
- file << "MapUrl ^/favicon.ico$ content@ " << configDir << "/img/favicon.ico image/x-icon" << endl;
-#endif
-
- // insecure by default: DO NOT UNKOMMENT!!!
- // file << "MapUrl /([^/]+/.+) content@ $1" << endl;
-
- // takes first path components without 'extension' when it does not
- // contain '.'
- // modified by 'tadi' -- verified with above, but not counterchecked yet!
- file << "MapUrl ^/([^./]+)(.*)? $1@" << endl;
-
- file << "PropertyFile " << m_propertiesPath << endl;
- file << "SessionTimeout 86400" << endl;
- file << "DefaultContentType \"text/html; charset=" << LiveI18n().CharacterEncoding() << "\"" << endl;
-
- Setup::IpList const& ips = LiveSetup().GetServerIps();
- int port = LiveSetup().GetServerPort();
- for ( Setup::IpList::const_iterator ip = ips.begin(); ip != ips.end(); ++ip ) {
- file << "Listen " << *ip << " " << port << endl;
- }
- }
-#endif
-
-#if ! TNT_CONFIG_INTERNAL
- void TntConfig::WriteProperties()
- {
- ostringstream builder;
- builder << Plugin::GetConfigDirectory() << "/httpd.properties";
- m_propertiesPath = builder.str();
-
- ofstream file( m_propertiesPath.c_str(), ios::out | ios::trunc );
- if ( !file ) {
- ostringstream builder;
- builder << "Can't open " << m_propertiesPath << " for writing: " << strerror( errno );
- throw runtime_error( builder.str() );
- }
-
- // XXX modularize
- file << "rootLogger=" << LiveSetup().GetTntnetLogLevel() << endl;
- file << "logger.tntnet=" << LiveSetup().GetTntnetLogLevel() << endl;
- file << "logger.cxxtools=" << LiveSetup().GetTntnetLogLevel() << endl;
}
-#endif
-#if TNT_CONFIG_INTERNAL
namespace {
std::string GetResourcePath()
{
@@ -414,7 +255,6 @@ namespace vdrlive {
}
#endif // TNT_SSL_SUPPORT
}
-#endif
TntConfig const& TntConfig::Get()
{