aboutsummaryrefslogtreecommitdiff
path: root/contrib/epee/src
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/epee/src')
-rw-r--r--contrib/epee/src/CMakeLists.txt3
-rw-r--r--contrib/epee/src/hex.cpp82
-rw-r--r--contrib/epee/src/http_auth.cpp22
-rw-r--r--contrib/epee/src/mlog.cpp13
4 files changed, 95 insertions, 25 deletions
diff --git a/contrib/epee/src/CMakeLists.txt b/contrib/epee/src/CMakeLists.txt
index 1e79755e5..1d5fa0394 100644
--- a/contrib/epee/src/CMakeLists.txt
+++ b/contrib/epee/src/CMakeLists.txt
@@ -26,7 +26,7 @@
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-add_library(epee STATIC http_auth.cpp mlog.cpp string_tools.cpp)
+add_library(epee STATIC hex.cpp http_auth.cpp mlog.cpp string_tools.cpp)
# Build and install libepee if we're building for GUI
if (BUILD_GUI_DEPS)
if(IOS)
@@ -41,6 +41,7 @@ endif()
target_link_libraries(epee
PUBLIC
crypto
+ easylogging
${Boost_FILESYSTEM_LIBRARY}
PRIVATE
${EXTRA_LIBRARIES})
diff --git a/contrib/epee/src/hex.cpp b/contrib/epee/src/hex.cpp
new file mode 100644
index 000000000..cfbd3cf87
--- /dev/null
+++ b/contrib/epee/src/hex.cpp
@@ -0,0 +1,82 @@
+// Copyright (c) 2017, The Monero Project
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without modification, are
+// permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this list of
+// conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice, this list
+// of conditions and the following disclaimer in the documentation and/or other
+// materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its contributors may be
+// used to endorse or promote products derived from this software without specific
+// prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "hex.h"
+
+#include <iterator>
+#include <limits>
+#include <ostream>
+#include <stdexcept>
+
+namespace epee
+{
+ namespace
+ {
+ template<typename T>
+ void write_hex(T&& out, const span<const std::uint8_t> src)
+ {
+ static constexpr const char hex[] = u8"0123456789abcdef";
+ static_assert(sizeof(hex) == 17, "bad string size");
+ for (const std::uint8_t byte : src)
+ {
+ *out = hex[byte >> 4];
+ ++out;
+ *out = hex[byte & 0x0F];
+ ++out;
+ }
+ }
+ }
+
+ std::string to_hex::string(const span<const std::uint8_t> src)
+ {
+ if (std::numeric_limits<std::size_t>::max() / 2 < src.size())
+ throw std::range_error("hex_view::to_string exceeded maximum size");
+
+ std::string out{};
+ out.resize(src.size() * 2);
+ buffer_unchecked(std::addressof(out[0]), src);
+ return out;
+ }
+
+ void to_hex::buffer(std::ostream& out, const span<const std::uint8_t> src)
+ {
+ write_hex(std::ostreambuf_iterator<char>{out}, src);
+ }
+
+ void to_hex::formatted(std::ostream& out, const span<const std::uint8_t> src)
+ {
+ out.put('<');
+ buffer(out, src);
+ out.put('>');
+ }
+
+ void to_hex::buffer_unchecked(char* out, const span<const std::uint8_t> src) noexcept
+ {
+ return write_hex(out, src);
+ }
+}
diff --git a/contrib/epee/src/http_auth.cpp b/contrib/epee/src/http_auth.cpp
index 5a1c2142a..30e562700 100644
--- a/contrib/epee/src/http_auth.cpp
+++ b/contrib/epee/src/http_auth.cpp
@@ -67,6 +67,7 @@
#include <type_traits>
#include "crypto/crypto.h"
+#include "hex.h"
#include "md5_l.h"
#include "string_coding.h"
@@ -104,25 +105,6 @@ namespace
//// Digest Algorithms
- template<std::size_t N>
- std::array<char, N * 2> to_hex(const std::array<std::uint8_t, N>& digest) noexcept
- {
- static constexpr const char alphabet[] = u8"0123456789abcdef";
- static_assert(sizeof(alphabet) == 17, "bad alphabet size");
-
- // TODO upgrade (improve performance) of to hex in epee string tools
- std::array<char, N * 2> out{{}};
- auto current = out.begin();
- for (const std::uint8_t byte : digest)
- {
- *current = alphabet[byte >> 4];
- ++current;
- *current = alphabet[byte & 0x0F];
- ++current;
- }
- return out;
- }
-
struct md5_
{
static constexpr const boost::string_ref name = ceref(u8"MD5");
@@ -156,7 +138,7 @@ namespace
std::array<std::uint8_t, 16> digest{{}};
md5::MD5Final(digest.data(), std::addressof(ctx));
- return to_hex(digest);
+ return epee::to_hex::array(digest);
}
};
constexpr const boost::string_ref md5_::name;
diff --git a/contrib/epee/src/mlog.cpp b/contrib/epee/src/mlog.cpp
index 205acccc9..7487fdbd2 100644
--- a/contrib/epee/src/mlog.cpp
+++ b/contrib/epee/src/mlog.cpp
@@ -33,8 +33,13 @@
INITIALIZE_EASYLOGGINGPP
+#undef MONERO_DEFAULT_LOG_CATEGORY
+#define MONERO_DEFAULT_LOG_CATEGORY "logging"
+
#define MLOG_BASE_FORMAT "%datetime{%Y-%M-%d %H:%m:%s.%g}\t%thread\t%level\t%logger\t%loc\t%msg"
+#define MLOG_LOG(x) CINFO(el::base::Writer,el::base::DispatchAction::FileOnlyLog,MONERO_DEFAULT_LOG_CATEGORY) << x
+
using namespace epee;
static std::string generate_log_filename(const char *base)
@@ -88,10 +93,10 @@ static const char *get_default_categories(int level)
switch (level)
{
case 0:
- categories = "*:WARNING,net:FATAL,net.p2p:FATAL,net.cn:FATAL,global:INFO,verify:FATAL,stacktrace:INFO";
+ categories = "*:WARNING,net:FATAL,net.p2p:FATAL,net.cn:FATAL,global:INFO,verify:FATAL,stacktrace:INFO,logging:INFO";
break;
case 1:
- categories = "*:WARNING,global:INFO,stacktrace:INFO";
+ categories = "*:WARNING,global:INFO,stacktrace:INFO,logging:INFO";
break;
case 2:
categories = "*:DEBUG";
@@ -142,7 +147,7 @@ void mlog_configure(const std::string &filename_base, bool console)
void mlog_set_categories(const char *categories)
{
el::Loggers::setCategories(categories);
- MGINFO("New log categories: " << categories);
+ MLOG_LOG("New log categories: " << categories);
}
// maps epee style log level to new logging system
@@ -150,7 +155,7 @@ void mlog_set_log_level(int level)
{
const char *categories = get_default_categories(level);
el::Loggers::setCategories(categories);
- MGINFO("New log categories: " << categories);
+ MLOG_LOG("New log categories: " << categories);
}
void mlog_set_log(const char *log)