diff --git a/contrib/backends/nntpchan-daemon/libmustache/mstch.cpp b/contrib/backends/nntpchan-daemon/libmustache/mstch.cpp index 4d84e97..ab7c358 100644 --- a/contrib/backends/nntpchan-daemon/libmustache/mstch.cpp +++ b/contrib/backends/nntpchan-daemon/libmustache/mstch.cpp @@ -5,15 +5,13 @@ using namespace mstch; -std::function mstch::config::escape; +std::function mstch::config::escape; -std::string mstch::render( - const std::string& tmplt, - const node& root, - const std::map& partials) +std::string mstch::render(const std::string &tmplt, const node &root, + const std::map &partials) { std::map partial_templates; - for (auto& partial: partials) + for (auto &partial : partials) partial_templates.insert({partial.first, {partial.second}}); return render_context(root, partial_templates).render(tmplt); diff --git a/contrib/backends/nntpchan-daemon/libnntpchan/base64.cpp b/contrib/backends/nntpchan-daemon/libnntpchan/base64.cpp index ac54c65..ace6b78 100644 --- a/contrib/backends/nntpchan-daemon/libnntpchan/base64.cpp +++ b/contrib/backends/nntpchan-daemon/libnntpchan/base64.cpp @@ -16,12 +16,12 @@ const char *GetBase32SubstitutionTable() { return T32; } static void iT64Build(void); /* -* -* BASE64 Substitution Table -* ------------------------- -* -* Direct Substitution Table -*/ + * + * BASE64 Substitution Table + * ------------------------- + * + * Direct Substitution Table + */ static const char T64[64] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', @@ -31,33 +31,33 @@ static const char T64[64] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', ' const char *GetBase64SubstitutionTable() { return T64; } /* -* Reverse Substitution Table (built in run time) -*/ + * Reverse Substitution Table (built in run time) + */ static char iT64[256]; static int isFirstTime = 1; /* -* Padding -*/ + * Padding + */ static char P64 = '='; /* -* -* ByteStreamToBase64 -* ------------------ -* -* Converts binary encoded data to BASE64 format. -* -*/ + * + * ByteStreamToBase64 + * ------------------ + * + * Converts binary encoded data to BASE64 format. + * + */ -size_t /* Number of bytes in the encoded buffer */ - ByteStreamToBase64(const uint8_t *InBuffer, /* Input buffer, binary data */ - size_t InCount, /* Number of bytes in the input buffer */ - char *OutBuffer, /* output buffer */ - size_t len /* length of output buffer */ - ) +size_t /* Number of bytes in the encoded buffer */ +ByteStreamToBase64(const uint8_t *InBuffer, /* Input buffer, binary data */ + size_t InCount, /* Number of bytes in the input buffer */ + char *OutBuffer, /* output buffer */ + size_t len /* length of output buffer */ +) { unsigned char *ps; @@ -125,21 +125,21 @@ size_t /* Number of bytes in the encode } /* -* -* Base64ToByteStream -* ------------------ -* -* Converts BASE64 encoded data to binary format. If input buffer is -* not properly padded, buffer of negative length is returned -* -*/ + * + * Base64ToByteStream + * ------------------ + * + * Converts BASE64 encoded data to binary format. If input buffer is + * not properly padded, buffer of negative length is returned + * + */ -size_t /* Number of output bytes */ - Base64ToByteStream(const char *InBuffer, /* BASE64 encoded buffer */ - size_t InCount, /* Number of input bytes */ - uint8_t *OutBuffer, /* output buffer length */ - size_t len /* length of output buffer */ - ) +size_t /* Number of output bytes */ +Base64ToByteStream(const char *InBuffer, /* BASE64 encoded buffer */ + size_t InCount, /* Number of input bytes */ + uint8_t *OutBuffer, /* output buffer length */ + size_t len /* length of output buffer */ +) { unsigned char *ps; unsigned char *pd; @@ -212,13 +212,13 @@ size_t Base32EncodingBufferSize(const size_t input_size) return 8 * d.quot; } /* -* -* iT64 -* ---- -* Reverse table builder. P64 character is replaced with 0 -* -* -*/ + * + * iT64 + * ---- + * Reverse table builder. P64 character is replaced with 0 + * + * + */ static void iT64Build() { diff --git a/contrib/backends/nntpchan-daemon/libnntpchan/crypto.cpp b/contrib/backends/nntpchan-daemon/libnntpchan/crypto.cpp index 980e5d7..6b68357 100644 --- a/contrib/backends/nntpchan-daemon/libnntpchan/crypto.cpp +++ b/contrib/backends/nntpchan-daemon/libnntpchan/crypto.cpp @@ -7,16 +7,18 @@ namespace nntpchan { void SHA512(const uint8_t *d, const std::size_t l, SHA512Digest &h) { crypto_hash(h.data(), d, l); } - void Blake2B(const uint8_t *d, std::size_t l, Blake2BDigest & h) { crypto_generichash(h.data(), h.size(), d, l, nullptr, 0); } +void Blake2B(const uint8_t *d, std::size_t l, Blake2BDigest &h) +{ + crypto_generichash(h.data(), h.size(), d, l, nullptr, 0); +} - std::string Blake2B_base32(const std::string & str) - { - Blake2BDigest d; - Blake2B(reinterpret_cast(str.c_str()), str.size(), d); - return B32Encode(d.data(), d.size()); - } +std::string Blake2B_base32(const std::string &str) +{ + Blake2BDigest d; + Blake2B(reinterpret_cast(str.c_str()), str.size(), d); + return B32Encode(d.data(), d.size()); +} - Crypto::Crypto() { assert(sodium_init() == 0); } Crypto::~Crypto() {} diff --git a/contrib/backends/nntpchan-daemon/libnntpchan/event.cpp b/contrib/backends/nntpchan-daemon/libnntpchan/event.cpp index c109d81..cebdc78 100644 --- a/contrib/backends/nntpchan-daemon/libnntpchan/event.cpp +++ b/contrib/backends/nntpchan-daemon/libnntpchan/event.cpp @@ -15,59 +15,55 @@ typedef nntpchan::ev::KqueueLoop LoopImpl; #endif #endif -namespace nntpchan +namespace nntpchan { - namespace ev +namespace ev +{ +bool ev::Loop::BindTCP(const sockaddr *addr, ev::io *handler) +{ + assert(handler->acceptable()); + socklen_t slen; + switch (addr->sa_family) { - bool ev::Loop::BindTCP(const sockaddr * addr, ev::io * handler) - { - assert(handler->acceptable()); - socklen_t slen; - switch(addr->sa_family) - { - case AF_INET: - slen = sizeof(sockaddr_in); - break; - case AF_INET6: - slen = sizeof(sockaddr_in6); - break; - case AF_UNIX: - slen = sizeof(sockaddr_un); - break; - default: - return false; - } - int fd = socket(addr->sa_family, SOCK_STREAM | SOCK_NONBLOCK, 0); - if(fd == -1) - { - return false; - } - - if(bind(fd, addr, slen) == -1) - { - ::close(fd); - return false; - } - - if (listen(fd, 5) == -1) - { - ::close(fd); - return false; - } - - handler->fd = fd; - return TrackConn(handler); - } - - bool Loop::SetNonBlocking(ev::io * handler) - { - return fcntl(handler->fd, F_SETFL, fcntl(handler->fd, F_GETFL, 0) | O_NONBLOCK) != -1; - } + case AF_INET: + slen = sizeof(sockaddr_in); + break; + case AF_INET6: + slen = sizeof(sockaddr_in6); + break; + case AF_UNIX: + slen = sizeof(sockaddr_un); + break; + default: + return false; + } + int fd = socket(addr->sa_family, SOCK_STREAM | SOCK_NONBLOCK, 0); + if (fd == -1) + { + return false; } - - ev::Loop * NewMainLoop() + if (bind(fd, addr, slen) == -1) { - return new LoopImpl; + ::close(fd); + return false; } + + if (listen(fd, 5) == -1) + { + ::close(fd); + return false; + } + + handler->fd = fd; + return TrackConn(handler); +} + +bool Loop::SetNonBlocking(ev::io *handler) +{ + return fcntl(handler->fd, F_SETFL, fcntl(handler->fd, F_GETFL, 0) | O_NONBLOCK) != -1; +} +} + +ev::Loop *NewMainLoop() { return new LoopImpl; } } \ No newline at end of file diff --git a/contrib/backends/nntpchan-daemon/libnntpchan/line.cpp b/contrib/backends/nntpchan-daemon/libnntpchan/line.cpp index 39ad5ff..48e2c94 100644 --- a/contrib/backends/nntpchan-daemon/libnntpchan/line.cpp +++ b/contrib/backends/nntpchan-daemon/libnntpchan/line.cpp @@ -13,16 +13,15 @@ void LineReader::Data(const char *data, ssize_t l) m_leftover = ""; m_line << std::string(data, l); - for(std::string line; std::getline(m_line, line); ) + for (std::string line; std::getline(m_line, line);) { line.erase(std::remove(line.begin(), line.end(), '\r'), line.end()); HandleLine(line); } - if(m_line) + if (m_line) m_leftover = m_line.str(); m_line.clear(); } - bool LineReader::ShouldClose() { return m_close; } } diff --git a/contrib/backends/nntpchan-daemon/libnntpchan/nntp_handler.cpp b/contrib/backends/nntpchan-daemon/libnntpchan/nntp_handler.cpp index c9cbc44..937503d 100644 --- a/contrib/backends/nntpchan-daemon/libnntpchan/nntp_handler.cpp +++ b/contrib/backends/nntpchan-daemon/libnntpchan/nntp_handler.cpp @@ -10,8 +10,8 @@ namespace nntpchan { NNTPServerHandler::NNTPServerHandler(fs::path storage) - : LineReader(1024), m_article(nullptr), m_auth(nullptr), m_store(storage), - m_authed(false), m_state(eStateReadCommand) + : LineReader(1024), m_article(nullptr), m_auth(nullptr), m_store(storage), m_authed(false), + m_state(eStateReadCommand) { } @@ -52,7 +52,7 @@ void NNTPServerHandler::OnData(const char *data, ssize_t l) if (m_state == eStateStoreArticle) { std::cerr << "storing " << l << " bytes" << std::endl; - if(strncmp(data, ".\r\n", l) == 0) + if (strncmp(data, ".\r\n", l) == 0) { ArticleObtained(); return; @@ -68,7 +68,7 @@ void NNTPServerHandler::OnData(const char *data, ssize_t l) } ArticleObtained(); diff += 5; - if(l - diff) + if (l - diff) Data(end + 5, l - diff); return; } diff --git a/contrib/backends/nntpchan-daemon/libnntpchan/nntp_server.cpp b/contrib/backends/nntpchan-daemon/libnntpchan/nntp_server.cpp index caa36fc..bab2903 100644 --- a/contrib/backends/nntpchan-daemon/libnntpchan/nntp_server.cpp +++ b/contrib/backends/nntpchan-daemon/libnntpchan/nntp_server.cpp @@ -11,7 +11,7 @@ namespace nntpchan { -NNTPServer::NNTPServer(ev::Loop * loop) : Server(loop), m_frontend(nullptr) {} +NNTPServer::NNTPServer(ev::Loop *loop) : Server(loop), m_frontend(nullptr) {} NNTPServer::~NNTPServer() {} @@ -43,7 +43,6 @@ std::string NNTPServer::InstanceName() const { return m_servername; } void NNTPServer::OnAcceptError(int status) { std::cerr << "nntpserver::accept() " << strerror(status) << std::endl; } - void NNTPServerConn::Greet() { IConnHandler *handler = GetHandler(); diff --git a/contrib/backends/nntpchan-daemon/libnntpchan/server.cpp b/contrib/backends/nntpchan-daemon/libnntpchan/server.cpp index 347000b..cac4c65 100644 --- a/contrib/backends/nntpchan-daemon/libnntpchan/server.cpp +++ b/contrib/backends/nntpchan-daemon/libnntpchan/server.cpp @@ -7,14 +7,12 @@ namespace nntpchan { -Server::Server(ev::Loop * loop) : ev::io(-1), m_Loop(loop) -{ -} +Server::Server(ev::Loop *loop) : ev::io(-1), m_Loop(loop) {} void Server::close() { auto itr = m_conns.begin(); - while(itr != m_conns.end()) + while (itr != m_conns.end()) { itr = m_conns.erase(itr); } @@ -30,18 +28,18 @@ bool Server::Bind(const std::string &addr) void Server::OnAccept(int f) { IServerConn *conn = CreateConn(f); - if(!m_Loop->SetNonBlocking(conn)) + if (!m_Loop->SetNonBlocking(conn)) { conn->close(); delete conn; } - else if(m_Loop->TrackConn(conn)) - { - m_conns.push_back(conn); + else if (m_Loop->TrackConn(conn)) + { + m_conns.push_back(conn); conn->Greet(); conn->write(1024); } - else + else { conn->close(); delete conn; @@ -51,7 +49,8 @@ void Server::OnAccept(int f) int Server::accept() { int res = ::accept(fd, nullptr, nullptr); - if(res == -1) return res; + if (res == -1) + return res; OnAccept(res); return res; } @@ -69,7 +68,7 @@ void Server::RemoveConn(IServerConn *conn) m_Loop->UntrackConn(conn); } -void IConnHandler::QueueLine(const std::string &line) { m_sendlines.push_back(line+"\r\n"); } +void IConnHandler::QueueLine(const std::string &line) { m_sendlines.push_back(line + "\r\n"); } bool IConnHandler::HasNextLine() { return m_sendlines.size() > 0; } @@ -80,44 +79,39 @@ std::string IConnHandler::GetNextLine() return line; } -IServerConn::IServerConn(int fd, Server *parent, IConnHandler *h) : ev::io(fd), m_parent(parent), m_handler(h) -{ -} +IServerConn::IServerConn(int fd, Server *parent, IConnHandler *h) : ev::io(fd), m_parent(parent), m_handler(h) {} IServerConn::~IServerConn() { delete m_handler; } -int IServerConn::read(char * buf, size_t sz) +int IServerConn::read(char *buf, size_t sz) { ssize_t readsz = ::read(fd, buf, sz); - if(readsz > 0) + if (readsz > 0) { m_handler->OnData(buf, readsz); } return readsz; } -bool IServerConn::keepalive() -{ - return !m_handler->ShouldClose(); -} +bool IServerConn::keepalive() { return !m_handler->ShouldClose(); } int IServerConn::write(size_t avail) { auto leftovers = m_writeLeftover.size(); ssize_t written; - if(leftovers) + if (leftovers) { - if(leftovers > avail) + if (leftovers > avail) { leftovers = avail; } written = ::write(fd, m_writeLeftover.c_str(), leftovers); - if(written > 0) + if (written > 0) { avail -= written; m_writeLeftover = m_writeLeftover.substr(written); } - else + else { // too much leftovers return -1; @@ -125,13 +119,13 @@ int IServerConn::write(size_t avail) } do { - if(!m_handler->HasNextLine()) + if (!m_handler->HasNextLine()) { return written; } auto line = m_handler->GetNextLine(); int wrote; - if(line.size() <= avail) + if (line.size() <= avail) { wrote = ::write(fd, line.c_str(), line.size()); } @@ -140,7 +134,7 @@ int IServerConn::write(size_t avail) auto subline = line.substr(0, avail); wrote = ::write(fd, subline.c_str(), subline.size()); } - if(wrote > 0) + if (wrote > 0) { written += wrote; m_writeLeftover = line.substr(wrote); @@ -150,8 +144,7 @@ int IServerConn::write(size_t avail) m_writeLeftover = line; return -1; } - } - while(avail > 0); + } while (avail > 0); return written; } diff --git a/contrib/backends/nntpchan-daemon/libnntpchan/storage.cpp b/contrib/backends/nntpchan-daemon/libnntpchan/storage.cpp index 7f41343..f31262c 100644 --- a/contrib/backends/nntpchan-daemon/libnntpchan/storage.cpp +++ b/contrib/backends/nntpchan-daemon/libnntpchan/storage.cpp @@ -7,9 +7,9 @@ namespace nntpchan { - const fs::path posts_skiplist_dir = "posts"; - const fs::path threads_skiplist_dir = "threads"; - +const fs::path posts_skiplist_dir = "posts"; +const fs::path threads_skiplist_dir = "threads"; + ArticleStorage::ArticleStorage(const fs::path &fpath) { SetPath(fpath); } ArticleStorage::~ArticleStorage() {} @@ -23,15 +23,13 @@ void ArticleStorage::SetPath(const fs::path &fpath) errno = 0; } - bool ArticleStorage::init_skiplist(const std::string &subdir) const { fs::path skiplist = skiplist_root(subdir); - const auto subdirs = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', - 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', - 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', - 'y', 'z', '2', '3', '4', '5', '6', '7', -}; + const auto subdirs = { + 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', + 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '2', '3', '4', '5', '6', '7', + }; for (const auto &s : subdirs) fs::create_directories(skiplist / std::string(&s, 1)); return true; @@ -85,13 +83,9 @@ void ArticleStorage::EnsureSymlinks(const std::string &msgid) const skiplist_dir(posts_skiplist_dir, msgidhash); } - - fs::path ArticleStorage::skiplist_root(const std::string & name ) const - { - return basedir / name; - } - fs::path ArticleStorage::skiplist_dir(const fs::path & root, const std::string & name ) const - { - return root / name.substr(0, 1) ; - } +fs::path ArticleStorage::skiplist_root(const std::string &name) const { return basedir / name; } +fs::path ArticleStorage::skiplist_dir(const fs::path &root, const std::string &name) const +{ + return root / name.substr(0, 1); +} }