Atlas - client.cpp

Home / usr / net / Pulse / src Lines: 1 | Size: 3106 bytes [Download] [Show on GitHub] [Search similar files] [Raw] [Raw (proxy)]
[FILE BEGIN]
1#include <iostream> 2#include <regex> 3#include <string> 4#include <sys/socket.h> 5#include <arpa/inet.h> 6#include <unistd.h> 7 8#include "global.h" 9 10void send_pulse(const std::string serverIP, const std::string& payload, const int port) { 11 int sock = socket(AF_INET, SOCK_STREAM, 0); 12 if (sock < 0) { 13 std::cerr << "Socket creation error" << std::endl; 14 return; 15 } 16 17 struct sockaddr_in serv_addr; 18 serv_addr.sin_family = AF_INET; 19 serv_addr.sin_port = htons(port); 20 21 if (inet_pton(AF_INET, serverIP.c_str(), &serv_addr.sin_addr) <= 0) { 22 std::cerr << "Invalid address/ Address not supported" << std::endl; 23 close(sock); 24 return; 25 } 26 27 if (connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) { 28 std::cerr << "Connection Failed" << std::endl; 29 close(sock); 30 return; 31 } 32 33 send(sock, payload.c_str(), payload.size(), 0); 34 35 char buffer[1024] = {0}; 36 int valread = read(sock, buffer, 1024); 37 if (valread > 0) { 38 std::cout << "Server Response: " << std::string(buffer, valread) << std::endl; 39 } 40 41 close(sock); 42} 43 44int main(int argc, char *argv[]) { 45 if (argc < 3) { 46 std::cout << "Usage (LOG): ./client SERVER:PORT LOG MACHINEID LEVEL MODULE MSG" << std::endl; 47 std::cout << "Usage (PING): ./client SERVER:PORT PING MACHINEID" << std::endl; 48 std::cout << "Usage (STATUS): ./client SERVER:PORT STATUS MACHINEID UPDATEID STATUSMSG" << std::endl; 49 return 1; 50 } 51 std::string serverAddr = argv[1]; 52 std::string type = argv[2]; 53 std::string machine = argv[3]; 54 std::string payload; 55 std::string d = std::string(1, DELIMITER); 56 57 /** 58 * To separate the ip into addr and port 59 */ 60 std::string serverIP = serverAddr.substr(0, serverAddr.find(":")); 61 std::string serverPort = serverAddr.substr(serverIP.length()+1, serverAddr.find(":")); 62 std::cout << serverIP; 63 64 if (type == "LOG") { 65 if (argc < 6) { 66 std::cout << "Usage (LOG): ./client LOG MACHINEID LEVEL MODULE MSG" << std::endl; 67 return 1; 68 } 69 std::string level = argv[4]; 70 std::string module = argv[5]; 71 std::string msg = argv[6]; 72 73 payload = type + d + machine + d + level + d + module + d + msg; 74 std::cout << "Sending PulseLog: " << payload << std::endl; 75 76 } else if (type == "PING") { 77 78 payload = type + d + machine; 79 std::cout << "Sending PulsePing: " << payload << std::endl; 80 81 } else if (type == "STATUS") { 82 if (argc < 5) { 83 std::cout << "Usage (STATUS): ./client STATUS MACHINEID UPDATEID STATUSMSG" << std::endl; 84 return 1; 85 } 86 std::string update_id = argv[4]; 87 std::string status_msg = argv[5]; 88 89 90 payload = type + d + machine + d + update_id + d + status_msg; 91 std::cout << "Sending PulseStatus: " << payload << std::endl; 92 93 } else { 94 std::cerr << "Unknown pulse type: " << type << std::endl; 95 return 1; 96 } 97 98 send_pulse(serverIP, payload, std::stoi(serverPort)); 99 100 return 0; 101} 102
[FILE END]
(C) 2025 0x4248 (C) 2025 4248 Media and 4248 Systems, All part of 0x4248 See LICENCE files for more information. Not all files are by 0x4248 always check Licencing.