Initial
This commit is contained in:
114
watchdog/Evaluator.cpp
Normal file
114
watchdog/Evaluator.cpp
Normal file
@@ -0,0 +1,114 @@
|
||||
#include <WatchDog/Evaluator.hpp>
|
||||
|
||||
void Evaluator::evaluate(void)
|
||||
{
|
||||
Block<String> appKeys;
|
||||
Block<String> notifyKeys;
|
||||
|
||||
if(!getAppKeys(appKeys))return;
|
||||
evaluateAppKeys(appKeys);
|
||||
if(!getNotifyKeys(notifyKeys))return;
|
||||
evaluateNotifyKeys(notifyKeys);
|
||||
}
|
||||
|
||||
bool Evaluator::getAppKeys(Block<String> &keys)
|
||||
{
|
||||
RegKey regKey(RegKey::LocalMachine);
|
||||
DWORD index=0;
|
||||
String key;
|
||||
String value;
|
||||
|
||||
keys.remove();
|
||||
if(!regKey.openKey("Software\\Diversified\\WatchDog\\Apps"))return false;
|
||||
while(true)
|
||||
{
|
||||
if(!regKey.enumKey(index++,key))break;
|
||||
keys.insert(&key);
|
||||
}
|
||||
return keys.size()?true:false;
|
||||
}
|
||||
|
||||
bool Evaluator::getNotifyKeys(Block<String> &keys)
|
||||
{
|
||||
RegKey regKey(RegKey::LocalMachine);
|
||||
DWORD index=0;
|
||||
String key;
|
||||
String value;
|
||||
|
||||
keys.remove();
|
||||
if(!regKey.openKey("Software\\Diversified\\WatchDog\\Notify"))return false;
|
||||
while(true)
|
||||
{
|
||||
if(!regKey.enumKey(index++,key))break;
|
||||
keys.insert(&key);
|
||||
}
|
||||
return keys.size()?true:false;
|
||||
}
|
||||
|
||||
void Evaluator::evaluateAppKeys(Block<String> &keys)
|
||||
{
|
||||
String strAppPath;
|
||||
String strRun;
|
||||
String strStartIn;
|
||||
String strArgs;
|
||||
String strPause;
|
||||
|
||||
for(int index=0;index<keys.size();index++)
|
||||
{
|
||||
RegKey regKey(RegKey::LocalMachine);
|
||||
if(!regKey.openKey("Software\\Diversified\\WatchDog\\Apps\\"+keys[index]))continue;
|
||||
regKey.queryValue("Run",strRun);
|
||||
if(!(strRun=="true"))continue;
|
||||
regKey.queryValue("AppPath",strAppPath);
|
||||
regKey.queryValue("StartIn",strStartIn);
|
||||
regKey.queryValue("Args",strArgs);
|
||||
regKey.queryValue("Pause",strPause);
|
||||
Process process;
|
||||
process.createProcess(strAppPath,false,strStartIn,strArgs);
|
||||
if(!strPause.isNull())::Sleep(strPause.toInt());
|
||||
}
|
||||
}
|
||||
|
||||
void Evaluator::evaluateNotifyKeys(Block<String> &keys)
|
||||
{
|
||||
String strEmail;
|
||||
String strHost;
|
||||
String strDomainSender;
|
||||
String strSender;
|
||||
Block<String> mailData;
|
||||
|
||||
RegKey regKey(RegKey::LocalMachine);
|
||||
if(!regKey.openKey("Software\\Diversified\\WatchDog\\Notify"))return;
|
||||
if(!regKey.queryValue("Host",strHost))return;
|
||||
if(!regKey.queryValue("Sender",strSender))return;
|
||||
if(!regKey.queryValue("DomainSender",strDomainSender))return;
|
||||
for(int index=0;index<keys.size();index++)
|
||||
{
|
||||
RegKey regKey(RegKey::LocalMachine);
|
||||
if(!regKey.openKey("Software\\Diversified\\WatchDog\\Notify\\"+keys[index]))continue;
|
||||
regKey.queryValue("EMAIL",strEmail);
|
||||
SMTPClient smtp;
|
||||
if(!smtp.open(strHost))continue;
|
||||
if(!smtp.helo(strDomainSender))
|
||||
{
|
||||
smtp.quit();
|
||||
continue;
|
||||
}
|
||||
if(!smtp.mail(strSender))
|
||||
{
|
||||
smtp.quit();
|
||||
continue;
|
||||
}
|
||||
smtp.rcpt(strEmail);
|
||||
mailData.insert(&String(String("To: ")+strEmail));
|
||||
mailData.insert(&String(String("Reply-To: ")+strSender));
|
||||
mailData.insert(&String(String("From: ")+strSender));
|
||||
mailData.insert(&String(String("Subject: WatchDog")));
|
||||
mailData.insert(&String("\n"));
|
||||
mailData.insert(&String("\n"));
|
||||
mailData.insert(&String("WatchDog startup process"));
|
||||
smtp.data(mailData);
|
||||
smtp.quit();
|
||||
smtp.close();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user