From 5a81b0e272a6e456e8c29ce2e755ac4e1c8b5546 Mon Sep 17 00:00:00 2001 From: Gluzskiy Alexandr Date: Mon, 11 Feb 2013 02:12:12 +0200 Subject: started separated proto lib implementation started modules support implementation --- proto_lib/api_protocol.h | 62 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 proto_lib/api_protocol.h (limited to 'proto_lib/api_protocol.h') diff --git a/proto_lib/api_protocol.h b/proto_lib/api_protocol.h new file mode 100644 index 0000000..8206854 --- /dev/null +++ b/proto_lib/api_protocol.h @@ -0,0 +1,62 @@ +// Copyright © 2013 sss +//. +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +//. +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +//. +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef API_PROTOCOL_H +#define API_PROTOCOL_H + + +struct service_s +{ + struct cmd + { + std::string command, description; + }; + std::string service; + std::list cmds; +}; + +enum packet_type {AUTH_REPLY, AUTH_REQUEST, SERVICES_REPLY, SERVICES_REQUEST, COMMAND_REPLY, COMMAND_REQUEST, UNKNOWN}; + +class packet +{ +public: + packet(); + packet(std::vector&); + const std::vector &raw(); + packet_type get_type(); + bool is_good(); + bool is_server_packet(); + bool is_client_packet(); + bool assign(packet&); + bool assign(std::vector&); +private: + std::vector data; +}; + +//server functions +bool serv_validate_client_proto(packet&); + +//client functions + +packet cli_make_auth_packet(); //should be first packet to server +packet cli_make_command_packet(std::string &service, std::string &command); +packet cli_request_services(); +std::list cli_extract_services(packet&); +bool cli_check_auth_reply(packet&); //false on fail +std::string cli_parse_command_reply(packet&); + + +#endif -- cgit v1.2.3