aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--broadd.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/broadd.c b/broadd.c
index 3f63695..c5a8dbf 100644
--- a/broadd.c
+++ b/broadd.c
@@ -6,6 +6,8 @@
---------- RATE_LIMIT_S -> rate limit expiry window
---------- CLIENT_TIMEOUT -> how long to wait before evicting a udp client
---------- WILDCARD -> whether or not to enable wildcard. set to 0 or 1.
+---------- RELAY_TXT -> read a pre-determined list of relays and connect to them at startup.
+-------------- format is one relay per line, `<ip> <port>`
------ difference:
---------- udp mode does not send m_ok or p_ok
---------- send `N\n` to initiate connection in udp mode
@@ -590,6 +592,23 @@ int main(int argc, char** argv) {
fds[ 1 ].fd = STDIN_FILENO;
fds[ 1 ].events = POLLIN;
+ // parse relays.txt file
+ const char* rpath = getenv("RELAY_TXT");
+ if (rpath) {
+ FILE* f = fopen(rpath, "r");
+ if (f) {
+ char line[ 256 ];
+ while (fgets(line, sizeof(line), f)) {
+ char ip[ 64 ], port[ 16 ];
+ if (sscanf(line, "%63s %15s", ip, port) != 2) continue;
+ connect_relay(ip, port);
+ }
+ fclose(f);
+ } else {
+ perror("unable to open RELAY_TXT");
+ }
+ }
+
while (1) {
int run_shutdown = 0;
int got_msg = 0;