这是indexloc提供的服务,不要输入任何密码
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 21 additions & 16 deletions netlib/src/iphelper/process_lookup.h
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,11 @@ namespace iphelper
std::wstring name; ///< Process name (uppercase)
std::wstring path_name; ///< Full path to executable (uppercase)
std::wstring device_path_name; ///< Device path version of path_name (uppercase)
std::optional<uint16_t> tcp_proxy_port = std::nullopt; // Optional TCP proxy port if the process is associated with a proxy
std::optional<uint16_t> udp_proxy_port = std::nullopt; // Optional UDP proxy port if the process is associated with a proxy
bool excluded = false; ///< Whether the process is excluded from proxying
bool bypass_tcp = false; ///< Whether TCP connections should bypass proxying (no proxy configured)
bool bypass_udp = false; ///< Whether UDP connections should bypass proxying (no proxy configured)
};

/**
Expand Down Expand Up @@ -473,7 +478,7 @@ namespace iphelper
{
const DWORD pid = row->dwOwningPid;
if (is_system_process(pid)) {
NETLIB_LOG(log_level::debug,
NETLIB_DEBUG(
"TCPv4 entry with system process PID = {} ({}) skipping resolution",
pid,
pid == 0 ? "Idle" : "System");
Expand All @@ -483,7 +488,7 @@ namespace iphelper

const auto ext = owner_module_resolver::resolve_from_pid_and_tag_extended(pid, tag);
if (ext.error == owner_module_resolver::error_code::success) {
NETLIB_LOG(log_level::debug,
NETLIB_DEBUG(
"Resolved TCPv4 owner: pid={} tag={} name=\"{}\" path=\"{}\"",
pid,
tag,
Expand All @@ -499,7 +504,7 @@ namespace iphelper

if (tag != 0 && ext.error == owner_module_resolver::error_code::service_not_found) {
if (owner_module_resolver::result img{}; owner_module_resolver::resolve_from_pid_and_tag(pid, 0, img)) {
NETLIB_LOG(log_level::debug,
NETLIB_DEBUG(
"Service tag not found; fell back to process image (TCPv4): pid={} tag={} name=\"{}\" path=\"{}\"",
pid,
tag,
Expand All @@ -514,7 +519,7 @@ namespace iphelper
}
}

NETLIB_LOG(log_level::debug,
NETLIB_DEBUG(
"Failed to resolve TCPv4 owner: pid={} tag={} error={}{}",
pid,
tag,
Expand All @@ -541,7 +546,7 @@ namespace iphelper
{
const DWORD pid = row->dwOwningPid;
if (is_system_process(pid)) {
NETLIB_LOG(log_level::debug,
NETLIB_DEBUG(
"TCPv6 entry with system process PID = {} ({}) skipping resolution",
pid,
pid == 0 ? "Idle" : "System");
Expand All @@ -551,7 +556,7 @@ namespace iphelper

const auto ext = owner_module_resolver::resolve_from_pid_and_tag_extended(pid, tag);
if (ext.error == owner_module_resolver::error_code::success) {
NETLIB_LOG(log_level::debug,
NETLIB_DEBUG(
"Resolved TCPv6 owner: pid={} tag={} name=\"{}\" path=\"{}\"",
pid,
tag,
Expand All @@ -567,7 +572,7 @@ namespace iphelper

if (tag != 0 && ext.error == owner_module_resolver::error_code::service_not_found) {
if (owner_module_resolver::result img{}; owner_module_resolver::resolve_from_pid_and_tag(pid, 0, img)) {
NETLIB_LOG(log_level::debug,
NETLIB_DEBUG(
"Service tag not found; fell back to process image (TCPv6): pid={} tag={} name=\"{}\" path=\"{}\"",
pid,
tag,
Expand All @@ -582,7 +587,7 @@ namespace iphelper
}
}

NETLIB_LOG(log_level::debug,
NETLIB_DEBUG(
"Failed to resolve TCPv6 owner: pid={} tag={} error={}{}",
pid,
tag,
Expand All @@ -609,7 +614,7 @@ namespace iphelper
{
const DWORD pid = row->dwOwningPid;
if (is_system_process(pid)) {
NETLIB_LOG(log_level::debug,
NETLIB_DEBUG(
"UDPv4 entry with system process PID = {} ({}) skipping resolution",
pid,
pid == 0 ? "Idle" : "System");
Expand All @@ -619,7 +624,7 @@ namespace iphelper

const auto ext = owner_module_resolver::resolve_from_pid_and_tag_extended(pid, tag);
if (ext.error == owner_module_resolver::error_code::success) {
NETLIB_LOG(log_level::debug,
NETLIB_DEBUG(
"Resolved UDPv4 owner: pid={} tag={} name=\"{}\" path=\"{}\"",
pid,
tag,
Expand All @@ -635,7 +640,7 @@ namespace iphelper

if (tag != 0 && ext.error == owner_module_resolver::error_code::service_not_found) {
if (owner_module_resolver::result img{}; owner_module_resolver::resolve_from_pid_and_tag(pid, 0, img)) {
NETLIB_LOG(log_level::debug,
NETLIB_DEBUG(
"Service tag not found; fell back to process image (UDPv4): pid={} tag={} name=\"{}\" path=\"{}\"",
pid,
tag,
Expand All @@ -650,7 +655,7 @@ namespace iphelper
}
}

NETLIB_LOG(log_level::debug,
NETLIB_DEBUG(
"Failed to resolve UDPv4 owner: pid={} tag={} error={}{}",
pid,
tag,
Expand All @@ -677,7 +682,7 @@ namespace iphelper
{
const DWORD pid = row->dwOwningPid;
if (is_system_process(pid)) {
NETLIB_LOG(log_level::debug,
NETLIB_DEBUG(
"UDPv6 entry with system process PID = {} ({}) skipping resolution",
pid,
pid == 0 ? "Idle" : "System");
Expand All @@ -687,7 +692,7 @@ namespace iphelper

const auto ext = owner_module_resolver::resolve_from_pid_and_tag_extended(pid, tag);
if (ext.error == owner_module_resolver::error_code::success) {
NETLIB_LOG(log_level::debug,
NETLIB_DEBUG(
"Resolved UDPv6 owner: pid={} tag={} name=\"{}\" path=\"{}\"",
pid,
tag,
Expand All @@ -703,7 +708,7 @@ namespace iphelper

if (tag != 0 && ext.error == owner_module_resolver::error_code::service_not_found) {
if (owner_module_resolver::result img{}; owner_module_resolver::resolve_from_pid_and_tag(pid, 0, img)) {
NETLIB_LOG(log_level::debug,
NETLIB_DEBUG(
"Service tag not found; fell back to process image (UDPv6): pid={} tag={} name=\"{}\" path=\"{}\"",
pid,
tag,
Expand All @@ -718,7 +723,7 @@ namespace iphelper
}
}

NETLIB_LOG(log_level::debug,
NETLIB_DEBUG(
"Failed to resolve UDPv6 owner: pid={} tag={} error={}{}",
pid,
tag,
Expand Down
30 changes: 29 additions & 1 deletion netlib/src/log/log.h
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ namespace netlib::log {
* @note Thread-safe for concurrent read/write operations
* @note Default value includes all components (timestamp, thread, logger, level, path)
*/
inline std::atomic<log_verbosity> global_log_verbosity{ log_verbosity::all };
inline std::atomic global_log_verbosity{ log_verbosity::none };
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Changing the default global_log_verbosity from log_verbosity::all to log_verbosity::none is a significant behavioral change. This will disable all logging by default across the library. While this can be useful for production builds to reduce noise, it might be surprising for developers during debugging. Please ensure this change is intentional and well-documented in the project's release notes or documentation.


