template class Wrapper<::NetmaskGroup>;
template class Wrapper<::ComboAddress>;
-template class Wrapper<std::shared_ptr<::Logr::Logger>>;
+ //template class Wrapper<std::shared_ptr<::Logr::Logger>>;
std::unique_ptr<ComboAddress> comboaddress(::rust::Str str)
{
return nmg->get().match(address->get());
}
-void log(const std::unique_ptr<Logger>& logger, pdns::rust::web::rec::Priority log_level, ::rust::Str msg, const ::rust::Vec<KeyValue>& values)
+void log(const std::shared_ptr<Logger>& logger, pdns::rust::web::rec::Priority log_level, ::rust::Str msg, const ::rust::Vec<KeyValue>& values)
{
- auto log = logger->get();
+ auto log = logger;
for (const auto& [key, value] : values) {
log = log->withValues(std::string(key), Logging::Loggable(std::string(value)));
}
log->info(static_cast<Logr::Priority>(log_level), std::string(msg));
}
-void error(const std::unique_ptr<Logger>& logger, pdns::rust::web::rec::Priority log_level, ::rust::Str error, ::rust::Str msg, const ::rust::Vec<KeyValue>& values)
+void error(const std::shared_ptr<Logger>& logger, pdns::rust::web::rec::Priority log_level, ::rust::Str error, ::rust::Str msg, const ::rust::Vec<KeyValue>& values)
{
- auto log = logger->get();
+ auto log = logger;
for (const auto& [key, value] : values) {
log = log->withValues(std::string(key), Logging::Loggable(std::string(value)));
}
log->error(static_cast<Logr::Priority>(log_level), std::string(error), std::string(msg));
}
-std::unique_ptr<Logger> withValue(const std::unique_ptr<Logger>& logger, ::rust::Str key, ::rust::Str val)
+std::shared_ptr<Logger> withValue(const std::shared_ptr<Logger>& logger, ::rust::Str key, ::rust::Str val)
{
- auto ret = logger->get()->withValues(std::string(key), Logging::Loggable(std::string(val)));
- return std::make_unique<Logger>(ret);
+ auto ret = logger->withValues(std::string(key), Logging::Loggable(std::string(val)));
+ return ret;
}
}
#include "rust/cxx.h"
#include "credentials.hh"
-namespace Logr
-{
-class Logger;
-}
-
namespace pdns::rust::settings::rec
{
uint16_t qTypeStringToCode(::rust::Str str);
class NetmaskGroup;
union ComboAddress;
+namespace Logr
+{
+class Logger;
+}
+
namespace pdns::rust::web::rec
{
using CredentialsHolder = ::CredentialsHolder;
-// using NetmaskGroup = ::NetmaskGroup;
struct KeyValue;
struct Request;
struct Response;
};
using NetmaskGroup = Wrapper<::NetmaskGroup>;
using ComboAddress = Wrapper<::ComboAddress>;
-using Logger = Wrapper<std::shared_ptr<::Logr::Logger>>;
+using Logger = ::Logr::Logger;
void apiServer(const Request& rustRequest, Response& rustResponse);
void apiDiscovery(const Request& rustRequest, Response& rustResponse);
void apiServerZoneDetailDELETE(const Request& rustRequest, Response& rustResponse);
std::unique_ptr<ComboAddress> comboaddress(::rust::Str str);
bool matches(const std::unique_ptr<NetmaskGroup>& nmg, const std::unique_ptr<ComboAddress>& address);
-std::unique_ptr<Logger> withValue(const std::unique_ptr<Logger>& logger, ::rust::Str key, ::rust::Str val);
-void log(const std::unique_ptr<Logger>& logger, Priority log_level, ::rust::Str msg, const ::rust::Vec<KeyValue>& values);
-void error(const std::unique_ptr<Logger>& logger, Priority log_level, ::rust::Str err, ::rust::Str msg, const ::rust::Vec<KeyValue>& values);
+std::shared_ptr<Logger> withValue(const std::shared_ptr<Logger>& logger, ::rust::Str key, ::rust::Str val);
+void log(const std::shared_ptr<Logger>& logger, Priority log_level, ::rust::Str msg, const ::rust::Vec<KeyValue>& values);
+void error(const std::shared_ptr<Logger>& logger, Priority log_level, ::rust::Str err, ::rust::Str msg, const ::rust::Vec<KeyValue>& values);
}
}
fn api_wrapper(
- logger: &cxx::UniquePtr<rustweb::Logger>,
+ logger: &cxx::SharedPtr<rustweb::Logger>,
ctx: &Context,
handler: Func,
request: &rustweb::Request,
password_ch: cxx::UniquePtr<rustweb::CredentialsHolder>,
api_ch: cxx::UniquePtr<rustweb::CredentialsHolder>,
acl: cxx::UniquePtr<rustweb::NetmaskGroup>,
- logger: cxx::UniquePtr<rustweb::Logger>,
+ logger: cxx::SharedPtr<rustweb::Logger>,
loglevel: rustweb::LogLevel,
}
fn collect_options(
path: &str,
response: &mut rustweb::Response,
- my_logger: &cxx::UniquePtr<rustweb::Logger>,
+ my_logger: &cxx::SharedPtr<rustweb::Logger>,
) {
let mut methods = vec![];
for method in [Method::GET, Method::POST, Method::PUT, Method::DELETE] {
fn log_response(
loglevel: rustweb::LogLevel,
- logger: &cxx::UniquePtr<rustweb::Logger>,
+ logger: &cxx::SharedPtr<rustweb::Logger>,
response: &rustweb::Response,
remote: SocketAddr,
) {
password_ch: cxx::UniquePtr<rustweb::CredentialsHolder>,
api_ch: cxx::UniquePtr<rustweb::CredentialsHolder>,
acl: cxx::UniquePtr<rustweb::NetmaskGroup>,
- logger: cxx::UniquePtr<rustweb::Logger>,
+ logger: cxx::SharedPtr<rustweb::Logger>,
loglevel: rustweb::LogLevel,
) -> Result<(), std::io::Error> {
// Context, atomically reference counted
pwch: UniquePtr<CredentialsHolder>,
apikeych: UniquePtr<CredentialsHolder>,
acl: UniquePtr<NetmaskGroup>,
- logger: UniquePtr<Logger>,
+ logger: SharedPtr<Logger>,
loglevel: LogLevel,
) -> Result<()>;
}
uri: String,
vars: Vec<KeyValue>,
parameters: Vec<KeyValue>,
- logger: &'a UniquePtr<Logger>,
+ logger: &'a SharedPtr<Logger>,
}
struct Response {
fn matches(self: &CredentialsHolder, str: &CxxString) -> bool;
fn comboaddress(address: &str) -> UniquePtr<ComboAddress>;
fn matches(nmg: &UniquePtr<NetmaskGroup>, address: &UniquePtr<ComboAddress>) -> bool; // match is a keyword
- fn withValue(logger: &UniquePtr<Logger>, key: &str, val: &str) -> UniquePtr<Logger>;
- fn log(logger: &UniquePtr<Logger>, prio: Priority, msg: &str, values: &Vec<KeyValue>);
+ fn withValue(logger: &SharedPtr<Logger>, key: &str, val: &str) -> SharedPtr<Logger>;
+ fn log(logger: &SharedPtr<Logger>, prio: Priority, msg: &str, values: &Vec<KeyValue>);
fn error(
- logger: &UniquePtr<Logger>,
+ logger: &SharedPtr<Logger>,
prio: Priority,
err: &str,
msg: &str,
acl.toMasks(::arg()["webserver-allow-from"]);
auto aclPtr = std::make_unique<pdns::rust::web::rec::NetmaskGroup>(acl);
- auto logPtr = std::make_unique<pdns::rust::web::rec::Logger>(g_slog->withName("webserver"));
+ auto logPtr = g_slog->withName("webserver");
pdns::rust::web::rec::LogLevel loglevel = pdns::rust::web::rec::LogLevel::Normal;
auto configLevel = ::arg()["webserver-loglevel"];