-- Leo's gemini proxy
-- Connecting to git.thebackupbox.net:1965...
-- Connected
-- Sending request
-- Meta line: 20 text/gemini
repo: urcd action: commit revision: path_from: revision_from: 203b9ea0c24a886ea70806b66bab9dbded432f97: path_to: revision_to:
commit 203b9ea0c24a886ea70806b66bab9dbded432f97 Author: root <root@localhost.(none)> Date: Mon Jul 7 04:13:38 2014 +0000 [urc-udp*.c] env/BROADCAST enables UDP broadcast messages for URC :-) diff --git a/README b/README
--- a/README +++ b/README @@ -368,6 +368,10 @@ POLICY and ISUPPORT: packets. setting a 0 value will disable this feature, however it is not recommended. + BROADCAST: + integer default is 0. setting this value to 1 enables UDP broadcasts in + urc-udpsend and urc-udprecv. + logging URC services: mkdir -p /path/to/urcd-service/log/ ln -s run.log /path/to/urcd-service/log/run diff --git a/src/urc-udprecv.c b/src/urc-udprecv.c
--- a/src/urc-udprecv.c +++ b/src/urc-udprecv.c @@ -33,11 +33,24 @@ main(int argc, char **argv) bzero(&udp,sizeof(udp)); udp.sin_family = AF_INET; + unsigned char buffer[1024] = {0}; + + int BROADCAST; + int n = open("env/BROADCAST",0); + if (n>0) + { + if (read(n,buffer,1024)>0) BROADCAST = atoi(buffer); + else BROADCAST = 0; + } else BROADCAST = 0; + close(n); + if ( (argc<4) || (!(udp.sin_port=htons(atoi(argv[2])))) || (!inet_pton(AF_INET,argv[1],&udp.sin_addr)) || ((udpfd=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP))<0) + || (setsockopt(udpfd,SOL_SOCKET,SO_REUSEADDR,(int[]){1},sizeof(int))) + || ((BROADCAST) && (setsockopt(udpfd,SOL_SOCKET,SO_BROADCAST,(int[]){1},sizeof(int)))) || (bind(udpfd,(struct sockaddr *)&udp,sizeof(udp))<0) ) { @@ -45,9 +58,6 @@ main(int argc, char **argv) exit(64); } - unsigned char buffer[1024] = {0}; - - int n; float LIMIT; n = open("env/LIMIT",0); if (n>0) diff --git a/src/urc-udpsend.c b/src/urc-udpsend.c
--- a/src/urc-udpsend.c +++ b/src/urc-udpsend.c @@ -34,11 +34,24 @@ main(int argc, char **argv) bzero(&udp,sizeof(udp)); udp.sin_family = AF_INET; + unsigned char buffer[1024] = {0}; + + int BROADCAST; + int n = open("env/BROADCAST",0); + if (n>0) + { + if (read(n,buffer,1024)>0) BROADCAST = atoi(buffer); + else BROADCAST = 0; + } else BROADCAST = 0; + close(n); + if ( (argc<4) || (!(udp.sin_port=htons(atoi(argv[2])))) || (!inet_pton(AF_INET,argv[1],&udp.sin_addr)) || ((udpfd=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP))<0) + || (setsockopt(udpfd,SOL_SOCKET,SO_REUSEADDR,(int[]){1},sizeof(int))) + || ((BROADCAST) && (setsockopt(udpfd,SOL_SOCKET,SO_BROADCAST,(int[]){1},sizeof(int)))) || (connect(udpfd,(struct sockaddr *)&udp,sizeof(udp))<0) ) { @@ -50,19 +63,9 @@ main(int argc, char **argv) if (devurandomfd<0) exit(255); unsigned char byte[1]; - char buffer[1024] = {0}; char user[UNIX_PATH_MAX] = {0}; if (itoa(user,getpid(),UNIX_PATH_MAX)<0) exit(1); - float LIMIT; - int n = open("env/LIMIT",0); - if (n>0) - { - if (read(n,buffer,1024)>0) LIMIT = atof(buffer); - else LIMIT = 1.0; - } else LIMIT = 1.0; - close(n); - if (chdir(argv[3])) exit(64); struct passwd *urcd = getpwnam("urcd"); if ((!urcd) || ((chroot(argv[3])) || (setgid(urcd->pw_gid)) || (setuid(urcd->pw_uid)))) exit(64);
-----END OF PAGE-----
-- Response ended
-- Page fetched on Sun Jun 2 18:42:52 2024