#include "ShellExecPlugin.h" #include "GsmModem.h" #include "util.h" ShellExecPlugin::ShellExecPlugin(std::string pluginCommand, std::string exeCommand, bool allowParameters) : Plugin(pluginCommand, std::string("ShellExec: ")+exeCommand ), _exeCommand(exeCommand), _allowParameters(allowParameters) { } void ShellExecPlugin::Execute(IGsmModem& modem, SMS& sms) { std::string command = _exeCommand; if (_allowParameters) { std::string parameters = GetSmsData(sms); parameters = Util::str_replace(parameters, "||"); parameters = Util::str_replace(parameters, "&&"); parameters = Util::str_replace(parameters, ";"); parameters = Util::str_replace(parameters, "'"); parameters = Util::str_replace(parameters, "\""); command += " "; command += parameters; } int retval = ::system( command.c_str() ); std::string message; if (retval == -1) message = "Error"; else message = "OK"; modem.SendSms(sms.sender, message, false ); }