/**
* @brief Sets the global log verbosity flags.
Expand Down Expand Up @@ -987,7 +987,10 @@ namespace netlib::log {
friend Derived;
};

// Enhanced logging macros that build on the existing NETLIB_LOG infrastructure

#if NETLIB_HAS_SOURCE_LOCATION
// Core macros with source location support
#define NETLIB_LOG(level_, fmt_, ...) \
do { \
if (this->get_log_level() >= (level_)) { \
Expand All @@ -1003,6 +1006,7 @@ namespace netlib::log {
} while(0)

#else
// Core macros without source location support
#define NETLIB_LOG(level_, fmt_, ...) \
do { \
if (this->get_log_level() >= (level_)) { \
Expand All @@ -1019,4 +1023,28 @@ namespace netlib::log {

#endif

// Convenience macros for specific log levels - for use within logger classes
#define NETLIB_ERROR(fmt_, ...) NETLIB_LOG(::netlib::log::log_level::error, fmt_, ##__VA_ARGS__)
#define NETLIB_WARNING(fmt_, ...) NETLIB_LOG(::netlib::log::log_level::warning, fmt_, ##__VA_ARGS__)
#define NETLIB_INFO(fmt_, ...) NETLIB_LOG(::netlib::log::log_level::info, fmt_, ##__VA_ARGS__)
#define NETLIB_DEBUG(fmt_, ...) NETLIB_LOG(::netlib::log::log_level::debug, fmt_, ##__VA_ARGS__)

// Convenience macros for use with logger pointers
#define NETLIB_ERROR_PTR(logger_ptr_, fmt_, ...) NETLIB_LOG_PTR(logger_ptr_, ::netlib::log::log_level::error, fmt_, ##__VA_ARGS__)
#define NETLIB_WARNING_PTR(logger_ptr_, fmt_, ...) NETLIB_LOG_PTR(logger_ptr_, ::netlib::log::log_level::warning, fmt_, ##__VA_ARGS__)
#define NETLIB_INFO_PTR(logger_ptr_, fmt_, ...) NETLIB_LOG_PTR(logger_ptr_, ::netlib::log::log_level::info, fmt_, ##__VA_ARGS__)
#define NETLIB_DEBUG_PTR(logger_ptr_, fmt_, ...) NETLIB_LOG_PTR(logger_ptr_, ::netlib::log::log_level::debug, fmt_, ##__VA_ARGS__)

// Simple string message macros (for pre-formatted messages)
#define NETLIB_ERROR_STR(msg_) do { if (this->get_log_level() >= ::netlib::log::log_level::error) this->print_log(::netlib::log::log_level::error, msg_); } while(0)
#define NETLIB_WARNING_STR(msg_) do { if (this->get_log_level() >= ::netlib::log::log_level::warning) this->print_log(::netlib::log::log_level::warning, msg_); } while(0)
#define NETLIB_INFO_STR(msg_) do { if (this->get_log_level() >= ::netlib::log::log_level::info) this->print_log(::netlib::log::log_level::info, msg_); } while(0)
#define NETLIB_DEBUG_STR(msg_) do { if (this->get_log_level() >= ::netlib::log::log_level::debug) this->print_log(::netlib::log::log_level::debug, msg_); } while(0)

// Simple string message macros for use with logger pointers
#define NETLIB_ERROR_STR_PTR(logger_ptr_, msg_) do { if ((logger_ptr_) && (logger_ptr_)->get_log_level() >= ::netlib::log::log_level::error) (logger_ptr_)->print_log(::netlib::log::log_level::error, msg_); } while(0)
#define NETLIB_WARNING_STR_PTR(logger_ptr_, msg_) do { if ((logger_ptr_) && (logger_ptr_)->get_log_level() >= ::netlib::log::log_level::warning) (logger_ptr_)->print_log(::netlib::log::log_level::warning, msg_); } while(0)
#define NETLIB_INFO_STR_PTR(logger_ptr_, msg_) do { if ((logger_ptr_) && (logger_ptr_)->get_log_level() >= ::netlib::log::log_level::info) (logger_ptr_)->print_log(::netlib::log::log_level::info, msg_); } while(0)
#define NETLIB_DEBUG_STR_PTR(logger_ptr_, msg_) do { if ((logger_ptr_) && (logger_ptr_)->get_log_level() >= ::netlib::log::log_level::debug) (logger_ptr_)->print_log(::netlib::log::log_level::debug, msg_); } while(0)

} // namespace netlib::log
Loading