X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/3271a865ea0cf4a74d41b97148ccc2356be756b7..07bd133ff9a290ff7475c94c1578db3d0d91b853:/projects/sgauthstress/user.cpp diff --git a/projects/sgauthstress/user.cpp b/projects/sgauthstress/user.cpp index 15fb1ece..b36da5e1 100644 --- a/projects/sgauthstress/user.cpp +++ b/projects/sgauthstress/user.cpp @@ -1,6 +1,13 @@ +#include +#include + #include +#include +#include #include "user.h" +#include "stg/ia_packets.h" +#include "stg/common.h" USER::USER(const std::string & l, const std::string & pwd, @@ -18,11 +25,61 @@ unsigned char key[IA_PASSWD_LEN]; memset(key, 0, IA_PASSWD_LEN); strncpy((char *)key, password.c_str(), IA_PASSWD_LEN); Blowfish_Init(&ctx, key, IA_PASSWD_LEN); +} -sock = socket(AF_INET, SOCK_DGRAM, 0); +USER::USER(const USER & rvalue) + : login(rvalue.login), + password(rvalue.password), + ip(rvalue.ip), + aliveTimeout(rvalue.aliveTimeout), + userTimeout(rvalue.userTimeout), + phase(1), + phaseChangeTime(0), + rnd(0) +{ +unsigned char key[IA_PASSWD_LEN]; +memset(key, 0, IA_PASSWD_LEN); +strncpy((char *)key, password.c_str(), IA_PASSWD_LEN); +Blowfish_Init(&ctx, key, IA_PASSWD_LEN); } USER::~USER() { close(sock); } + +const USER & USER::operator=(const USER & rvalue) +{ +login = rvalue.login; +password = rvalue.password; +ip = rvalue.ip; +aliveTimeout = rvalue.aliveTimeout; +userTimeout = rvalue.userTimeout; +phase = 1; +phaseChangeTime = 0; +rnd = 0; + +unsigned char key[IA_PASSWD_LEN]; +memset(key, 0, IA_PASSWD_LEN); +strncpy((char *)key, password.c_str(), IA_PASSWD_LEN); +Blowfish_Init(&ctx, key, IA_PASSWD_LEN); + +return *this; +} + +bool USER::InitNetwork() +{ +sock = socket(AF_INET, SOCK_DGRAM, 0); + +struct sockaddr_in addr; + +addr.sin_family = AF_INET; +addr.sin_addr.s_addr = ip; +addr.sin_port = htons(5554); // :( + +int res = bind(sock, (struct sockaddr *)&addr, sizeof(addr)); +if (res == -1) + { + throw std::runtime_error(std::string("USER::USER() - bind error: '") + strerror(errno) + "', ip: " + inet_ntostring(ip) + ", login: " + login); + } +}