use eEnv::resolve() / eEnv.resolve()
[vuplus_dvbapp] / main / bsod.cpp
old mode 100644 (file)
new mode 100755 (executable)
index 42e37f8..c036283
@@ -2,6 +2,7 @@
 #include <signal.h>
 #include <asm/ptrace.h>
 
+#include <lib/base/eenv.h>
 #include <lib/base/eerror.h>
 #include <lib/base/smartptr.h>
 #include <lib/base/nconfig.h>
@@ -65,7 +66,7 @@ static void addToLogbuffer(int level, const std::string &log)
 
 static std::string getConfigFileValue(const char *entry)
 {
-       std::string configfile = "/etc/enigma2/settings";
+       std::string configfile = eEnv::resolve("${sysconfdir}/enigma2/settings");
        std::string configvalue;
        if (entry)
        {
@@ -74,7 +75,7 @@ static std::string getConfigFileValue(const char *entry)
                {
                        return configvalue;
                }
-               else // get Value from enigma2 settings file
+               else // get value from enigma2 settings file
                {
                        FILE *f = fopen(configfile.c_str(), "r");
                        if (!f)
@@ -119,15 +120,29 @@ static std::string getFileContent(const char *file)
                        char line[1024];
                        if (!fgets(line, 1024, f))
                                break;
-                       filecontent += line;
+                       std::string tmp = line;
+                       std::string password;
+                       int pwdpos = tmp.find(".password=", 0);
+                       if( pwdpos != std::string::npos)
+                       {
+                               filecontent += tmp.substr(0,pwdpos +10);
+                               for ( int pos = pwdpos +10; pos < tmp.length()-1; ++pos )
+                               {
+                                       filecontent += "X";
+                               }
+                               filecontent += "\n";
+                       }
+                       else {
+                               filecontent += line;
+                       }
                }
                fclose(f);
        }
        return filecontent;
 }
 
-static std::string execCommand(char* cmd) {
-       FILE* pipe = popen(cmd, "r");
+static std::string execCommand(std::string cmd) {
+       FILE* pipe = popen(cmd.c_str(), "r");
        if (!pipe)
                return "Error";
        char buffer[STDBUFFER_SIZE];
@@ -142,11 +157,6 @@ static std::string execCommand(char* cmd) {
        return result;
 }
 
-extern std::string execCommand();
-extern std::string getConfigFileValue();
-extern std::string getFileContent();
-extern std::string getLogBuffer();
-
 #define INFOFILE "/maintainer.info"
 
 void bsodFatal(const char *component)
@@ -220,6 +230,13 @@ void bsodFatal(const char *component)
 #endif
                fprintf(f, "\t\t<contactemail>%s</contactemail>\n", crash_emailaddr);
                fprintf(f, "\t\t<!-- Please email this crashlog to above address -->\n");
+               std::string activeSkin = getConfigFileValue("config.skin.primary_skin");
+               if (activeSkin != "Error")
+               {
+                       if (activeSkin == "")
+                               activeSkin = "Default Skin";
+                       fprintf(f, "\t\t<skin>%s</skin>\n", activeSkin.c_str());
+               }
                fprintf(f, "\t</enigma2>\n");
 
                fprintf(f, "\t<image>\n");
@@ -242,7 +259,7 @@ void bsodFatal(const char *component)
                        fprintf(f, "\t\t<kernelcmdline>%s</kernelcmdline>\n", kernelcmd);
                }
                std::string sendAnonCrashlog = getConfigFileValue("config.plugins.crashlogautosubmit.sendAnonCrashlog");
-               if (sendAnonCrashlog == "False" || sendAnonCrashlog == "false" || sendAnonCrashlog == "") // defaults to false, so "" is also ok.
+               if (sendAnonCrashlog == "False" || sendAnonCrashlog == "false") // defaults to true... default anonymized crashlogs
                {
                        std::string ca = getFileContent("/proc/stb/info/ca");
                        if (ca != "Error")
@@ -253,7 +270,7 @@ void bsodFatal(const char *component)
                                        dreamboxca[strlen(dreamboxca)-1] = 0;
                                fprintf(f, "\t\t<dreamboxca>\n\t\t<![CDATA[\n%s\n\t\t]]>\n\t\t</dreamboxca>\n", dreamboxca);
                        }
-                       std::string settings = getFileContent("/etc/enigma2/settings");
+                       std::string settings = getFileContent(eEnv::resolve("${sysconfdir}/enigma2/settings").c_str());
                        if (settings != "Error")
                        {
                                fprintf(f, "\t\t<enigma2settings>\n\t\t<![CDATA[\n%s\t\t]]>\n\t\t</enigma2settings>\n", settings.c_str());
@@ -315,7 +332,7 @@ void bsodFatal(const char *component)
                fprintf(f, "\t<crashlogs>\n");
                std::string buffer = getLogBuffer();
                fprintf(f, "\t\t<enigma2crashlog>\n\t\t<![CDATA[\n%s\t\t]]>\n\t\t</enigma2crashlog>\n", buffer.c_str());
-               std::string pythonmd5 = execCommand("find /usr/lib/enigma2/python/ -name \"*.py\" | xargs md5sum");
+               std::string pythonmd5 = execCommand("find " + eEnv::resolve("${libdir}/enigma2/python/") + " -name \"*.py\" | xargs md5sum");
                fprintf(f, "\t\t<pythonMD5sum>\n\t\t<![CDATA[\n%s\t\t]]>\n\t\t</pythonMD5sum>\n", pythonmd5.c_str());
                fprintf(f, "\t</crashlogs>\n");