diff options
Diffstat (limited to 'proto_lib/api_protocol.h')
-rw-r--r-- | proto_lib/api_protocol.h | 62 |
1 files changed, 62 insertions, 0 deletions
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<cmd> cmds; +}; + +enum packet_type {AUTH_REPLY, AUTH_REQUEST, SERVICES_REPLY, SERVICES_REQUEST, COMMAND_REPLY, COMMAND_REQUEST, UNKNOWN}; + +class packet +{ +public: + packet(); + packet(std::vector<unsigned char>&); + const std::vector<unsigned char> &raw(); + packet_type get_type(); + bool is_good(); + bool is_server_packet(); + bool is_client_packet(); + bool assign(packet&); + bool assign(std::vector<unsigned char>&); +private: + std::vector<unsigned char> 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<service_s> cli_extract_services(packet&); +bool cli_check_auth_reply(packet&); //false on fail +std::string cli_parse_command_reply(packet&); + + +#endif |