mirror of
https://github.com/Telecominfraproject/wlan-cloud-owprov.git
synced 2025-10-30 02:02:36 +00:00
This commit is contained in:
@@ -79,6 +79,7 @@ add_executable(owprov
|
|||||||
src/framework/ConfigurationValidator.h
|
src/framework/ConfigurationValidator.h
|
||||||
src/framework/ow_constants.h
|
src/framework/ow_constants.h
|
||||||
src/framework/WebSocketClientNotifications.h
|
src/framework/WebSocketClientNotifications.h
|
||||||
|
src/framework/MicroServiceErrorHandler.h
|
||||||
src/RESTObjects/RESTAPI_SecurityObjects.h src/RESTObjects/RESTAPI_SecurityObjects.cpp
|
src/RESTObjects/RESTAPI_SecurityObjects.h src/RESTObjects/RESTAPI_SecurityObjects.cpp
|
||||||
src/RESTObjects/RESTAPI_ProvObjects.cpp src/RESTObjects/RESTAPI_ProvObjects.h
|
src/RESTObjects/RESTAPI_ProvObjects.cpp src/RESTObjects/RESTAPI_ProvObjects.h
|
||||||
src/RESTObjects/RESTAPI_GWobjects.h src/RESTObjects/RESTAPI_GWobjects.cpp
|
src/RESTObjects/RESTAPI_GWobjects.h src/RESTObjects/RESTAPI_GWobjects.cpp
|
||||||
|
|||||||
27
Dockerfile
27
Dockerfile
@@ -1,17 +1,16 @@
|
|||||||
ARG ALPINE_VERSION=3.16.2
|
ARG DEBIAN_VERSION=11.4-slim
|
||||||
ARG POCO_VERSION=poco-tip-v1
|
ARG POCO_VERSION=poco-tip-v1
|
||||||
ARG FMTLIB_VERSION=9.0.0
|
ARG FMTLIB_VERSION=9.0.0
|
||||||
ARG CPPKAFKA_VERSION=tip-v1
|
ARG CPPKAFKA_VERSION=tip-v1
|
||||||
ARG JSON_VALIDATOR_VERSION=2.1.0
|
ARG JSON_VALIDATOR_VERSION=2.1.0
|
||||||
|
|
||||||
FROM alpine:$ALPINE_VERSION AS build-base
|
FROM debian:$DEBIAN_VERSION AS build-base
|
||||||
|
|
||||||
RUN apk add --update --no-cache \
|
RUN apt-get update && apt-get install --no-install-recommends -y \
|
||||||
make cmake g++ git \
|
make cmake g++ git \
|
||||||
unixodbc-dev postgresql-dev mariadb-dev \
|
unixodbc-dev libpq-dev libmariadb-dev libmariadbclient-dev-compat \
|
||||||
librdkafka-dev boost-dev openssl-dev \
|
librdkafka-dev libboost-all-dev libssl-dev \
|
||||||
zlib-dev nlohmann-json \
|
zlib1g-dev nlohmann-json3-dev ca-certificates libcurl4-openssl-dev
|
||||||
curl-dev
|
|
||||||
|
|
||||||
FROM build-base AS poco-build
|
FROM build-base AS poco-build
|
||||||
|
|
||||||
@@ -91,21 +90,21 @@ WORKDIR /owprov/cmake-build
|
|||||||
RUN cmake ..
|
RUN cmake ..
|
||||||
RUN cmake --build . --config Release -j8
|
RUN cmake --build . --config Release -j8
|
||||||
|
|
||||||
FROM alpine:$ALPINE_VERSION
|
FROM debian:$DEBIAN_VERSION
|
||||||
|
|
||||||
ENV OWPROV_USER=owprov \
|
ENV OWPROV_USER=owprov \
|
||||||
OWPROV_ROOT=/owprov-data \
|
OWPROV_ROOT=/owprov-data \
|
||||||
OWPROV_CONFIG=/owprov-data
|
OWPROV_CONFIG=/owprov-data
|
||||||
|
|
||||||
RUN addgroup -S "$OWPROV_USER" && \
|
RUN useradd "$OWPROV_USER"
|
||||||
adduser -S -G "$OWPROV_USER" "$OWPROV_USER"
|
|
||||||
|
|
||||||
RUN mkdir /openwifi
|
RUN mkdir /openwifi
|
||||||
RUN mkdir -p "$OWPROV_ROOT" "$OWPROV_CONFIG" && \
|
RUN mkdir -p "$OWPROV_ROOT" "$OWPROV_CONFIG" && \
|
||||||
chown "$OWPROV_USER": "$OWPROV_ROOT" "$OWPROV_CONFIG"
|
chown "$OWPROV_USER": "$OWPROV_ROOT" "$OWPROV_CONFIG"
|
||||||
|
|
||||||
RUN apk add --update --no-cache librdkafka su-exec gettext ca-certificates bash jq curl \
|
RUN apt-get update && apt-get install --no-install-recommends -y \
|
||||||
mariadb-connector-c libpq unixodbc postgresql-client
|
librdkafka++1 gosu gettext ca-certificates bash jq curl wget \
|
||||||
|
libmariadb-dev-compat libpq5 unixodbc
|
||||||
|
|
||||||
COPY readiness_check /readiness_check
|
COPY readiness_check /readiness_check
|
||||||
COPY test_scripts/curl/cli /cli
|
COPY test_scripts/curl/cli /cli
|
||||||
@@ -114,12 +113,14 @@ COPY owprov.properties.tmpl /
|
|||||||
COPY docker-entrypoint.sh /
|
COPY docker-entrypoint.sh /
|
||||||
COPY wait-for-postgres.sh /
|
COPY wait-for-postgres.sh /
|
||||||
RUN wget https://raw.githubusercontent.com/Telecominfraproject/wlan-cloud-ucentral-deploy/main/docker-compose/certs/restapi-ca.pem \
|
RUN wget https://raw.githubusercontent.com/Telecominfraproject/wlan-cloud-ucentral-deploy/main/docker-compose/certs/restapi-ca.pem \
|
||||||
-O /usr/local/share/ca-certificates/restapi-ca-selfsigned.pem
|
-O /usr/local/share/ca-certificates/restapi-ca-selfsigned.crt
|
||||||
|
|
||||||
COPY --from=owprov-build /owprov/cmake-build/owprov /openwifi/owprov
|
COPY --from=owprov-build /owprov/cmake-build/owprov /openwifi/owprov
|
||||||
COPY --from=cppkafka-build /cppkafka/cmake-build/src/lib/* /usr/local/lib
|
COPY --from=cppkafka-build /cppkafka/cmake-build/src/lib/* /usr/local/lib
|
||||||
COPY --from=poco-build /poco/cmake-build/lib/* /usr/local/lib
|
COPY --from=poco-build /poco/cmake-build/lib/* /usr/local/lib
|
||||||
|
|
||||||
|
RUN ldconfig
|
||||||
|
|
||||||
EXPOSE 16005 17005 16105
|
EXPOSE 16005 17005 16105
|
||||||
|
|
||||||
ENTRYPOINT ["/docker-entrypoint.sh"]
|
ENTRYPOINT ["/docker-entrypoint.sh"]
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
if [ "$SELFSIGNED_CERTS" = 'true' ]; then
|
if [ "$SELFSIGNED_CERTS" = 'true' ]; then
|
||||||
@@ -49,7 +49,7 @@ if [ "$1" = '/openwifi/owprov' -a "$(id -u)" = '0' ]; then
|
|||||||
if [ "$RUN_CHOWN" = 'true' ]; then
|
if [ "$RUN_CHOWN" = 'true' ]; then
|
||||||
chown -R "$OWPROV_USER": "$OWPROV_ROOT" "$OWPROV_CONFIG"
|
chown -R "$OWPROV_USER": "$OWPROV_ROOT" "$OWPROV_CONFIG"
|
||||||
fi
|
fi
|
||||||
exec su-exec "$OWPROV_USER" "$@"
|
exec gosu "$OWPROV_USER" "$@"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec "$@"
|
exec "$@"
|
||||||
|
|||||||
@@ -96,8 +96,10 @@ using namespace std::chrono_literals;
|
|||||||
#include "Poco/NObserver.h"
|
#include "Poco/NObserver.h"
|
||||||
#include "Poco/Net/SocketNotification.h"
|
#include "Poco/Net/SocketNotification.h"
|
||||||
#include "Poco/Base64Decoder.h"
|
#include "Poco/Base64Decoder.h"
|
||||||
|
#include "Poco/ThreadLocal.h"
|
||||||
#include "cppkafka/cppkafka.h"
|
#include "cppkafka/cppkafka.h"
|
||||||
|
|
||||||
|
#include "framework/MicroServiceErrorHandler.h"
|
||||||
#include "framework/OpenWifiTypes.h"
|
#include "framework/OpenWifiTypes.h"
|
||||||
#include "framework/KafkaTopics.h"
|
#include "framework/KafkaTopics.h"
|
||||||
#include "framework/ow_constants.h"
|
#include "framework/ow_constants.h"
|
||||||
@@ -667,6 +669,19 @@ namespace OpenWifi::RESTAPI_utils {
|
|||||||
|
|
||||||
namespace OpenWifi::Utils {
|
namespace OpenWifi::Utils {
|
||||||
|
|
||||||
|
inline bool NormalizeMac(std::string & Mac) {
|
||||||
|
Poco::replaceInPlace(Mac,":","");
|
||||||
|
Poco::replaceInPlace(Mac,"-","");
|
||||||
|
if(Mac.size()!=12)
|
||||||
|
return false;
|
||||||
|
for(const auto &i:Mac) {
|
||||||
|
if(!std::isxdigit(i))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
Poco::toLowerInPlace(Mac);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
inline void SetThreadName(const char *name) {
|
inline void SetThreadName(const char *name) {
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
Poco::Thread::current()->setName(name);
|
Poco::Thread::current()->setName(name);
|
||||||
@@ -1346,28 +1361,6 @@ namespace OpenWifi {
|
|||||||
Poco::ExpireLRUCache<KeyType,Record> Cache_{Size,Expiry};
|
Poco::ExpireLRUCache<KeyType,Record> Cache_{Size,Expiry};
|
||||||
};
|
};
|
||||||
|
|
||||||
class MyErrorHandler : public Poco::ErrorHandler {
|
|
||||||
public:
|
|
||||||
explicit MyErrorHandler(Poco::Util::Application &App) : App_(App) {}
|
|
||||||
inline void exception(const Poco::Exception & E) {
|
|
||||||
Poco::Thread * CurrentThread = Poco::Thread::current();
|
|
||||||
App_.logger().log(E);
|
|
||||||
poco_error(App_.logger(), fmt::format("Exception occurred in {}",CurrentThread->getName()));
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void exception(const std::exception & E) {
|
|
||||||
Poco::Thread * CurrentThread = Poco::Thread::current();
|
|
||||||
poco_warning(App_.logger(), fmt::format("std::exception in {}: {}",CurrentThread->getName(),E.what()));
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void exception() {
|
|
||||||
Poco::Thread * CurrentThread = Poco::Thread::current();
|
|
||||||
poco_warning(App_.logger(), fmt::format("exception in {}",CurrentThread->getName()));
|
|
||||||
}
|
|
||||||
private:
|
|
||||||
Poco::Util::Application &App_;
|
|
||||||
};
|
|
||||||
|
|
||||||
class BusEventManager : public Poco::Runnable {
|
class BusEventManager : public Poco::Runnable {
|
||||||
public:
|
public:
|
||||||
explicit BusEventManager(Poco::Logger &L) : Logger_(L) {
|
explicit BusEventManager(Poco::Logger &L) : Logger_(L) {
|
||||||
@@ -3082,7 +3075,7 @@ namespace OpenWifi {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<std::unique_ptr<Poco::Net::HTTPServer>> RESTServers_;
|
std::vector<std::unique_ptr<Poco::Net::HTTPServer>> RESTServers_;
|
||||||
Poco::ThreadPool Pool_{"x-rest",4,128};
|
Poco::ThreadPool Pool_{"x-rest",32,128};
|
||||||
RESTAPI_GenericServer Server_;
|
RESTAPI_GenericServer Server_;
|
||||||
|
|
||||||
RESTAPI_ExtServer() noexcept:
|
RESTAPI_ExtServer() noexcept:
|
||||||
@@ -3099,15 +3092,16 @@ namespace OpenWifi {
|
|||||||
inline Poco::Net::HTTPRequestHandler *createRequestHandler(const Poco::Net::HTTPServerRequest &Request) override {
|
inline Poco::Net::HTTPRequestHandler *createRequestHandler(const Poco::Net::HTTPServerRequest &Request) override {
|
||||||
try {
|
try {
|
||||||
Poco::URI uri(Request.getURI());
|
Poco::URI uri(Request.getURI());
|
||||||
Utils::SetThreadName(fmt::format("x-rest:{}",TransactionId_).c_str());
|
auto TID = NextTransactionId_++;
|
||||||
return RESTAPI_ExtServer()->CallServer(uri.getPath(), TransactionId_++);
|
Utils::SetThreadName(fmt::format("x-rest:{}",TID).c_str());
|
||||||
|
return RESTAPI_ExtServer()->CallServer(uri.getPath(), TID);
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
|
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
static inline std::atomic_uint64_t TransactionId_ = 1;
|
static inline std::atomic_uint64_t NextTransactionId_ = 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
class LogMuxer : public Poco::Channel {
|
class LogMuxer : public Poco::Channel {
|
||||||
@@ -3215,7 +3209,7 @@ namespace OpenWifi {
|
|||||||
const Poco::ThreadPool & Pool() { return Pool_; }
|
const Poco::ThreadPool & Pool() { return Pool_; }
|
||||||
private:
|
private:
|
||||||
std::vector<std::unique_ptr<Poco::Net::HTTPServer>> RESTServers_;
|
std::vector<std::unique_ptr<Poco::Net::HTTPServer>> RESTServers_;
|
||||||
Poco::ThreadPool Pool_{"i-rest",4,96};
|
Poco::ThreadPool Pool_{"i-rest",32,96};
|
||||||
RESTAPI_GenericServer Server_;
|
RESTAPI_GenericServer Server_;
|
||||||
|
|
||||||
RESTAPI_IntServer() noexcept:
|
RESTAPI_IntServer() noexcept:
|
||||||
@@ -3230,12 +3224,13 @@ namespace OpenWifi {
|
|||||||
public:
|
public:
|
||||||
inline IntRequestHandlerFactory() = default;
|
inline IntRequestHandlerFactory() = default;
|
||||||
inline Poco::Net::HTTPRequestHandler *createRequestHandler(const Poco::Net::HTTPServerRequest &Request) override {
|
inline Poco::Net::HTTPRequestHandler *createRequestHandler(const Poco::Net::HTTPServerRequest &Request) override {
|
||||||
Utils::SetThreadName(fmt::format("i-rest:{}",TransactionId_).c_str());
|
auto TID=NextTransactionId_++;
|
||||||
|
Utils::SetThreadName(fmt::format("i-rest:{}",TID).c_str());
|
||||||
Poco::URI uri(Request.getURI());
|
Poco::URI uri(Request.getURI());
|
||||||
return RESTAPI_IntServer()->CallServer(uri.getPath(), TransactionId_);
|
return RESTAPI_IntServer()->CallServer(uri.getPath(), TID);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
static inline std::atomic_uint64_t TransactionId_ = 1;
|
static inline std::atomic_uint64_t NextTransactionId_ = 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct MicroServiceMeta {
|
struct MicroServiceMeta {
|
||||||
@@ -3576,7 +3571,7 @@ namespace OpenWifi {
|
|||||||
|
|
||||||
auto LoggingDestination = MicroService::instance().ConfigGetString("logging.type", "file");
|
auto LoggingDestination = MicroService::instance().ConfigGetString("logging.type", "file");
|
||||||
auto LoggingFormat = MicroService::instance().ConfigGetString("logging.format",
|
auto LoggingFormat = MicroService::instance().ConfigGetString("logging.format",
|
||||||
"%Y-%m-%d %H:%M:%S %s: [%p] %t");
|
"%Y-%m-%d %H:%M:%S.%i %s: [%p][thr:%I] %t");
|
||||||
if (LoggingDestination == "console") {
|
if (LoggingDestination == "console") {
|
||||||
Poco::AutoPtr<Poco::ConsoleChannel> Console(new Poco::ConsoleChannel);
|
Poco::AutoPtr<Poco::ConsoleChannel> Console(new Poco::ConsoleChannel);
|
||||||
Poco::AutoPtr<Poco::AsyncChannel> Async(new Poco::AsyncChannel(Console));
|
Poco::AutoPtr<Poco::AsyncChannel> Async(new Poco::AsyncChannel(Console));
|
||||||
@@ -3963,8 +3958,6 @@ namespace OpenWifi {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Poco::Net::HTTPServerParams::Ptr Params = new Poco::Net::HTTPServerParams;
|
Poco::Net::HTTPServerParams::Ptr Params = new Poco::Net::HTTPServerParams;
|
||||||
Params->setMaxThreads(50);
|
|
||||||
Params->setMaxQueued(200);
|
|
||||||
Params->setKeepAlive(true);
|
Params->setKeepAlive(true);
|
||||||
Params->setName("ws:xrest");
|
Params->setName("ws:xrest");
|
||||||
|
|
||||||
@@ -3999,8 +3992,6 @@ namespace OpenWifi {
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto Params = new Poco::Net::HTTPServerParams;
|
auto Params = new Poco::Net::HTTPServerParams;
|
||||||
Params->setMaxThreads(50);
|
|
||||||
Params->setMaxQueued(200);
|
|
||||||
Params->setKeepAlive(true);
|
Params->setKeepAlive(true);
|
||||||
Params->setName("ws:irest");
|
Params->setName("ws:irest");
|
||||||
|
|
||||||
@@ -4020,7 +4011,7 @@ namespace OpenWifi {
|
|||||||
}
|
}
|
||||||
|
|
||||||
inline int MicroService::main([[maybe_unused]] const ArgVec &args) {
|
inline int MicroService::main([[maybe_unused]] const ArgVec &args) {
|
||||||
MyErrorHandler ErrorHandler(*this);
|
MicroServiceErrorHandler ErrorHandler(*this);
|
||||||
Poco::ErrorHandler::set(&ErrorHandler);
|
Poco::ErrorHandler::set(&ErrorHandler);
|
||||||
|
|
||||||
if (!HelpRequested_) {
|
if (!HelpRequested_) {
|
||||||
@@ -5100,7 +5091,7 @@ namespace OpenWifi {
|
|||||||
auto Op = flags & Poco::Net::WebSocket::FRAME_OP_BITMASK;
|
auto Op = flags & Poco::Net::WebSocket::FRAME_OP_BITMASK;
|
||||||
|
|
||||||
if (n == 0) {
|
if (n == 0) {
|
||||||
poco_warning(Logger(),Poco::format("CLOSE(%s): %s UI Client is closing WS connection.", Id_, UserName_));
|
poco_debug(Logger(),fmt::format("CLOSE({}): {} UI Client is closing WS connection.", Id_, UserName_));
|
||||||
return delete this;
|
return delete this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5113,7 +5104,7 @@ namespace OpenWifi {
|
|||||||
case Poco::Net::WebSocket::FRAME_OP_PONG: {
|
case Poco::Net::WebSocket::FRAME_OP_PONG: {
|
||||||
} break;
|
} break;
|
||||||
case Poco::Net::WebSocket::FRAME_OP_CLOSE: {
|
case Poco::Net::WebSocket::FRAME_OP_CLOSE: {
|
||||||
poco_warning(Logger(),Poco::format("CLOSE(%s): %s UI Client is closing WS connection.", Id_, UserName_));
|
poco_debug(Logger(),fmt::format("CLOSE({}): {} UI Client is closing WS connection.", Id_, UserName_));
|
||||||
Done = true;
|
Done = true;
|
||||||
} break;
|
} break;
|
||||||
case Poco::Net::WebSocket::FRAME_OP_TEXT: {
|
case Poco::Net::WebSocket::FRAME_OP_TEXT: {
|
||||||
@@ -5126,7 +5117,7 @@ namespace OpenWifi {
|
|||||||
AuthClient()->IsAuthorized(Tokens[1], UserInfo_, 0, Expired, Contacted)) {
|
AuthClient()->IsAuthorized(Tokens[1], UserInfo_, 0, Expired, Contacted)) {
|
||||||
Authenticated_ = true;
|
Authenticated_ = true;
|
||||||
UserName_ = UserInfo_.userinfo.email;
|
UserName_ = UserInfo_.userinfo.email;
|
||||||
poco_warning(Logger(),Poco::format("START(%s): %s UI Client is starting WS connection.", Id_, UserName_));
|
poco_debug(Logger(),fmt::format("START({}): {} UI Client is starting WS connection.", Id_, UserName_));
|
||||||
std::string S{"Welcome! Bienvenue! Bienvenidos!"};
|
std::string S{"Welcome! Bienvenue! Bienvenidos!"};
|
||||||
WS_->sendFrame(S.c_str(), S.size());
|
WS_->sendFrame(S.c_str(), S.size());
|
||||||
WebSocketClientServer()->SetUser(Id_, UserInfo_.userinfo.email);
|
WebSocketClientServer()->SetUser(Id_, UserInfo_.userinfo.email);
|
||||||
@@ -5212,7 +5203,6 @@ namespace OpenWifi {
|
|||||||
Poco::Net::ErrorNotification>(*this,&WebSocketClient::OnSocketError));
|
Poco::Net::ErrorNotification>(*this,&WebSocketClient::OnSocketError));
|
||||||
(*WS_).shutdown();
|
(*WS_).shutdown();
|
||||||
(*WS_).close();
|
(*WS_).close();
|
||||||
WebSocketClientServer()->UnRegister(Id_);
|
|
||||||
} catch(...) {
|
} catch(...) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
169
src/framework/MicroServiceErrorHandler.h
Normal file
169
src/framework/MicroServiceErrorHandler.h
Normal file
@@ -0,0 +1,169 @@
|
|||||||
|
//
|
||||||
|
// Created by stephane bourque on 2022-09-29.
|
||||||
|
//
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "fmt/format.h"
|
||||||
|
#include "Poco/Util/Application.h"
|
||||||
|
#include "Poco/ErrorHandler.h"
|
||||||
|
#include "Poco/Net/NetException.h"
|
||||||
|
#include "Poco/Net/SSLException.h"
|
||||||
|
#include "Poco/JSON/Template.h"
|
||||||
|
#include "Poco/Thread.h"
|
||||||
|
|
||||||
|
namespace OpenWifi {
|
||||||
|
|
||||||
|
class MicroServiceErrorHandler : public Poco::ErrorHandler {
|
||||||
|
public:
|
||||||
|
explicit MicroServiceErrorHandler(Poco::Util::Application &App) : App_(App) {
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void exception(const Poco::Exception & Base) override {
|
||||||
|
try {
|
||||||
|
if(Poco::Thread::current()!= nullptr) {
|
||||||
|
t_name = Poco::Thread::current()->getName();
|
||||||
|
t_id = Poco::Thread::current()->id();
|
||||||
|
} else {
|
||||||
|
t_name = "startup_code";
|
||||||
|
t_id = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
App_.logger().log(Base);
|
||||||
|
Base.rethrow();
|
||||||
|
|
||||||
|
} catch (const Poco::Net::InvalidCertificateException &E) {
|
||||||
|
poco_error(App_.logger(), fmt::format("Poco::Net::InvalidCertificateException thr_name={} thr_id={} code={} text={} msg={} what={}",
|
||||||
|
t_name, t_id, E.code(),
|
||||||
|
E.displayText(),
|
||||||
|
E.message(),
|
||||||
|
E.what()));
|
||||||
|
} catch (const Poco::Net::InvalidSocketException &E) {
|
||||||
|
poco_error(App_.logger(), fmt::format("Poco::Net::InvalidSocketException thr_name={} thr_id={} code={} text={} msg={} what={}",
|
||||||
|
t_name, t_id, E.code(),
|
||||||
|
E.displayText(),
|
||||||
|
E.message(),
|
||||||
|
E.what()));
|
||||||
|
} catch (const Poco::Net::WebSocketException &E) {
|
||||||
|
poco_error(App_.logger(), fmt::format("Poco::Net::WebSocketException thr_name={} thr_id={} code={} text={} msg={} what={}",
|
||||||
|
t_name, t_id, E.code(),
|
||||||
|
E.displayText(),
|
||||||
|
E.message(),
|
||||||
|
E.what()));
|
||||||
|
} catch (const Poco::Net::ConnectionResetException &E) {
|
||||||
|
poco_error(App_.logger(), fmt::format("Poco::Net::ConnectionResetException thr_name={} thr_id={} code={} text={} msg={} what={}",
|
||||||
|
t_name, t_id, E.code(),
|
||||||
|
E.displayText(),
|
||||||
|
E.message(),
|
||||||
|
E.what()));
|
||||||
|
} catch (const Poco::Net::CertificateValidationException &E) {
|
||||||
|
poco_error(App_.logger(), fmt::format("Poco::Net::CertificateValidationException thr_name={} thr_id={} code={} text={} msg={} what={}",
|
||||||
|
t_name, t_id, E.code(),
|
||||||
|
E.displayText(),
|
||||||
|
E.message(),
|
||||||
|
E.what()));
|
||||||
|
} catch (const Poco::Net::SSLConnectionUnexpectedlyClosedException &E) {
|
||||||
|
poco_error(App_.logger(), fmt::format("Poco::Net::SSLConnectionUnexpectedlyClosedException thr_name={} thr_id={} code={} text={} msg={} what={}",
|
||||||
|
t_name, t_id, E.code(),
|
||||||
|
E.displayText(),
|
||||||
|
E.message(),
|
||||||
|
E.what()));
|
||||||
|
} catch (const Poco::Net::SSLContextException &E) {
|
||||||
|
poco_error(App_.logger(), fmt::format("Poco::Net::SSLContextException thr_name={} thr_id={} code={} text={} msg={} what={}",
|
||||||
|
t_name, t_id, E.code(),
|
||||||
|
E.displayText(),
|
||||||
|
E.message(),
|
||||||
|
E.what()));
|
||||||
|
} catch (const Poco::Net::SSLException &E) {
|
||||||
|
poco_error(App_.logger(), fmt::format("Poco::Net::SSLException thr_name={} thr_id={} code={} text={} msg={} what={}",
|
||||||
|
t_name, t_id, E.code(),
|
||||||
|
E.displayText(),
|
||||||
|
E.message(),
|
||||||
|
E.what()));
|
||||||
|
|
||||||
|
} catch (const Poco::Net::InvalidAddressException &E) {
|
||||||
|
poco_error(App_.logger(), fmt::format("Poco::Net::InvalidAddressException thr_name={} thr_id={} code={} text={} msg={} what={}",
|
||||||
|
t_name, t_id, E.code(),
|
||||||
|
E.displayText(),
|
||||||
|
E.message(),
|
||||||
|
E.what()));
|
||||||
|
|
||||||
|
} catch (const Poco::Net::NetException &E) {
|
||||||
|
poco_error(App_.logger(), fmt::format("Poco::Net::NetException thr_name={} thr_id={} code={} text={} msg={} what={}",
|
||||||
|
t_name, t_id, E.code(),
|
||||||
|
E.displayText(),
|
||||||
|
E.message(),
|
||||||
|
E.what()));
|
||||||
|
|
||||||
|
} catch (const Poco::IOException &E) {
|
||||||
|
poco_error(App_.logger(), fmt::format("Poco::IOException thr_name={} thr_id={} code={} text={} msg={} what={}",
|
||||||
|
t_name, t_id, E.code(),
|
||||||
|
E.displayText(),
|
||||||
|
E.message(),
|
||||||
|
E.what()));
|
||||||
|
} catch (const Poco::RuntimeException &E) {
|
||||||
|
poco_error(App_.logger(), fmt::format("Poco::RuntimeException thr_name={} thr_id={} code={} text={} msg={} what={}",
|
||||||
|
t_name, t_id, E.code(),
|
||||||
|
E.displayText(),
|
||||||
|
E.message(),
|
||||||
|
E.what()));
|
||||||
|
} catch (const Poco::JSON::JSONTemplateException &E) {
|
||||||
|
poco_error(App_.logger(), fmt::format("Poco::JSON::JSONTemplateException thr_name={} thr_id={} code={} text={} msg={} what={}",
|
||||||
|
t_name, t_id, E.code(),
|
||||||
|
E.displayText(),
|
||||||
|
E.message(),
|
||||||
|
E.what()));
|
||||||
|
} catch (const Poco::JSON::JSONException &E) {
|
||||||
|
poco_error(App_.logger(), fmt::format("Poco::JSON::JSONException thr_name={} thr_id={} code={} text={} msg={} what={}",
|
||||||
|
t_name, t_id, E.code(),
|
||||||
|
E.displayText(),
|
||||||
|
E.message(),
|
||||||
|
E.what()));
|
||||||
|
} catch (const Poco::ApplicationException &E) {
|
||||||
|
poco_error(App_.logger(), fmt::format("Poco::ApplicationException thr_name={} thr_id={} code={} text={} msg={} what={}",
|
||||||
|
t_name, t_id, E.code(),
|
||||||
|
E.displayText(),
|
||||||
|
E.message(),
|
||||||
|
E.what()));
|
||||||
|
} catch (const Poco::Exception &E) {
|
||||||
|
poco_error(App_.logger(), fmt::format("Poco::Exception thr_name={} thr_id={} code={} text={} msg={} what={}",
|
||||||
|
t_name, t_id, E.code(),
|
||||||
|
E.displayText(),
|
||||||
|
E.message(),
|
||||||
|
E.what()));
|
||||||
|
} catch (...) {
|
||||||
|
poco_error(App_.logger(), fmt::format("Poco:Generic thr_name={}",t_name, t_id));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void exception(const std::exception & E) override {
|
||||||
|
if(Poco::Thread::current()!= nullptr) {
|
||||||
|
t_name = Poco::Thread::current()->getName();
|
||||||
|
t_id = Poco::Thread::current()->id();
|
||||||
|
} else {
|
||||||
|
t_name = "startup_code";
|
||||||
|
t_id = 0;
|
||||||
|
}
|
||||||
|
poco_warning(App_.logger(), fmt::format("std::exception in {}: {} thr_id={}",
|
||||||
|
t_name,E.what(),
|
||||||
|
t_id));
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void exception() override {
|
||||||
|
if(Poco::Thread::current()!= nullptr) {
|
||||||
|
t_name = Poco::Thread::current()->getName();
|
||||||
|
t_id = Poco::Thread::current()->id();
|
||||||
|
} else {
|
||||||
|
t_name = "startup_code";
|
||||||
|
t_id = 0;
|
||||||
|
}
|
||||||
|
poco_warning(App_.logger(), fmt::format("generic exception in {} thr_id={}",
|
||||||
|
t_name, t_id));
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
Poco::Util::Application &App_;
|
||||||
|
std::string t_name;
|
||||||
|
int t_id=0;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
# wait-for-postgres.sh
|
# wait-for-postgres.sh
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
@@ -20,7 +20,7 @@ if [ "$1" = '/openwifi/owprov' -a "$(id -u)" = '0' ]; then
|
|||||||
if [ "$RUN_CHOWN" = 'true' ]; then
|
if [ "$RUN_CHOWN" = 'true' ]; then
|
||||||
chown -R "$OWPROV_USER": "$OWPROV_ROOT" "$OWPROV_CONFIG"
|
chown -R "$OWPROV_USER": "$OWPROV_ROOT" "$OWPROV_CONFIG"
|
||||||
fi
|
fi
|
||||||
exec su-exec "$OWPROV_USER" "$@"
|
exec gosu "$OWPROV_USER" "$@"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec "$@"
|
exec "$@"
|
||||||
|
|||||||
Reference in New Issue
Block a user