From ba7e3cd9a18d6c74bc1f3819ec7485e25daf3472 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Tue, 24 May 2022 19:42:43 +0200 Subject: Major IPC Rework + Added Socket2 IPC is now done with UNIX sockets instead of TCP ones (security!), and added Socket2, see Wiki. --- hyprctl/main.cpp | 40 +++++++--------------------------------- 1 file changed, 7 insertions(+), 33 deletions(-) (limited to 'hyprctl/main.cpp') diff --git a/hyprctl/main.cpp b/hyprctl/main.cpp index 9cca9792..5b932441 100644 --- a/hyprctl/main.cpp +++ b/hyprctl/main.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include @@ -29,7 +30,7 @@ usage: hyprctl [command] [(opt)args] )#"; void request(std::string arg) { - const auto SERVERSOCKET = socket(AF_INET, SOCK_STREAM, 0); + const auto SERVERSOCKET = socket(AF_UNIX, SOCK_STREAM, 0); if (SERVERSOCKET < 0) { std::cout << "Couldn't open a socket (1)"; @@ -43,39 +44,12 @@ void request(std::string arg) { return; } - sockaddr_in serverAddress = {0}; - serverAddress.sin_family = AF_INET; - bcopy((char*)SERVER->h_addr, (char*)&serverAddress.sin_addr.s_addr, SERVER->h_length); + sockaddr_un serverAddress = {0}; + serverAddress.sun_family = AF_UNIX; + strcpy(serverAddress.sun_path, "/tmp/hypr/.socket.sock"); - std::ifstream socketPortStream; - socketPortStream.open("/tmp/hypr/.socket"); - - if (!socketPortStream.good()) { - std::cout << "No socket port file (2a)"; - return; - } - - std::string port = ""; - std::getline(socketPortStream, port); - socketPortStream.close(); - - int portInt = 0; - try { - portInt = std::stoi(port.c_str()); - } catch (...) { - std::cout << "Port not an int?! (2b)"; - return; - } - - if (portInt == 0) { - std::cout << "Port not an int?! (2c)"; - return; - } - - serverAddress.sin_port = portInt; - - if (connect(SERVERSOCKET, (sockaddr*)&serverAddress, sizeof(serverAddress)) < 0) { - std::cout << "Couldn't connect to port " << port << " (3) Is Hyprland running?"; + if (connect(SERVERSOCKET, (sockaddr*)&serverAddress, SUN_LEN(&serverAddress)) < 0) { + std::cout << "Couldn't connect to /tmp/hypr/.socket.sock. (3) Is Hyprland running?"; return; } -- cgit v1.2.3