00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef __CMD_ConnectedSocketCommandListener_h__
00027 #define __CMD_ConnectedSocketCommandListener_h__
00028
00029 #include "CMD_API.h"
00030 #include <FS/FS_ConnectedSocketListener.h>
00031 class CMD_Manager;
00032 class UT_WorkBuffer;
00033 namespace xmlpp { class Node; }
00034
00035 class CMD_API CMD_ConnectedSocketCommandListener
00036 : public FS_ConnectedSocketListener
00037 {
00038 public:
00039
00040
00041
00042 CMD_ConnectedSocketCommandListener(UT_NetSocket &server_socket,
00043 CMD_Manager &command_manager,
00044 bool separate_errors = false,
00045 bool restrict_to_safe_commands = false,
00046 const char *ip_mask = 0,
00047 bool browser_mode = false);
00048
00049 virtual const char *className() const
00050 { return "CMD_ConnectedSocketCommandListener"; }
00051
00052 private:
00053
00054
00055 static void processSocketDataCallback(
00056 void *opaque_object,
00057 const char *data,
00058 int length,
00059 UT_NetSocket &socket);
00060
00061
00062
00063 void processSocketData(
00064 const UT_WorkBuffer &command, UT_NetSocket &socket);
00065
00066 void runHscriptCommand(
00067 const char *command, UT_WorkBuffer &result);
00068 void runPythonExpression(
00069 const char *expression, UT_WorkBuffer &result);
00070 void runPythonStatements(
00071 const char *statements, UT_WorkBuffer &result);
00072
00073 void processXML(const char *xml, UT_WorkBuffer &result);
00074 void processXMLNode(const xmlpp::Node &node, UT_WorkBuffer &result);
00075
00076 void processData(const char *data, UT_WorkBuffer &result);
00077
00078 void processHTTPRequest(
00079 const UT_WorkBuffer &request,
00080 UT_NetSocket &socket,
00081 UT_WorkBuffer &result);
00082
00083
00084
00085 CMD_Manager &myCommandManager;
00086 bool mySeparateErrors;
00087 bool myRestrictToSafeCmds;
00088 bool myBrowserMode;
00089 };
00090
00091 #endif