summaryrefslogtreecommitdiff
path: root/src/server.c
diff options
context:
space:
mode:
authorGravatar moon <moon@coffin.ir> 2025-09-14 14:15:19 +0330
committerGravatar moon <moon@coffin.ir> 2025-09-14 14:15:19 +0330
commitf47b80f71dd3c6856280d5b0c62661879e191f24 (patch)
treee078fd3ac00f1b36755cb7e13c9ab3cd882b5dc5 /src/server.c
parentmoved to 3rd party (diff)
add custom port support
Diffstat (limited to 'src/server.c')
-rw-r--r--src/server.c27
1 files changed, 20 insertions, 7 deletions
diff --git a/src/server.c b/src/server.c
index 0e01683..98680a3 100644
--- a/src/server.c
+++ b/src/server.c
@@ -17,6 +17,8 @@
#include "sha256.c"
//
+uint16_t current_port = default_port;
+
const uint64_t max_neighbors = 1 << 10; // probably more than enough for a lot of folks
uint64_t current_neighbor_ptr = 0;
@@ -119,7 +121,7 @@ void* propagate_packet(void* _packet) {
neighbor.v4_addr[ 3 ]);
result = study(
- ip_string, default_port, send_data, send_len, &response_data, &response_len);
+ ip_string, neighbor.port, send_data, send_len, &response_data, &response_len);
} else if (neighbor.has_ipv6) {
char ip_string[ 46 ];
int offset = 0;
@@ -130,7 +132,7 @@ void* propagate_packet(void* _packet) {
}
result = study(
- ip_string, default_port, send_data, send_len, &response_data, &response_len);
+ ip_string, neighbor.port, send_data, send_len, &response_data, &response_len);
}
if (result != 0) { log(_error, "failed to send packet to neighbor"); }
@@ -540,7 +542,7 @@ void paste_server(
}
}
- struct relay_info audit_result = run_server_audit(ip_string, default_port);
+ struct relay_info audit_result = run_server_audit(ip_string, neighbor.port);
if (!audit_result.capabilities.can_store && audit_result.major_version == 0
&& audit_result.minor_version == 0) {
// invalid
@@ -829,7 +831,7 @@ void* check_neighbors(void* arg) {
neighbor.v4_addr[ 2 ],
neighbor.v4_addr[ 3 ]);
result = study(
- ip_string, default_port, audit_request, 1, &response_data, &response_len);
+ ip_string, neighbor.port, audit_request, 1, &response_data, &response_len);
} else if (neighbor.has_ipv6) {
char ip_string[ 46 ];
int offset = 0;
@@ -847,7 +849,7 @@ void* check_neighbors(void* arg) {
}
result = study(
- ip_string, default_port, audit_request, 1, &response_data, &response_len);
+ ip_string, neighbor.port, audit_request, 1, &response_data, &response_len);
}
if (result != 0 || response_data[ 0 ] != audit_response) {
@@ -901,13 +903,24 @@ int main(int argc, char** argv) {
free(__log_level);
}
+ char* port = get_config("port", false);
+ if (port) {
+ if (!isdigit(*port)) {
+ fprintf(stderr, "invalid port value '%s', must be a number\n", port);
+ exit(1);
+ }
+
+ current_port = atoi(port);
+ free(port);
+ }
+
fprintf(
stderr,
"-- moonpaste server v%i.%i --\n"
"port %i\n\n",
server_stats.major_version,
server_stats.minor_version,
- default_port);
+ current_port);
// init
packet_storage = alloc_map(max_storage * sizeof(struct data_packet_entry));
@@ -947,7 +960,7 @@ int main(int argc, char** argv) {
free(plugin_path);
}
- omen(default_port, paste_server);
+ omen(current_port, paste_server);
packet_cleanup_thread_running = false;
pthread_join(packet_cleanup_thread, NULL);