From 85a13d70cc5249e2f583bb16f0914646aefe4fe6 Mon Sep 17 00:00:00 2001 From: Gluzskiy Alexandr Date: Tue, 12 Feb 2013 21:34:09 +0200 Subject: server and shell exec module should work now TODO: implement basic protocol support in client --- proto_lib/api_protocol.h | 1 + proto_lib/packet.cpp | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) (limited to 'proto_lib') diff --git a/proto_lib/api_protocol.h b/proto_lib/api_protocol.h index 2e42d42..b18d2e7 100644 --- a/proto_lib/api_protocol.h +++ b/proto_lib/api_protocol.h @@ -64,6 +64,7 @@ public: static bool serv_validate_client_proto(packet&); //false on fail static packet *serv_make_services_packet(std::list&); static packet *serv_make_command_reply_packet(std::string&, status s); + static packet *serv_make_command_reply_packet(std::vector&, status s); static svc_cmd serv_extract_command(packet&); //generic diff --git a/proto_lib/packet.cpp b/proto_lib/packet.cpp index 0ed3150..92272a8 100644 --- a/proto_lib/packet.cpp +++ b/proto_lib/packet.cpp @@ -271,11 +271,18 @@ packet *packet::serv_make_command_reply_packet(std::string &str, status s) pack_serv_header(v); pack_buffer(type_command, sizeof(type_command), v); v.push_back(s); - if(!str.empty()) - { - for(size_t i = 0; i < str.length(); i++) - v.push_back(str[i]); - } + pack_buffer(str, v); + pack_buffer(proto_footer, sizeof(proto_footer), v); + return new packet(v); +} + +packet *packet::serv_make_command_reply_packet(std::vector& data, status s) +{ + std::vector v; + pack_serv_header(v); + pack_buffer(type_command, sizeof(type_command), v); + v.push_back(s); + pack_buffer(data, v); pack_buffer(proto_footer, sizeof(proto_footer), v); return new packet(v); } -- cgit v1.2.3