mirror of
				https://github.com/Telecominfraproject/wlan-cloud-ucentralfms.git
				synced 2025-10-30 18:27:54 +00:00 
			
		
		
		
	Compare commits
	
		
			13 Commits
		
	
	
		
			v3.0.0
			...
			v2.4.0-RC5
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | e0507ceb82 | ||
|   | afc8b942cb | ||
|   | 5737ab7c00 | ||
|   | 1b59208fa2 | ||
|   | f5ee31bd8b | ||
|   | 9f9faafb1c | ||
|   | dc9d155b78 | ||
|   | b8a7a7aff9 | ||
|   | 3195679fee | ||
|   | d1a9556b27 | ||
|   | c45850b749 | ||
|   | ab859d1f77 | ||
|   | da5720cf8d | 
| @@ -25,8 +25,18 @@ else() | ||||
|     file(WRITE build ${BUILD_NUM}) | ||||
| endif() | ||||
|  | ||||
| set(BUILD_SHARED_LIBS 1) | ||||
| add_definitions(-DAPP_VERSION="${CMAKE_PROJECT_VERSION}" -DBUILD_NUMBER="${BUILD_NUM}" -DAWS_CUSTOM_MEMORY_MANAGEMENT) | ||||
| find_package(Git QUIET) | ||||
| if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git") | ||||
|     execute_process(COMMAND ${GIT_EXECUTABLE} describe --always --tags | ||||
|             WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | ||||
|             RESULT_VARIABLE GIT_RESULT | ||||
|             OUTPUT_VARIABLE GIT_HASH) | ||||
|     if(NOT GIT_RESULT EQUAL "0") | ||||
|         message(FATAL_ERROR "git describe --always --tags failed with ${GIT_RESULT}") | ||||
|     endif() | ||||
|     string(REGEX REPLACE "\n$" "" GIT_HASH "${GIT_HASH}") | ||||
| endif() | ||||
| add_definitions(-DAWS_CUSTOM_MEMORY_MANAGEMENT) | ||||
|  | ||||
| set(Boost_USE_STATIC_LIBS OFF) | ||||
| set(Boost_USE_MULTITHREADED ON) | ||||
| @@ -48,8 +58,11 @@ endif() | ||||
|  | ||||
| include_directories(/usr/local/include  /usr/local/opt/openssl/include src include/kafka /usr/local/opt/mysql-client/include) | ||||
|  | ||||
| configure_file(src/ow_version.h.in ${PROJECT_SOURCE_DIR}/src/ow_version.h @ONLY) | ||||
|  | ||||
| add_executable( owfms | ||||
|         build | ||||
|         src/ow_version.h.in | ||||
|         src/framework/CountryCodes.h | ||||
|         src/framework/KafkaTopics.h | ||||
|         src/framework/MicroService.h | ||||
|   | ||||
| @@ -56,6 +56,7 @@ RUN make install | ||||
| ADD CMakeLists.txt build /owfms/ | ||||
| ADD cmake /owfms/cmake | ||||
| ADD src /owfms/src | ||||
| ADD .git /owfms/.git | ||||
|  | ||||
| WORKDIR /owfms | ||||
| RUN mkdir cmake-build | ||||
|   | ||||
| @@ -8,7 +8,7 @@ fullnameOverride: "" | ||||
| images: | ||||
|   owfms: | ||||
|     repository: tip-tip-wlan-cloud-ucentral.jfrog.io/owfms | ||||
|     tag: main | ||||
|     tag: v2.4.0-RC5 | ||||
|     pullPolicy: Always | ||||
| #    regcred: | ||||
| #      registry: tip-tip-wlan-cloud-ucentral.jfrog.io | ||||
|   | ||||
| @@ -69,6 +69,8 @@ using namespace std::chrono_literals; | ||||
| #include "RESTObjects/RESTAPI_SecurityObjects.h" | ||||
| #include "nlohmann/json.hpp" | ||||
|  | ||||
| #include "ow_version.h" | ||||
|  | ||||
| namespace OpenWifi { | ||||
|  | ||||
|     enum UNAUTHORIZED_REASON { | ||||
| @@ -1900,7 +1902,7 @@ namespace OpenWifi { | ||||
| 	            QB_.SerialNumber = GetParameter(RESTAPI::Protocol::SERIALNUMBER, ""); | ||||
| 	            QB_.StartDate = GetParameter(RESTAPI::Protocol::STARTDATE, 0); | ||||
| 	            QB_.EndDate = GetParameter(RESTAPI::Protocol::ENDDATE, 0); | ||||
| 	            QB_.Offset = GetParameter(RESTAPI::Protocol::OFFSET, 1); | ||||
| 	            QB_.Offset = GetParameter(RESTAPI::Protocol::OFFSET, 0); | ||||
| 	            QB_.Limit = GetParameter(RESTAPI::Protocol::LIMIT, 100); | ||||
| 	            QB_.Filter = GetParameter(RESTAPI::Protocol::FILTER, ""); | ||||
| 	            QB_.Select = GetParameter(RESTAPI::Protocol::SELECT, ""); | ||||
| @@ -1912,7 +1914,7 @@ namespace OpenWifi { | ||||
| 	            QB_.AdditionalInfo = GetBoolParameter(RESTAPI::Protocol::WITHEXTENDEDINFO,false); | ||||
|  | ||||
| 	            if(QB_.Offset<1) | ||||
| 	                QB_.Offset=1; | ||||
| 	                QB_.Offset=0; | ||||
| 	            return true; | ||||
| 	        } | ||||
|  | ||||
| @@ -2393,10 +2395,10 @@ namespace OpenWifi { | ||||
|                                                             Poco::Logger & L, RESTAPI_GenericServer & S); | ||||
|  | ||||
|  | ||||
| 	class RESTAPI_server : public SubSystemServer { | ||||
| 	class RESTAPI_ExtServer : public SubSystemServer { | ||||
| 	public: | ||||
| 	    static RESTAPI_server *instance() { | ||||
| 	        static RESTAPI_server *instance_ = new RESTAPI_server; | ||||
| 	    static RESTAPI_ExtServer *instance() { | ||||
| 	        static RESTAPI_ExtServer *instance_ = new RESTAPI_ExtServer; | ||||
| 	        return instance_; | ||||
| 	    } | ||||
| 	    int Start() override; | ||||
| @@ -2410,7 +2412,7 @@ namespace OpenWifi { | ||||
|  | ||||
| 	    inline void reinitialize(Poco::Util::Application &self) override; | ||||
|  | ||||
| 	    inline Poco::Net::HTTPRequestHandler *CallServer(const char *Path) { | ||||
| 	    inline Poco::Net::HTTPRequestHandler *CallServer(const char *Path, uint64_t Id) { | ||||
| 	        RESTAPIHandler::BindingMap Bindings; | ||||
| 	        return RESTAPI_external_server(Path, Bindings, Logger_, Server_); | ||||
| 	    } | ||||
| @@ -2420,18 +2422,18 @@ namespace OpenWifi { | ||||
| 	    Poco::ThreadPool	    Pool_; | ||||
| 	    RESTAPI_GenericServer   Server_; | ||||
|  | ||||
| 	    RESTAPI_server() noexcept: | ||||
| 	    RESTAPI_ExtServer() noexcept: | ||||
| 	    SubSystemServer("RESTAPIServer", "RESTAPIServer", "openwifi.restapi") | ||||
|             { | ||||
|             } | ||||
| 	}; | ||||
|  | ||||
| 	inline RESTAPI_server * RESTAPI_server() { return RESTAPI_server::instance(); }; | ||||
| 	inline RESTAPI_ExtServer * RESTAPI_ExtServer() { return RESTAPI_ExtServer::instance(); }; | ||||
|  | ||||
| 	class RequestHandlerFactory : public Poco::Net::HTTPRequestHandlerFactory { | ||||
| 	class ExtRequestHandlerFactory : public Poco::Net::HTTPRequestHandlerFactory { | ||||
| 	public: | ||||
| 	    RequestHandlerFactory(RESTAPI_GenericServer & Server) : | ||||
| 	    Logger_(RESTAPI_server::instance()->Logger()), | ||||
| 	  	explicit ExtRequestHandlerFactory(RESTAPI_GenericServer & Server) : | ||||
| 			Logger_(RESTAPI_ExtServer::instance()->Logger()), | ||||
| 			Server_(Server) | ||||
| 	    { | ||||
|  | ||||
| @@ -2440,15 +2442,16 @@ namespace OpenWifi { | ||||
| 	    inline Poco::Net::HTTPRequestHandler *createRequestHandler(const Poco::Net::HTTPServerRequest &Request) override { | ||||
| 	        Poco::URI uri(Request.getURI()); | ||||
| 	        auto *Path = uri.getPath().c_str(); | ||||
| 	        return RESTAPI_server()->CallServer(Path); | ||||
| 	        return RESTAPI_ExtServer()->CallServer(Path, TransactionId_++); | ||||
| 	    } | ||||
|  | ||||
| 	private: | ||||
| 		static inline std::atomic_uint64_t  TransactionId_ = 1; | ||||
| 	    Poco::Logger            			&Logger_; | ||||
| 	    RESTAPI_GenericServer   			&Server_; | ||||
| 	}; | ||||
|  | ||||
| 	inline int RESTAPI_server::Start() { | ||||
| 	inline int RESTAPI_ExtServer::Start() { | ||||
| 	    Logger_.information("Starting."); | ||||
| 	    Server_.InitLogging(); | ||||
|  | ||||
| @@ -2467,7 +2470,7 @@ namespace OpenWifi { | ||||
| 	        Params->setMaxQueued(200); | ||||
| 	        Params->setKeepAlive(true); | ||||
|  | ||||
| 	        auto NewServer = std::make_unique<Poco::Net::HTTPServer>(new RequestHandlerFactory(Server_), Pool_, Sock, Params); | ||||
| 	        auto NewServer = std::make_unique<Poco::Net::HTTPServer>(new ExtRequestHandlerFactory(Server_), Pool_, Sock, Params); | ||||
| 	        NewServer->start(); | ||||
| 	        RESTServers_.push_back(std::move(NewServer)); | ||||
| 	    } | ||||
| @@ -2475,11 +2478,11 @@ namespace OpenWifi { | ||||
| 	    return 0; | ||||
| 	} | ||||
|  | ||||
| 	class RESTAPI_InternalServer : public SubSystemServer { | ||||
| 	class RESTAPI_IntServer : public SubSystemServer { | ||||
|  | ||||
| 	public: | ||||
| 	    static RESTAPI_InternalServer *instance() { | ||||
| 	        static RESTAPI_InternalServer *instance_ = new RESTAPI_InternalServer; | ||||
| 	    static RESTAPI_IntServer *instance() { | ||||
| 	        static RESTAPI_IntServer *instance_ = new RESTAPI_IntServer; | ||||
| 	        return instance_; | ||||
| 	    } | ||||
|  | ||||
| @@ -2488,12 +2491,13 @@ namespace OpenWifi { | ||||
| 	        Logger_.information("Stopping "); | ||||
| 	        for( const auto & svr : RESTServers_ ) | ||||
| 	            svr->stop(); | ||||
| 	        Pool_.stopAll(); | ||||
| 			Pool_.joinAll(); | ||||
| 			RESTServers_.clear(); | ||||
| 	    } | ||||
|  | ||||
| 	    inline void reinitialize(Poco::Util::Application &self) override; | ||||
|  | ||||
| 	    inline Poco::Net::HTTPRequestHandler *CallServer(const char *Path) { | ||||
| 	    inline Poco::Net::HTTPRequestHandler *CallServer(const char *Path, uint64_t Id) { | ||||
| 	        RESTAPIHandler::BindingMap Bindings; | ||||
| 	        return RESTAPI_internal_server(Path, Bindings, Logger_, Server_); | ||||
| 	    } | ||||
| @@ -2502,30 +2506,31 @@ namespace OpenWifi { | ||||
| 	    Poco::ThreadPool	    Pool_; | ||||
| 	    RESTAPI_GenericServer   Server_; | ||||
|  | ||||
| 	    RESTAPI_InternalServer() noexcept: SubSystemServer("RESTAPIInternalServer", "REST-ISRV", "openwifi.internal.restapi") | ||||
| 	    RESTAPI_IntServer() noexcept: SubSystemServer("RESTAPIInternalServer", "REST-ISRV", "openwifi.internal.restapi") | ||||
| 	    { | ||||
| 	    } | ||||
| 	}; | ||||
|  | ||||
| 	inline RESTAPI_InternalServer * RESTAPI_InternalServer() { return RESTAPI_InternalServer::instance(); }; | ||||
| 	inline RESTAPI_IntServer * RESTAPI_IntServer() { return RESTAPI_IntServer::instance(); }; | ||||
|  | ||||
| 	class InternalRequestHandlerFactory : public Poco::Net::HTTPRequestHandlerFactory { | ||||
| 	class IntRequestHandlerFactory : public Poco::Net::HTTPRequestHandlerFactory { | ||||
| 	public: | ||||
| 	    InternalRequestHandlerFactory(RESTAPI_GenericServer & Server) : | ||||
| 	    Logger_(RESTAPI_InternalServer()->Logger()), | ||||
| 	  	explicit IntRequestHandlerFactory(RESTAPI_GenericServer & Server) : | ||||
| 	    Logger_(RESTAPI_IntServer()->Logger()), | ||||
| 	    Server_(Server){} | ||||
|  | ||||
| 	    inline Poco::Net::HTTPRequestHandler *createRequestHandler(const Poco::Net::HTTPServerRequest &Request) override { | ||||
| 	        Poco::URI uri(Request.getURI()); | ||||
| 	        auto *Path = uri.getPath().c_str(); | ||||
| 	        return RESTAPI_InternalServer()->CallServer(Path); | ||||
| 	        return RESTAPI_IntServer()->CallServer(Path, TransactionId_++); | ||||
| 	    } | ||||
| 	private: | ||||
| 		static inline std::atomic_uint64_t  TransactionId_ = 1; | ||||
| 	    Poco::Logger    & Logger_; | ||||
| 	    RESTAPI_GenericServer   & Server_; | ||||
| 	}; | ||||
|  | ||||
| 	inline int RESTAPI_InternalServer::Start() { | ||||
| 	inline int RESTAPI_IntServer::Start() { | ||||
| 	    Logger_.information("Starting."); | ||||
| 	    Server_.InitLogging(); | ||||
|  | ||||
| @@ -2543,7 +2548,7 @@ namespace OpenWifi { | ||||
| 	        Params->setMaxQueued(200); | ||||
| 	        Params->setKeepAlive(true); | ||||
|  | ||||
| 	        auto NewServer = std::make_unique<Poco::Net::HTTPServer>(new InternalRequestHandlerFactory(Server_), Pool_, Sock, Params); | ||||
| 	        auto NewServer = std::make_unique<Poco::Net::HTTPServer>(new IntRequestHandlerFactory(Server_), Pool_, Sock, Params); | ||||
| 	        NewServer->start(); | ||||
| 	        RESTServers_.push_back(std::move(NewServer)); | ||||
| 	    } | ||||
| @@ -2673,7 +2678,7 @@ namespace OpenWifi { | ||||
| 		std::string 				MyPrivateEndPoint_; | ||||
| 		std::string 				MyPublicEndPoint_; | ||||
| 		std::string                 UIURI_; | ||||
| 		std::string 				Version_{std::string(APP_VERSION) + "("+ BUILD_NUMBER + ")"}; | ||||
| 		std::string 				Version_{ OW_VERSION::VERSION + "("+ OW_VERSION::BUILD + ")" + " - " + OW_VERSION::HASH }; | ||||
| 		BusEventManager				BusEventManager_; | ||||
| 		std::mutex 					InfraMutex_; | ||||
| 		std::default_random_engine  RandomEngine_; | ||||
| @@ -2824,8 +2829,8 @@ namespace OpenWifi { | ||||
| 	    // add the default services | ||||
| 	    SubSystems_.push_back(KafkaManager()); | ||||
| 	    SubSystems_.push_back(ALBHealthCheckServer()); | ||||
| 	    SubSystems_.push_back(RESTAPI_server()); | ||||
| 	    SubSystems_.push_back(RESTAPI_InternalServer()); | ||||
| 	    SubSystems_.push_back(RESTAPI_ExtServer()); | ||||
| 	    SubSystems_.push_back(RESTAPI_IntServer()); | ||||
|  | ||||
| 	    Poco::Net::initializeSSL(); | ||||
| 	    Poco::Net::HTTPStreamFactory::registerFactory(); | ||||
| @@ -3395,14 +3400,14 @@ namespace OpenWifi { | ||||
| 	    Consumer.unsubscribe(); | ||||
| 	} | ||||
|  | ||||
| 	inline void RESTAPI_server::reinitialize(Poco::Util::Application &self) { | ||||
| 	inline void RESTAPI_ExtServer::reinitialize(Poco::Util::Application &self) { | ||||
| 	    MicroService::instance().LoadConfigurationFile(); | ||||
| 	    Logger_.information("Reinitializing."); | ||||
| 	    Stop(); | ||||
| 	    Start(); | ||||
| 	} | ||||
|  | ||||
| 	void RESTAPI_InternalServer::reinitialize(Poco::Util::Application &self) { | ||||
| 	void RESTAPI_IntServer::reinitialize(Poco::Util::Application &self) { | ||||
| 	    MicroService::instance().LoadConfigurationFile(); | ||||
| 	    Logger_.information("Reinitializing."); | ||||
| 	    Stop(); | ||||
| @@ -3726,7 +3731,7 @@ namespace OpenWifi { | ||||
|             if (AuthClient()->IsAuthorized( SessionToken_, UserInfo_, Expired)) { | ||||
| #endif | ||||
|                 if(Server_.LogIt(Request->getMethod(),true)) { | ||||
|                     Logger_.debug(Poco::format("X-REQ-ALLOWED(%s): User='%s@%s' Method='%s' Path='%s", | ||||
|                     Logger_.debug(Poco::format("X-REQ-ALLOWED(%s): User='%s@%s' Method='%s' Path='%s'", | ||||
|                                                UserInfo_.userinfo.email, | ||||
|                                                Utils::FormatIPv6(Request->clientAddress().toString()), | ||||
|                                                Request->clientAddress().toString(), | ||||
| @@ -3736,7 +3741,7 @@ namespace OpenWifi { | ||||
|                 return true; | ||||
|             } else { | ||||
|                 if(Server_.LogBadTokens(true)) { | ||||
|                     Logger_.debug(Poco::format("X-REQ-DENIED(%s): Method='%s' Path='%s", | ||||
|                     Logger_.debug(Poco::format("X-REQ-DENIED(%s): Method='%s' Path='%s'", | ||||
|                                                Utils::FormatIPv6(Request->clientAddress().toString()), | ||||
|                                                Request->getMethod(), Request->getURI())); | ||||
|                 } | ||||
|   | ||||
| @@ -2,8 +2,7 @@ | ||||
| // Created by stephane bourque on 2021-10-06. | ||||
| // | ||||
|  | ||||
| #ifndef OPENWIFI_STORAGE_H | ||||
| #define OPENWIFI_STORAGE_H | ||||
| #pragma once | ||||
|  | ||||
| #include "Poco/Data/Session.h" | ||||
| #include "Poco/Data/SessionPool.h" | ||||
| @@ -54,13 +53,13 @@ namespace OpenWifi { | ||||
|  | ||||
|         [[nodiscard]] inline std::string ComputeRange(uint64_t From, uint64_t HowMany) { | ||||
|             if(dbType_==sqlite) { | ||||
|                 return " LIMIT " + std::to_string(From-1) + ", " + std::to_string(HowMany) + " "; | ||||
|                 return " LIMIT " + std::to_string(From) + ", " + std::to_string(HowMany) + " "; | ||||
|             } else if(dbType_==pgsql) { | ||||
|                 return " LIMIT " + std::to_string(HowMany) + " OFFSET " + std::to_string(From-1) + " "; | ||||
|                 return " LIMIT " + std::to_string(HowMany) + " OFFSET " + std::to_string(From) + " "; | ||||
|             } else if(dbType_==mysql) { | ||||
|                 return " LIMIT " + std::to_string(HowMany) + " OFFSET " + std::to_string(From-1) + " "; | ||||
|                 return " LIMIT " + std::to_string(HowMany) + " OFFSET " + std::to_string(From) + " "; | ||||
|             } | ||||
|             return " LIMIT " + std::to_string(HowMany) + " OFFSET " + std::to_string(From-1) + " "; | ||||
|             return " LIMIT " + std::to_string(HowMany) + " OFFSET " + std::to_string(From) + " "; | ||||
|         } | ||||
|  | ||||
|         inline std::string ConvertParams(const std::string & S) const { | ||||
| @@ -165,5 +164,3 @@ namespace OpenWifi { | ||||
| #endif | ||||
|  | ||||
| } | ||||
|  | ||||
| #endif //OPENWIFI_STORAGE_H | ||||
|   | ||||
							
								
								
									
										13
									
								
								src/ow_version.h.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/ow_version.h.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| // | ||||
| // Created by stephane bourque on 2021-12-06. | ||||
| // | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| #include <string> | ||||
|  | ||||
| namespace OW_VERSION { | ||||
|     inline static const std::string VERSION{"@CMAKE_PROJECT_VERSION@"}; | ||||
|     inline static const std::string BUILD{"@BUILD_NUM@"}; | ||||
|     inline static const std::string HASH{"@GIT_HASH@"}; | ||||
| } | ||||
| @@ -65,7 +65,7 @@ namespace OpenWifi { | ||||
|             if(LatestFirmwareCache()->AddToCache(F.deviceType,F.revision,F.id,F.imageDate)) { | ||||
|                 F.latest = true ; | ||||
|                 Poco::Data::Statement   Update(Sess); | ||||
|                 std::string st{"UPDATE " + DBNAME_FIRMWARES + " SET latest=0 WHERE deviceType=? AND Latest=1"}; | ||||
|                 std::string st{"UPDATE " + DBNAME_FIRMWARES + " SET latest=false WHERE deviceType=? AND Latest=true"}; | ||||
|                 Update <<   ConvertParams(st), | ||||
|                             Poco::Data::Keywords::use(F.deviceType); | ||||
|                 Update.execute(); | ||||
|   | ||||
| @@ -25,7 +25,7 @@ namespace OpenWifi { | ||||
|             "location           varchar, " | ||||
|             "uploader           varchar, " | ||||
|             "digest             varchar, " | ||||
|             "latest             int,  " | ||||
|             "latest             boolean,  " | ||||
|             "notes              text, " | ||||
|             "created            bigint" | ||||
|     }; | ||||
| @@ -88,7 +88,7 @@ namespace OpenWifi { | ||||
|             std::string, | ||||
|             std::string, | ||||
|             std::string, | ||||
|             uint64_t, | ||||
|             bool, | ||||
|             std::string, | ||||
|             uint64_t> FirmwaresRecord; | ||||
|     typedef std::vector<FirmwaresRecord> FirmwaresRecordList; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user