X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/641204dfbdb9fc870cdd2e7f9e3169a44693e7bf..3261ecc2503f45394eb3b9df97c36b08fb14fb1d:/stglibs/srvconf.lib/netunit.h?ds=sidebyside diff --git a/stglibs/srvconf.lib/netunit.h b/stglibs/srvconf.lib/netunit.h index 72d3b721..d1191435 100644 --- a/stglibs/srvconf.lib/netunit.h +++ b/stglibs/srvconf.lib/netunit.h @@ -18,113 +18,53 @@ * Author : Boris Mikhailenko */ - /* - $Revision: 1.6 $ - $Date: 2010/02/11 12:32:53 $ - $Author: faust $ - */ - #ifndef NetUnitH #define NetUnitH -#include -#include -#include -#include -#include - -#include "common.h" -#include "blowfish.h" - -#define STG_HEADER "SG04" -#define OK_HEADER "OKHD" -#define ERR_HEADER "ERHD" -#define OK_LOGIN "OKLG" -#define ERR_LOGIN "ERLG" -#define OK_LOGINS "OKLS" -#define ERR_LOGINS "ERLS" +#include "stg/os_int.h" -// äÌÉÎÎÁ ÛÉÆÒÕÅÍÏÇÏ É ÐÅÒÅÄÁ×ÁÅÍÏÇ ÚÁ ÏÄÉÎ ÒÁÚ ÂÌÏËÁ ÉÎÆÏÒÍÁÃÉÉ -#define ENC_MSG_LEN (8) - -#define MAX_ERR_STR_LEN (64) - -typedef int(*RxCallback_t)(void *, std::list *); - -enum status -{ -st_ok = 0, -st_conn_fail, -st_send_fail, -st_recv_fail, -st_header_err, -st_login_err, -st_logins_err, -st_data_err, -st_unknown_err, -st_dns_err, -st_xml_parse_error, -st_data_error -}; +#include -enum CONF_STATE -{ -confHdr = 0, -confLogin, -confLoginCipher, -confData -}; -//--------------------------------------------------------------------------- class NETTRANSACT { public: - NETTRANSACT(); - int Transact(const char * data); - char *GetError(); - - void SetRxCallback(void * data, RxCallback_t); - - void SetServer(const char * serverName); - void SetServerPort(short unsigned p); - - void SetLogin(const char * l); - void SetPassword(const char * p); - //////////////////////////////////////////// - int Connect(); - int Disconnect(); - void Reset(); + typedef bool (* CALLBACK)(const std::string &, bool, void *); + + NETTRANSACT(const std::string & server, uint16_t port, + const std::string & login, const std::string & password); + NETTRANSACT(const std::string & server, uint16_t port, + const std::string & localAddress, uint16_t localPort, + const std::string & login, const std::string & password); + ~NETTRANSACT(); + int Transact(const std::string & request, CALLBACK f, void * data); + const std::string & GetError() const { return errorMsg; } + + int Connect(); + void Disconnect(); private: - int TxHeader(); - int RxHeaderAnswer(); + int TxHeader(); + int RxHeaderAnswer(); - int TxLogin(); - int RxLoginAnswer(); + int TxLogin(); + int RxLoginAnswer(); - int TxLoginS(); - int RxLoginSAnswer(); + int TxLoginS(); + int RxLoginSAnswer(); - int TxData(const char * text); - int TxData(char * data); - int RxDataAnswer(); + int TxData(const std::string & text); + int RxDataAnswer(CALLBACK f, void * data); - void Encrypt(char * d, const char * s, BLOWFISH_CTX *ctx); - void EnDecryptInit(const char * passwd, int passwdLen, BLOWFISH_CTX *ctx); - void Decrypt(char * d, const char * s, BLOWFISH_CTX *ctx); + std::string server; + uint16_t port; + std::string localAddress; + uint16_t localPort; + std::string login; + std::string password; + int sock; + std::string errorMsg; - //unsigned ip; - char server[SERVER_NAME_LEN]; - short unsigned port; - char login[ADM_LOGIN_LEN]; - char password[ADM_PASSWD_LEN]; - int outerSocket; - int localSocket; - struct sockaddr_in outerAddr; - struct sockaddr_in localAddr; - int error; - std::list answerList; - RxCallback_t RxCallBack; - void * dataRxCallBack; - char errorMsg[MAX_ERR_STR_LEN]; + static bool TxCrypto(const void * block, size_t size, void * data); + static bool RxCrypto(const void * block, size_t size, void * data); }; -//--------------------------------------------------------------------------- + #endif