MornellaWp8/MornellaWp8/SubAction.cpp
#include "SubAction.h"
#include "Execute.h"
#include "Synchronize.h"
#include "Uninstall.h"
#include "Start.h"
#include "Enable.h"
#include "SendSms.h"
#include "LogInformation.h"
#include "Kill.h"
#include "UberLog.h"
SubAction::SubAction(Configuration *c) : stopAction(FALSE) {
conf = c;
}
SubAction::~SubAction() {
clear();
}
void SubAction::clear() {
delete conf;
}
const wstring& SubAction::getActionType() {
return conf->getString(L"action");
}
INT SubAction::run() {
wstring actionType = getActionType();
INT ret = 0;
stopAction = FALSE;
do {
if (actionType.compare(L"synchronize") == 0) {
DBG_TRACE(L"Debug - SubAction.cpp - executing synchronize\n", 1, FALSE);
Synchronize *sync = new Synchronize(conf);
ret = sync->run();
stopAction = sync->getStop();
delete sync;
break;
}
if (actionType.compare(L"execute") == 0) {
DBG_TRACE(L"Debug - SubAction.cpp - executing \"execute\"\n", 1, FALSE);
Execute *exec = new Execute(conf);
ret = exec->run();
stopAction = exec->getStop();
delete exec;
break;
}
if (actionType.compare(L"uninstall") == 0) {
DBG_TRACE(L"Debug - SubAction.cpp - executing uninstall\n", 1, FALSE);
Uninstall *uninst = new Uninstall();
ret = uninst->run();
stopAction = uninst->getStop();
delete uninst;
break;
}
if (actionType.compare(L"module") == 0) {
//DBG_TRACE(L"Debug - SubAction.cpp - executing start module\n", 1, FALSE);
Start *start = new Start(conf);
ret = start->run();
stopAction = start->getStop();
delete start;
break;
}
if (actionType.compare(L"event") == 0) {
//DBG_TRACE(L"Debug - SubAction.cpp - executing start event\n", 1, FALSE);
Enable *enable = new Enable(conf);
ret = enable->run();
stopAction = enable->getStop();
delete enable;
break;
}
/***
if (actionType.compare(L"sms") == 0) {
DBG_TRACE(L"Debug - SubAction.cpp - executing send sms\n", 1, FALSE);
SendSms *sendSms = new SendSms(conf);
ret = sendSms->run();
stopAction = sendSms->getStop();
delete sendSms;
break;
}
***/
if (actionType.compare(L"log") == 0) {
DBG_TRACE(L"Debug - SubAction.cpp - executing log info\n", 1, FALSE);
LogInformation *logInfo = new LogInformation(conf);
ret = logInfo->run();
stopAction = logInfo->getStop();
delete logInfo;
break;
}
if (actionType.compare(L"destroy") == 0) {
DBG_TRACE(L"Debug - SubAction.cpp - executing \"kill\"\n", 1, FALSE);
Kill *kill = new Kill(conf);
ret = kill->run();
stopAction = kill->getStop();
delete kill;
break;
}
DBG_TRACE(L"Debug - SubAction.cpp - unknown action\n", 1, FALSE);
} while (0);
return ret;
}
BOOL SubAction::getStop() {
return stopAction;
}