X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/7f4a67cabd5fbf8cfe9c2e658bd4a255a6764b0e..86f64520e7be30d45e730c65856e26b013936f18:/projects/stargazer/user_impl.cpp diff --git a/projects/stargazer/user_impl.cpp b/projects/stargazer/user_impl.cpp index 1af2b4de..13cf0b77 100644 --- a/projects/stargazer/user_impl.cpp +++ b/projects/stargazer/user_impl.cpp @@ -32,12 +32,9 @@ #define _GNU_SOURCE #endif -#include -#include // access - -#include -#include -#include +#include "user_impl.h" +#include "settings_impl.h" +#include "stg_timer.h" #include "stg/users.h" #include "stg/common.h" @@ -45,9 +42,16 @@ #include "stg/tariff.h" #include "stg/tariffs.h" #include "stg/admin.h" -#include "user_impl.h" -#include "settings_impl.h" -#include "stg_timer.h" + +#include +#include + +#include +#include +#include + +#include +#include // access #ifdef USE_ABSTRACT_SETTINGS USER_IMPL::USER_IMPL(const SETTINGS * s, @@ -60,12 +64,9 @@ USER_IMPL::USER_IMPL(const SETTINGS * s, property(s->GetScriptsDir()), WriteServLog(GetStgLogger()), lastScanMessages(0), - login(), id(0), __connected(0), connected(__connected), - enabledDirs(), - userIDGenerator(), __currIP(0), currIP(__currIP), lastIPForDisconnect(0), @@ -74,11 +75,8 @@ USER_IMPL::USER_IMPL(const SETTINGS * s, store(st), tariffs(t), tariff(NULL), - traffStat(), - traffStatSaved(), settings(s), - authorizedBy(), - messages(), + authorizedModificationTime(0), deleted(false), lastWriteStat(0), lastWriteDetailedStat(0), @@ -116,14 +114,10 @@ USER_IMPL::USER_IMPL(const SETTINGS * s, userdata7(property.userdata7), userdata8(property.userdata8), userdata9(property.userdata9), - sessionUpload(), - sessionDownload(), passiveNotifier(this), tariffNotifier(this), cashNotifier(this), - ipNotifier(this), - mutex(), - errorStr() + ipNotifier(this) { password = "*_EMPTY_PASSWORD_*"; tariffName = NO_TARIFF_NAME; @@ -153,12 +147,9 @@ USER_IMPL::USER_IMPL(const SETTINGS_IMPL * s, property(s->GetScriptsDir()), WriteServLog(GetStgLogger()), lastScanMessages(0), - login(), id(0), __connected(0), connected(__connected), - enabledDirs(), - userIDGenerator(), __currIP(0), currIP(__currIP), lastIPForDisconnect(0), @@ -167,11 +158,8 @@ USER_IMPL::USER_IMPL(const SETTINGS_IMPL * s, store(st), tariffs(t), tariff(NULL), - traffStat(), - traffStatSaved(), settings(s), - authorizedBy(), - messages(), + authorizedModificationTime(0), deleted(false), lastWriteStat(0), lastWriteDetailedStat(0), @@ -209,15 +197,11 @@ USER_IMPL::USER_IMPL(const SETTINGS_IMPL * s, userdata7(property.userdata7), userdata8(property.userdata8), userdata9(property.userdata9), - sessionUpload(), - sessionDownload(), passiveNotifier(this), disabledNotifier(this), tariffNotifier(this), cashNotifier(this), - ipNotifier(this), - mutex(), - errorStr() + ipNotifier(this) { password = "*_EMPTY_PASSWORD_*"; tariffName = NO_TARIFF_NAME; @@ -248,7 +232,6 @@ USER_IMPL::USER_IMPL(const USER_IMPL & u) id(u.id), __connected(0), connected(__connected), - enabledDirs(), userIDGenerator(u.userIDGenerator), __currIP(u.__currIP), currIP(__currIP), @@ -261,7 +244,7 @@ USER_IMPL::USER_IMPL(const USER_IMPL & u) traffStat(u.traffStat), traffStatSaved(u.traffStatSaved), settings(u.settings), - authorizedBy(), + authorizedModificationTime(u.authorizedModificationTime), messages(u.messages), deleted(u.deleted), lastWriteStat(u.lastWriteStat), @@ -306,9 +289,7 @@ USER_IMPL::USER_IMPL(const USER_IMPL & u) disabledNotifier(this), tariffNotifier(this), cashNotifier(this), - ipNotifier(this), - mutex(), - errorStr() + ipNotifier(this) { if (&u == this) return; @@ -535,6 +516,8 @@ else } } +if (authorizedBy.empty()) + authorizedModificationTime = stgTime; authorizedBy.insert(auth); ScanMessage(); @@ -553,6 +536,7 @@ if (!authorizedBy.erase(auth)) if (authorizedBy.empty()) { + authorizedModificationTime = stgTime; lastIPForDisconnect = currIP; currIP = 0; // DelUser in traffcounter return; @@ -566,6 +550,13 @@ STG_LOCKER lock(&mutex, __FILE__, __LINE__); return authorizedBy.find(auth) != authorizedBy.end(); } //----------------------------------------------------------------------------- +std::vector USER_IMPL::GetAuthorizers() const +{ + std::vector list; + std::transform(authorizedBy.begin(), authorizedBy.end(), std::back_inserter(list), std::mem_fun(&AUTH::GetVersion)); + return list; +} +//----------------------------------------------------------------------------- void USER_IMPL::Connect(bool fakeConnect) { /* @@ -589,21 +580,22 @@ if (!fakeConnect) std::string scriptOnConnectParams; + strprintf(&scriptOnConnectParams, + "%s \"%s\" \"%s\" \"%f\" \"%d\" \"%s\"", + scriptOnConnect.c_str(), + login.c_str(), + inet_ntostring(currIP).c_str(), + cash.ConstData(), + id, + dirsStr); + std::vector::const_iterator it(settings->GetScriptParams().begin()); while (it != settings->GetScriptParams().end()) { - scriptOnConnectParams += GetParamValue(it->c_str()); + scriptOnConnectParams += " \"" + GetParamValue(it->c_str()) + "\""; + ++it; } -// strprintf(&scriptOnConnectParams, -// "%s \"%s\" \"%s\" \"%f\" \"%d\" \"%s\"", -// scriptOnConnect.c_str(), -// login.c_str(), -// inet_ntostring(currIP).c_str(), -// cash.ConstData(), -// id, -// dirsStr); - ScriptExec(scriptOnConnectParams.c_str()); } else @@ -640,6 +632,7 @@ if (!lastIPForDisconnect) if (!fakeDisconnect) { + lastDisconnectReason = reason; std::string scriptOnDisonnect = settings->GetScriptsDir() + "/OnDisconnect"; if (access(scriptOnDisonnect.c_str(), X_OK) == 0) @@ -661,6 +654,13 @@ if (!fakeDisconnect) id, dirsStr); + std::vector::const_iterator it(settings->GetScriptParams().begin()); + while (it != settings->GetScriptParams().end()) + { + scriptOnDisonnectParams += " \"" + GetParamValue(it->c_str()) + "\""; + ++it; + } + ScriptExec(scriptOnDisonnectParams.c_str()); } else @@ -1466,116 +1466,39 @@ while (it != messages.end()) //----------------------------------------------------------------------------- std::string USER_IMPL::GetParamValue(const std::string & name) const { -if (name == "cash") - { - return property.cash.ToString(); - } -if (name == "freeMb") - { - return property.freeMb.ToString(); - } -if (name == "passive") - { - return property.passive.ToString(); - } -if (name == "disabled") - { - return property.disabled.ToString(); - } -if (name == "alwaysOnline") - { - return property.alwaysOnline.ToString(); - } -if (name == "tariffName") - { - return property.tariffName; - } -if (name == "nextTariff") - { - return property.nextTariff; - } -if (name == "address") - { - return property.address; - } -if (name == "note") - { - return property.note; - } -if (name == "group") - { - return property.group; - } -if (name == "email") - { - return property.email; - } -if (name == "phone") - { - return property.phone; - } -if (name == "realName") - { - return property.realName; - } -if (name == "credit") - { - return property.credit.ToString(); - } -if (name == "userdata0") - { - return property.userdata0; - } -if (name == "userdata1") - { - return property.userdata1; - } -if (name == "userdata2") - { - return property.userdata2; - } -if (name == "userdata3") - { - return property.userdata3; - } -if (name == "userdata4") - { - return property.userdata4; - } -if (name == "userdata5") - { - return property.userdata5; - } -if (name == "userdata6") - { - return property.userdata6; - } -if (name == "userdata7") - { - return property.userdata7; - } -if (name == "userdata8") - { - return property.userdata8; - } -if (name == "userdata9") - { - return property.userdata9; - } +if (name == "freeMb") return property.freeMb.ToString(); +if (name == "passive") return property.passive.ToString(); +if (name == "disabled") return property.disabled.ToString(); +if (name == "alwaysOnline") return property.alwaysOnline.ToString(); +if (name == "tariffName") return property.tariffName; +if (name == "nextTariff") return property.nextTariff; +if (name == "address") return property.address; +if (name == "note") return property.note; +if (name == "group") return property.group; +if (name == "email") return property.email; +if (name == "phone") return property.phone; +if (name == "realName") return property.realName; +if (name == "credit") return property.credit.ToString(); +if (name == "userdata0") return property.userdata0; +if (name == "userdata1") return property.userdata1; +if (name == "userdata2") return property.userdata2; +if (name == "userdata3") return property.userdata3; +if (name == "userdata4") return property.userdata4; +if (name == "userdata5") return property.userdata5; +if (name == "userdata6") return property.userdata6; +if (name == "userdata7") return property.userdata7; +if (name == "userdata8") return property.userdata8; +if (name == "userdata9") return property.userdata9; +if (name == "cash") return property.cash.ToString(); if (name == "id") { std::stringstream stream; stream << id; return stream.str();; } -if (name == "login") - { - return login; - } -if (name == "ip") - { - return currIP.ToString(); - } +if (name == "login") return login; +if (name == "ip") return currIP.ToString(); +return ""; } //----------------------------------------------------------------------------- //-----------------------------------------------------------------------------