/[projects]/smsdaemon/plugins/ShellExecPlugin.cpp
ViewVC logotype

Contents of /smsdaemon/plugins/ShellExecPlugin.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 107 - (show annotations) (download)
Thu Jun 19 14:47:52 2008 UTC (15 years, 11 months ago) by torben
File size: 1189 byte(s)
Allow ShellExecPlugin to return the output of the executed command.

1 #include "ShellExecPlugin.h"
2 #include "IGsmModem.h"
3 #include "Sms.h"
4
5 #include "util.h"
6
7 ShellExecPlugin::ShellExecPlugin(std::string pluginCommand, std::string exeCommand, bool allowParameters, bool returnOutput)
8 : Plugin(pluginCommand, std::string("ShellExec: ")+exeCommand ),
9 _exeCommand(exeCommand),
10 _allowParameters(allowParameters),
11 _returnOutput(returnOutput)
12 {
13 }
14
15 void ShellExecPlugin::Execute(IGsmModem& modem, SMS& sms)
16 {
17 std::string command = _exeCommand;
18
19 if (_allowParameters)
20 {
21 std::string parameters = GetSmsData(sms);
22
23 parameters = Util::str_replace(parameters, "||");
24 parameters = Util::str_replace(parameters, "&&");
25 parameters = Util::str_replace(parameters, ";");
26 parameters = Util::str_replace(parameters, "'");
27 parameters = Util::str_replace(parameters, "\"");
28
29 command += " ";
30 command += parameters;
31 }
32 std::string output;
33 std::string* out_p = 0;
34
35 if (_returnOutput)
36 out_p = &output;
37
38 int retval = Util::my_system( command.c_str(), out_p );
39
40 std::string message;
41 if (retval == -1)
42 message = "Error";
43 else
44 {
45 if (_returnOutput)
46 message = output;
47 else
48 message = "OK";
49 }
50
51 modem.SendSms(sms.sender, message, false );
52 }

  ViewVC Help
Powered by ViewVC 1.1.20