123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 |
- #include ".\settings.h"
- #include <shlwapi.h>
- #include <strsafe.h>
- Settings::Settings(void)
- {
- dumpPath = NULL;
- logPath = NULL;
- smtpServer = NULL;
- smtpUser = NULL;
- smtpPwd = NULL;
- path = NULL;
- smtpAddress = NULL;
- updatePath = TRUE;
- createDMP = TRUE;
- createLOG = TRUE;
- autoRestart = FALSE;
- silentMode = TRUE;
- sendData = TRUE;
- zipData = TRUE;
- zipPath = NULL;
- sendByClient = TRUE;
- sendBySMTP = FALSE;
- smtpPort = 25;
- smtpAuth = TRUE;
- dumpType = 0;
- logSystem = TRUE;
- logRegistry = TRUE;
- logStack = TRUE;
- logModule = TRUE;
- }
- Settings::~Settings(void)
- {
- if (dumpPath) free(dumpPath);
- if (logPath) free(logPath);
- if (smtpServer) free(smtpServer);
- if (smtpUser) free(smtpUser);
- if (smtpPwd) free(smtpPwd);
- if (path) free(path);
- if (smtpAddress) free(smtpAddress);
- }
- void Settings::SetPath(wchar_t *iniPath)
- {
- size_t size = lstrlen(iniPath);
- if (path) free(path);
- path = NULL;
- path = (wchar_t*)malloc((size + 1) * sizeof(wchar_t));
- StringCchCopy(path, size+1, iniPath);
- wchar_t iniFile[MAX_PATH*2] = {0};
- size += 14 * sizeof(wchar_t);
- CreateDirectory(iniPath, NULL);
- StringCchPrintf(iniFile, size, L"%s\\feedback.ini", iniPath);
- cfg.SetIniFile(iniFile);
- }
- const wchar_t* Settings::GetPath(void)
- {
- return path;
- }
- BOOL Settings::Load(void)
- {
- if (!cfg.IsFileExist()) return FALSE;
- cfg.SetSection(L"General");
- updatePath = cfg.ReadInt(L"UpdatePath", TRUE);
- if (updatePath) return FALSE;
- createDMP = cfg.ReadInt(L"CreateDmp", TRUE);
- createLOG = cfg.ReadInt(L"CreateLog", TRUE);
- autoRestart = cfg.ReadInt(L"AutoRestart", FALSE);
- silentMode = cfg.ReadInt(L"SilentMode", TRUE);
- sendData = cfg.ReadInt(L"SendData", TRUE);
-
- cfg.SetSection(L"Send");
- sendByClient = cfg.ReadInt(L"UseClient", TRUE);
- sendBySMTP = cfg.ReadInt(L"UseSMTP", FALSE);
- smtpPort = cfg.ReadInt(L"Port", 25);
- smtpAuth = cfg.ReadInt(L"ReqAuth", TRUE);
- CreateStrCopy(&smtpAddress, cfg.ReadStringW(L"Address", L"[email protected]"));
- CreateStrCopy(&smtpServer, cfg.ReadStringW(L"Server", NULL));
- CreateStrCopy(&smtpUser, cfg.ReadStringW(L"User", NULL));
- CreateStrCopy(&smtpPwd, cfg.ReadStringW(L"Pwd", NULL));
- cfg.SetSection(L"Zip");
- zipData = cfg.ReadInt(L"ZipData", TRUE);
- CreateStrCopy(&zipPath, cfg.ReadStringW(L"Path", NULL));
- cfg.SetSection(L"Dump");
- dumpType = cfg.ReadInt(L"Type", 0);
- CreateStrCopy(&dumpPath, cfg.ReadStringW(L"Path", NULL));
- cfg.SetSection(L"Log");
- logSystem = cfg.ReadInt(L"System", TRUE);
- logRegistry = cfg.ReadInt(L"Registry", TRUE);
- logStack = cfg.ReadInt(L"Stack", TRUE);
- logModule = cfg.ReadInt(L"Module", TRUE);
- CreateStrCopy(&logPath, cfg.ReadStringW(L"Path", NULL));
- return TRUE;
- }
- void Settings::CreateStrCopy(wchar_t **dest, const wchar_t* source)
- {
- if (*dest) free(*dest);
- *dest = NULL;
- if (source)
- {
- size_t len = lstrlen(source) + 1;
- *dest = (wchar_t*) malloc(len*sizeof(wchar_t));
- StringCchCopy(*dest, len, source);
- }
- }
- BOOL Settings::Save(void)
- {
- BOOL error = FALSE;
- if (FALSE == cfg.SetSection(L"General")) error = TRUE;
- if (FALSE == cfg.Write(L"UpdatePath", FALSE)) error = TRUE;
- if (FALSE == cfg.Write(L"CreateDmp", createDMP)) error = TRUE;
- if (FALSE == cfg.Write(L"CreateLog", createLOG)) error = TRUE;
- if (FALSE == cfg.Write(L"AutoRestart", autoRestart)) error = TRUE;
- if (FALSE == cfg.Write(L"SilentMode", silentMode)) error = TRUE;
- if (FALSE == cfg.Write(L"SendData", sendData)) error = TRUE;
- if (FALSE == cfg.SetSection(L"Send")) error = TRUE;
- if (FALSE == cfg.Write(L"UseClient", sendByClient)) error = TRUE;
- if (FALSE == cfg.Write(L"UseSMTP", sendBySMTP)) error = TRUE;
- if (FALSE == cfg.Write(L"Port", smtpPort)) error = TRUE;
- if (FALSE == cfg.Write(L"Server", smtpServer)) error = TRUE;
- if (FALSE == cfg.Write(L"Address", smtpAddress)) error = TRUE;
- if (FALSE == cfg.Write(L"ReqAuth", smtpAuth)) error = TRUE;
- if (FALSE == cfg.Write(L"User", smtpUser)) error = TRUE;
- if (FALSE == cfg.Write(L"Pwd", smtpPwd)) error = TRUE;
- if (FALSE == cfg.SetSection(L"Zip")) error = TRUE;
- if (FALSE == cfg.Write(L"ZipData", zipData)) error = TRUE;
- if (FALSE == cfg.Write(L"Path", zipPath)) error = TRUE;
- if (FALSE == cfg.SetSection(L"Dump")) error = TRUE;
- if (FALSE == cfg.Write(L"Type", dumpType)) error = TRUE;
- if (FALSE == cfg.Write(L"Path", dumpPath)) error = TRUE;
- if (FALSE == cfg.SetSection(L"Log")) error = TRUE;
- if (FALSE == cfg.Write(L"System", logSystem)) error = TRUE;
- if (FALSE == cfg.Write(L"Registry", logRegistry)) error = TRUE;
- if (FALSE == cfg.Write(L"Stack", logStack)) error = TRUE;
- if (FALSE == cfg.Write(L"Module", logModule)) error = TRUE;
- if (FALSE == cfg.Write(L"Path", logPath)) error = TRUE;
- return !error;
- }
- BOOL Settings::CreateDefault(wchar_t* iniPath)
- {
- wchar_t temp[MAX_PATH] = {0};
- int len;
- createDMP = TRUE;
- createLOG = TRUE;
- autoRestart = FALSE;
- silentMode = TRUE;
- sendData = TRUE;
- // zip
- PathCombine(temp, iniPath, L"report.zip");
- len = (int)wcslen(temp) + 1;
- zipData = TRUE;
- zipPath = (wchar_t*) malloc(len*2);
- StringCchCopy(zipPath, len, temp);
- // send
- sendByClient = TRUE;
- sendBySMTP = FALSE;
- smtpPort = 25;
- smtpAddress = (wchar_t*) malloc(32*2);
- StringCchCopy(smtpAddress, 32, L"[email protected]");
- smtpAuth = TRUE;
- smtpServer = NULL;
- smtpUser = NULL;
- smtpPwd = NULL;
- // dump
- PathCombine(temp, iniPath, L"_crash.dmp");
- len = (int)wcslen(temp) + 1;
- dumpType = NULL;
- dumpPath = (wchar_t*) malloc(len*2);
- StringCchCopy(dumpPath, len, temp);
- // log
- logSystem = TRUE;
- logRegistry = TRUE;
- logStack = TRUE;
- logModule = TRUE;
- PathCombine(temp, iniPath, L"_crash.log");
- len = (int)wcslen(temp) + 1;
- logPath = (wchar_t*) malloc(len*2);
- StringCchCopy(logPath, len, temp);
- return TRUE;
- }
- BOOL Settings::IsOk(void)
- {
- return (logPath != NULL && dumpPath != NULL);
- }
- void Settings::ClearTempData(void)
- {
- cfg.Write(L"Temp", L"TS", L"");
- cfg.Write(L"Temp", L"LOG", L"0");
- cfg.Write(L"Temp", L"DMP", L"0");
- }
- void Settings::WriteErrorTS(const wchar_t *time)
- {
- cfg.Write(L"Temp", L"TS", time);
- }
- void Settings::WriteLogCollectResult(BOOL result)
- {
- cfg.Write(L"Temp", L"LOG", result);
- }
- void Settings::WriteDmpCollectResult(BOOL result)
- {
- cfg.Write(L"Temp", L"DMP", result);
- }
- void Settings::WriteWinamp(const wchar_t *winamp)
- {
- cfg.Write(L"Temp", L"WA", winamp);
- }
- const wchar_t* Settings::ReadErrorTS(void)
- {
- return cfg.ReadStringW(L"Temp", L"TS", L"");
- }
- BOOL Settings::ReadLogCollectResult(void)
- {
- return cfg.ReadInt(L"Temp", L"LOG", 0);
- }
- BOOL Settings::ReadDmpCollectResult(void)
- {
- return cfg.ReadInt(L"Temp", L"DMP", 0);
- }
- const wchar_t* Settings::ReadWinamp(void)
- {
- return cfg.ReadStringW(L"Temp", L"WA", L"");
- }
- void Settings::WriteBody(const wchar_t *body)
- {
- cfg.Write(L"Temp", L"Body", body);
- }
- const wchar_t* Settings::ReadBody(void)
- {
- return cfg.ReadStringW(L"Temp", L"Body", L"");
- }
|