Skip to content

Commit 7940e0d

Browse files
committed
feat: allow custom ip for cemuhook server
1 parent 4899f69 commit 7940e0d

File tree

2 files changed

+17
-11
lines changed

2 files changed

+17
-11
lines changed

scc/cemuhook_server.c

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -302,10 +302,10 @@ const int cemuhook_module_version(void) {
302302
return CEMUHOOK_MODULE_VERSION;
303303
}
304304

305-
void cemuhook_data_recieved(int fd, int port, const char* buffer, size_t size) {
305+
void cemuhook_data_received(int fd, const char* ip, int port, const char* buffer, size_t size) {
306306
struct sockaddr_in source;
307307
source.sin_family = AF_INET;
308-
source.sin_addr.s_addr = inet_addr("127.0.0.1");
308+
source.sin_addr.s_addr = inet_addr(ip);
309309
source.sin_port = htons(port);
310310

311311
parse_message(fd, buffer, size, &source);
@@ -321,7 +321,7 @@ bool cemuhook_socket_enable() {
321321

322322
#else
323323

324-
static void on_data_recieved(Daemon* d, int fd, void* userdata) {
324+
static void on_data_received(Daemon* d, int fd, void* userdata) {
325325
char buffer[BUFFER_SIZE];
326326
struct sockaddr_in source;
327327
socklen_t len = sizeof(struct sockaddr_in);
@@ -345,7 +345,11 @@ bool sccd_cemuhook_socket_enable() {
345345
struct sockaddr_in server_addr;
346346
memset(&server_addr, 0, sizeof(struct sockaddr_in));
347347
server_addr.sin_family = AF_INET;
348-
server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
348+
if (const char* custom_ip = getenv("SCC_SERVER_IP")) {
349+
server_addr.sin_addr.s_addr = inet_addr(custom_ip);
350+
} else {
351+
server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
352+
}
349353
if (const char* custom_port = getenv("SCC_SERVER_PORT")) {
350354
server_addr.sin_port = atoi(custom_port);
351355
} else {
@@ -381,7 +385,7 @@ bool sccd_cemuhook_socket_enable() {
381385
return false;
382386
}
383387

384-
if (!sccd_poller_add(sock, &on_data_recieved, NULL)) {
388+
if (!sccd_poller_add(sock, &on_data_received, NULL)) {
385389
LERROR("sccd_poller_add failed to add listening socket");
386390
return false;
387391
}

scc/cemuhook_server.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
log = logging.getLogger("CemuHook")
1818

1919
BUFFER_SIZE = 1024
20+
IP = '127.0.0.1'
2021
PORT = 26760
2122

2223

@@ -35,8 +36,8 @@ class CemuhookServer:
3536

3637
def __init__(self, daemon):
3738
self._lib = find_library('libcemuhook')
38-
self._lib.cemuhook_data_recieved.argtypes = [ c_int, c_int, c_char_p, c_size_t ]
39-
self._lib.cemuhook_data_recieved.restype = None
39+
self._lib.cemuhook_data_received.argtypes = [ c_int, c_char_p, c_int, c_char_p, c_size_t ]
40+
self._lib.cemuhook_data_received.restype = None
4041
self._lib.cemuhook_feed.argtypes = [ c_int, c_int, CemuhookServer.C_DATA_T ]
4142
self._lib.cemuhook_feed.restype = None
4243
self._lib.cemuhook_socket_enable.argtypes = []
@@ -50,10 +51,11 @@ def __init__(self, daemon):
5051
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
5152

5253
poller = daemon.get_poller()
53-
daemon.poller.register(self.socket.fileno(), poller.POLLIN, self.on_data_recieved)
54+
daemon.poller.register(self.socket.fileno(), poller.POLLIN, self.on_data_received)
5455

5556
server_port = os.getenv('SCC_SERVER_PORT') or PORT;
56-
self.socket.bind(('127.0.0.1', server_port))
57+
server_ip = os.getenv('SCC_SERVER_IP') or IP;
58+
self.socket.bind((server_ip, server_port))
5759
log.info("Created CemuHookUDP Motion Provider")
5860

5961
Thread(target=self._keepalive).start()
@@ -66,11 +68,11 @@ def _keepalive(self):
6668
self.feed((0.0, 0.0, 0.0, 0.0, 0.0, 0.0))
6769
sleep(1)
6870

69-
def on_data_recieved(self, fd, event_type):
71+
def on_data_received(self, fd, event_type):
7072
if fd != self.socket.fileno(): return
7173
message, (ip, port) = self.socket.recvfrom(BUFFER_SIZE)
7274
buffer = create_string_buffer(BUFFER_SIZE)
73-
self._lib.cemuhook_data_recieved(fd, port, message, len(message), buffer)
75+
self._lib.cemuhook_data_received(fd, ip, port, message, len(message), buffer)
7476

7577

7678
def feed(self, data):

0 commit comments

Comments
 (0)