diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/commandHandler.cpp | 4 | ||||
| -rw-r--r-- | src/commandHandler.hpp | 2 | ||||
| -rw-r--r-- | src/session.cpp | 8 | ||||
| -rw-r--r-- | src/session.hpp | 4 | ||||
| -rw-r--r-- | src/sessionManager.cpp | 4 | ||||
| -rw-r--r-- | src/sessionManager.hpp | 2 |
6 files changed, 13 insertions, 11 deletions
diff --git a/src/commandHandler.cpp b/src/commandHandler.cpp index 6340625..7c04f68 100644 --- a/src/commandHandler.cpp +++ b/src/commandHandler.cpp @@ -61,7 +61,7 @@ CCommandHandler::SResult CCommandHandler::newCommand(const std::string &command, return exeCommand(*getCommand(command), args); } -void CCommandHandler::handleCommand(std::string input, const char ip[INET_ADDRSTRLEN]) const { +void CCommandHandler::handleCommand(std::string input, const std::string &ip) const { input = input.substr(1); std::string command; @@ -84,7 +84,7 @@ void CCommandHandler::handleCommand(std::string input, const char ip[INET_ADDRST std::function<void(eFormatType, const std::string &)> outputter = [](eFormatType type, const std::string &msg) { log(type, "{}", msg); }; - if (ip != nullptr) + if (!ip.empty()) if (auto session = g_pSessionManager->getByIp(ip)) outputter = [session](eFormatType, const std::string &msg) { session->write(msg); }; diff --git a/src/commandHandler.hpp b/src/commandHandler.hpp index 8d97fd5..a69011e 100644 --- a/src/commandHandler.hpp +++ b/src/commandHandler.hpp @@ -33,7 +33,7 @@ class CCommandHandler { // return false if command struct is invalid bool registerCommand(const SCommand &command); SResult newCommand(const std::string &command, const std::string &args) const; - void handleCommand(std::string input, const char ip[INET_ADDRSTRLEN] = {}) const; + void handleCommand(std::string input, const std::string &ip = {}) const; template <typename T> struct SMakeCommandArgs { diff --git a/src/session.cpp b/src/session.cpp index 36c2c6f..50f55bb 100644 --- a/src/session.cpp +++ b/src/session.cpp @@ -17,9 +17,11 @@ CSession::CSession() if (!m_sockfd.isValid()) throw std::runtime_error("session: Failed to create socket"); - inet_ntop(AF_INET, &m_addr.sin_addr, m_ip, INET_ADDRSTRLEN); + m_ip.resize(INET_ADDRSTRLEN); + inet_ntop(AF_INET, &m_addr.sin_addr, &m_ip[0], INET_ADDRSTRLEN); + m_ip.resize(strlen(m_ip.c_str())); m_port = ntohs(m_addr.sin_port); - m_isAdmin = std::ranges::any_of(m_adminIps, [this](const char *ip) { return strcmp(ip, m_ip) == 0; }); + m_isAdmin = std::ranges::any_of(m_adminIps, [this](const char *ip) { return m_ip == ip; }); log(LOG, "Client {} connected on port {}", m_ip, m_port); log(TRACE, "session: initialized"); @@ -260,7 +262,7 @@ const std::string &CSession::getName() const { return m_name; } -const char *CSession::getIp() const { +const std::string &CSession::getIp() const { return m_ip; } diff --git a/src/session.hpp b/src/session.hpp index 8aee414..65bef68 100644 --- a/src/session.hpp +++ b/src/session.hpp @@ -23,7 +23,7 @@ class CSession { }; const std::string &getName() const; - const char *getIp() const; + const std::string &getIp() const; void setSelf(std::pair<std::jthread, std::shared_ptr<CSession>> *self); std::unique_ptr<SRecvData> read(); @@ -57,7 +57,7 @@ class CSession { sockaddr_in m_addr; socklen_t m_addrLen = sizeof(m_addr); std::string m_name; - char m_ip[INET_ADDRSTRLEN]; + std::string m_ip; int m_port; bool m_isAdmin = false; diff --git a/src/sessionManager.cpp b/src/sessionManager.cpp index 911ec60..b81aeaf 100644 --- a/src/sessionManager.cpp +++ b/src/sessionManager.cpp @@ -79,8 +79,8 @@ CSession *CSessionManager::getByName(const std::string &name) const { return it != m_vSessions.end() ? it->second.get() : nullptr; } -CSession *CSessionManager::getByIp(const char m_ip[INET_ADDRSTRLEN]) const { - auto it = std::ranges::find_if(m_vSessions, [&m_ip](const auto &s) { log(LOG, s.second->m_ip); return strcmp(s.second->m_ip, m_ip) == 0; }); +CSession *CSessionManager::getByIp(const std::string &ip) const { + auto it = std::ranges::find_if(m_vSessions, [&ip](const auto &s) { log(LOG, s.second->m_ip); return s.second->m_ip == ip; }); return it != m_vSessions.end() ? it->second.get() : nullptr; } diff --git a/src/sessionManager.hpp b/src/sessionManager.hpp index 9739918..8e02a7d 100644 --- a/src/sessionManager.hpp +++ b/src/sessionManager.hpp @@ -24,7 +24,7 @@ class CSessionManager { void shutdownSessions(); CSession *getByName(const std::string &name) const; - CSession *getByIp(const char m_ip[INET_ADDRSTRLEN]) const; + CSession *getByIp(const std::string &ip) const; std::vector<std::shared_ptr<CSession>> getSessions() const; private: |
