#include "ShellExecPlugin.h" #include "IGsmModem.h" #include "Sms.h" #include "util.h" ShellExecPlugin::ShellExecPlugin(std::string pluginCommand, std::string exeCommand, bool allowParameters, bool returnOutput) : Plugin(pluginCommand, std::string("ShellExec: ")+exeCommand ), _exeCommand(exeCommand), _allowParameters(allowParameters), _returnOutput(returnOutput) { } 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; } std::string output; std::string* out_p = 0; if (_returnOutput) out_p = &output; int retval = Util::my_system( command.c_str(), out_p ); std::string message; if (retval == -1) message = "Error"; else { if (_returnOutput) message = output; else message = "OK"; } modem.SendSms(sms.sender, message, false ); }