diff --git a/src/RESTObjects/RESTAPI_SecurityObjects.cpp b/src/RESTObjects/RESTAPI_SecurityObjects.cpp index c368ee2..5cbe149 100644 --- a/src/RESTObjects/RESTAPI_SecurityObjects.cpp +++ b/src/RESTObjects/RESTAPI_SecurityObjects.cpp @@ -172,12 +172,14 @@ namespace OpenWifi::SecurityObjects { void UserLoginLoginExtensions::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "mobiles", mobiles); field_to_json(Obj, "mfa", mfa); + field_to_json(Obj, "authenticatorSecret", authenticatorSecret); } bool UserLoginLoginExtensions::from_json(Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj,"mobiles",mobiles); field_from_json(Obj,"mfa",mfa); + field_from_json(Obj, "authenticatorSecret", authenticatorSecret); return true; } catch (...) { @@ -254,6 +256,7 @@ namespace OpenWifi::SecurityObjects { field_to_json(Obj,"lastPasswords",lastPasswords); field_to_json(Obj,"oauthType",oauthType); field_to_json(Obj,"oauthUserInfo",oauthUserInfo); + field_to_json(Obj,"modified",modified); }; bool UserInfo::from_json(const Poco::JSON::Object::Ptr &Obj) { @@ -288,6 +291,7 @@ namespace OpenWifi::SecurityObjects { field_from_json(Obj,"lastPasswords",lastPasswords); field_from_json(Obj,"oauthType",oauthType); field_from_json(Obj,"oauthUserInfo",oauthUserInfo); + field_from_json(Obj,"modified",modified); return true; } catch (const Poco::Exception &E) { @@ -496,6 +500,7 @@ namespace OpenWifi::SecurityObjects { field_to_json(Obj,"expires",expires); field_to_json(Obj,"completed",completed); field_to_json(Obj,"canceled",canceled); + field_to_json(Obj,"userAction",userAction); } bool ActionLink::from_json(Poco::JSON::Object::Ptr &Obj) { @@ -512,6 +517,7 @@ namespace OpenWifi::SecurityObjects { field_from_json(Obj,"expires",expires); field_from_json(Obj,"completed",completed); field_from_json(Obj,"canceled",canceled); + field_from_json(Obj,"userAction",userAction); return true; } catch(...) { @@ -585,5 +591,12 @@ namespace OpenWifi::SecurityObjects { return false; } + void LoginRecordInfo::to_json(Poco::JSON::Object &Obj) const { + field_to_json(Obj,"sessionId",sessionId); + field_to_json(Obj,"userId",userId); + field_to_json(Obj,"email",email); + field_to_json(Obj,"login",login); + field_to_json(Obj,"logout",logout); + } } diff --git a/src/RESTObjects/RESTAPI_SecurityObjects.h b/src/RESTObjects/RESTAPI_SecurityObjects.h index 15a9b4b..9b532ca 100644 --- a/src/RESTObjects/RESTAPI_SecurityObjects.h +++ b/src/RESTObjects/RESTAPI_SecurityObjects.h @@ -81,7 +81,8 @@ namespace OpenWifi { struct UserLoginLoginExtensions { std::vector mobiles; - struct MfaAuthInfo mfa; + struct MfaAuthInfo mfa; + std::string authenticatorSecret; void to_json(Poco::JSON::Object &Obj) const; bool from_json(Poco::JSON::Object::Ptr &Obj); @@ -136,6 +137,7 @@ namespace OpenWifi { OpenWifi::Types::StringVec lastPasswords; std::string oauthType; std::string oauthUserInfo; + uint64_t modified; void to_json(Poco::JSON::Object &Obj) const; bool from_json(const Poco::JSON::Object::Ptr &Obj); @@ -247,6 +249,7 @@ namespace OpenWifi { uint64_t expires=0; uint64_t completed=0; uint64_t canceled=0; + bool userAction=true; void to_json(Poco::JSON::Object &Obj) const; bool from_json(Poco::JSON::Object::Ptr &Obj); @@ -292,5 +295,14 @@ namespace OpenWifi { Poco::Data::LOB avatar; }; + struct LoginRecordInfo { + std::string sessionId; + std::string userId; + std::string email; + uint64_t login=0; + uint64_t logout=0; + + void to_json(Poco::JSON::Object &Obj) const; + }; } } diff --git a/src/framework/MicroService.h b/src/framework/MicroService.h index 5b476a0..2faf80e 100644 --- a/src/framework/MicroService.h +++ b/src/framework/MicroService.h @@ -1294,7 +1294,7 @@ namespace OpenWifi { Context->enableSessionCache(); Context->setSessionCacheSize(0); - Context->setSessionTimeout(10); + Context->setSessionTimeout(60); Context->enableExtendedCertificateVerification(true); Context->disableStatelessSessionResumption(); } @@ -3030,6 +3030,19 @@ namespace OpenWifi { inline void InitializeLoggingSystem(); inline void SaveConfig() { PropConfigurationFile_->save(ConfigFileName_); } inline auto UpdateConfig() { return PropConfigurationFile_; } + inline void AddActivity(const std::string &Activity) { + if(!DataDir_.empty()) { + std::string ActivityFile{ DataDir_ + "/activity.log"}; + try { + std::ofstream of(ActivityFile,std::ios_base::app | std::ios_base::out ); + auto t = std::chrono::system_clock::now(); + std::time_t now = std::chrono::system_clock::to_time_t(t); + of << Activity << " at " << std::ctime(&now) ; + } catch (...) { + + } + } + } private: static MicroService * instance_; bool HelpRequested_ = false; @@ -3274,6 +3287,8 @@ namespace OpenWifi { if(WWWAssetsDir_.empty()) WWWAssetsDir_ = DataDir_; + + LoadMyConfig(); InitializeSubSystemServers(); @@ -3371,6 +3386,7 @@ namespace OpenWifi { } inline void MicroService::StartSubSystemServers() { + AddActivity("Starting"); for(auto i:SubSystems_) { i->Start(); } @@ -3378,6 +3394,7 @@ namespace OpenWifi { } inline void MicroService::StopSubSystemServers() { + AddActivity("Stopping"); BusEventManager_.Stop(); for(auto i=SubSystems_.rbegin(); i!=SubSystems_.rend(); ++i) { (*i)->Stop(); diff --git a/src/framework/RESTAPI_errors.h b/src/framework/RESTAPI_errors.h index c35f2fa..9121077 100644 --- a/src/framework/RESTAPI_errors.h +++ b/src/framework/RESTAPI_errors.h @@ -60,5 +60,8 @@ namespace OpenWifi::RESTAPI::Errors { static const std::string InsufficientAccessRights{"Insufficient access rights to complete the operation."}; static const std::string ExpiredToken{"Token has expired, user must login."}; static const std::string SubscriberMustExist{"Subscriber must exist."}; + static const std::string AuthenticatorVerificationIncomplete{"Authenticator validation is not complete."}; + static const std::string SMSCouldNotBeSentRetry{"SMS could not be sent to validate device, try later or change the phone number."}; + static const std::string SMSCouldNotValidate{"Code and number could not be validated"}; } diff --git a/src/framework/RESTAPI_protocol.h b/src/framework/RESTAPI_protocol.h index 664a91d..d8a9a88 100644 --- a/src/framework/RESTAPI_protocol.h +++ b/src/framework/RESTAPI_protocol.h @@ -90,6 +90,7 @@ namespace OpenWifi::RESTAPI::Protocol { static const char * LASTONLY = "lastOnly"; static const char * NEWEST = "newest"; static const char * ACTIVESCAN = "activeScan"; + static const char * OVERRIDEDFS = "override_dfs"; static const char * LIST = "list"; static const char * TAG = "tag"; static const char * TAGLIST = "tagList"; diff --git a/src/framework/uCentral_Protocol.h b/src/framework/uCentral_Protocol.h index 8a6094a..515e37d 100644 --- a/src/framework/uCentral_Protocol.h +++ b/src/framework/uCentral_Protocol.h @@ -38,6 +38,7 @@ namespace OpenWifi::uCentralProtocol { static const char * LOGLINES = "loglines"; static const char * SEVERITY = "severity"; static const char * ACTIVE = "active"; + static const char * OVERRIDEDFS = "override_dfs"; static const char * REBOOT = "reboot"; static const char * WHEN = "when"; static const char * CONFIG = "config";