X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/fd082d2de4f5e845c09676b21b58cb5de7e05837..8c6fa3fbaccc22127280bf77a48fab5a3ee0716e:/projects/rlm_stg/stg_client.h diff --git a/projects/rlm_stg/stg_client.h b/projects/rlm_stg/stg_client.h index 253b262f..917d0e51 100644 --- a/projects/rlm_stg/stg_client.h +++ b/projects/rlm_stg/stg_client.h @@ -18,70 +18,41 @@ * Author : Maxim Mamontov */ -/* - * Header file for client part of data access via Stargazer for RADIUS - * - * $Revision: 1.4 $ - * $Date: 2010/04/16 12:30:02 $ - * - */ +#ifndef __STG_RLM_CLIENT_H__ +#define __STG_RLM_CLIENT_H__ -#ifndef STG_CLIENT_H -#define STG_CLIENT_H +#include "types.h" -#include +#include "stg/os_int.h" -#include -#include -#include // socklen_t +#include -#include "blowfish.h" -#include "rad_packets.h" +#include -class STG_CLIENT +namespace STG +{ +namespace RLM { -public: - STG_CLIENT(const std::string & host, uint16_t port, uint16_t lp, const std::string & pass); - ~STG_CLIENT(); - - int Start(); - int Stop(); - std::string GetUserPassword() const; +class Client +{ +public: + explicit Client(const std::string& address); + ~Client(); - int Authorize(const std::string & login, const std::string & svc); - int Authenticate(const std::string & login, const std::string & svc); - int PostAuthenticate(const std::string & login, const std::string & svc); - int Account(const std::string & type, const std::string & login, const std::string & svc, const std::string & sessid); + bool stop(); - uint32_t GetFramedIP() const; + static Client* get(); + static bool configure(const std::string& address); - const std::string & GetError() const { return errorStr; }; + RESULT request(REQUEST_TYPE type, const std::string& userName, const std::string& password, const PAIRS& pairs); private: - uint16_t localPort; - std::string password; - int sock; - std::string errorStr; - - struct sockaddr_in outerAddr; - - std::string userPassword; - - uint32_t framedIP; - - BLOWFISH_CTX ctx; - - int PrepareNet(); - - void InitEncrypt(); - void Encrypt(char * dst, const char * src, int len8); - void Decrypt(char * dst, const char * src, int len8); - - int Request(RAD_PACKET * packet, const std::string & login, const std::string & svc, uint8_t packetType); - - int RecvData(RAD_PACKET * packet); - int Send(const RAD_PACKET & packet); + class Impl; + boost::scoped_ptr m_impl; }; +} // namespace RLM +} // namespace STG + #endif