net: allow users to bind services to specific addresses
some people don't want to have their services open to the world, and don't want to setup a firewall just for this. This can be easily accomplished by binding the services to specific addresses.
This commit is contained in:
parent
823631979b
commit
a7e94f6865
@ -116,7 +116,7 @@ Network server features
|
|||||||
|
|
||||||
By enabling the networking support with --net Dump1090 starts listening
|
By enabling the networking support with --net Dump1090 starts listening
|
||||||
for clients connections on port 30002 and 30001 (you can change both the
|
for clients connections on port 30002 and 30001 (you can change both the
|
||||||
ports if you want, see --help output).
|
ports if you want, as well as their listening addresses, see --help output).
|
||||||
|
|
||||||
Port 30002
|
Port 30002
|
||||||
---
|
---
|
||||||
|
39
dump1090.c
39
dump1090.c
@ -1894,12 +1894,13 @@ void snipMode(int level) {
|
|||||||
struct {
|
struct {
|
||||||
char *descr;
|
char *descr;
|
||||||
int *socket;
|
int *socket;
|
||||||
|
char *address;
|
||||||
int port;
|
int port;
|
||||||
} modesNetServices[MODES_NET_SERVICES_NUM] = {
|
} modesNetServices[MODES_NET_SERVICES_NUM] = {
|
||||||
{"Raw TCP output", &Modes.ros, MODES_NET_OUTPUT_RAW_PORT},
|
{"Raw TCP output", &Modes.ros, NULL, MODES_NET_OUTPUT_RAW_PORT},
|
||||||
{"Raw TCP input", &Modes.ris, MODES_NET_INPUT_RAW_PORT},
|
{"Raw TCP input", &Modes.ris, NULL, MODES_NET_INPUT_RAW_PORT},
|
||||||
{"HTTP server", &Modes.https, MODES_NET_HTTP_PORT},
|
{"HTTP server", &Modes.https, NULL, MODES_NET_HTTP_PORT},
|
||||||
{"Basestation TCP output", &Modes.sbsos, MODES_NET_OUTPUT_SBS_PORT}
|
{"Basestation TCP output", &Modes.sbsos, NULL, MODES_NET_OUTPUT_SBS_PORT}
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Networking "stack" initialization. */
|
/* Networking "stack" initialization. */
|
||||||
@ -1910,12 +1911,20 @@ void modesInitNet(void) {
|
|||||||
Modes.maxfd = -1;
|
Modes.maxfd = -1;
|
||||||
|
|
||||||
for (j = 0; j < MODES_NET_SERVICES_NUM; j++) {
|
for (j = 0; j < MODES_NET_SERVICES_NUM; j++) {
|
||||||
int s = anetTcpServer(Modes.aneterr, modesNetServices[j].port, NULL);
|
int s = anetTcpServer(Modes.aneterr, modesNetServices[j].port,
|
||||||
|
modesNetServices[j].address);
|
||||||
if (s == -1) {
|
if (s == -1) {
|
||||||
fprintf(stderr, "Error opening the listening port %d (%s): %s\n",
|
if (modesNetServices[j].address == NULL)
|
||||||
modesNetServices[j].port,
|
fprintf(stderr, "Error opening the listening port %d (%s): %s\n",
|
||||||
modesNetServices[j].descr,
|
modesNetServices[j].port,
|
||||||
strerror(errno));
|
modesNetServices[j].descr,
|
||||||
|
strerror(errno));
|
||||||
|
else
|
||||||
|
fprintf(stderr, "Error opening the listening port %d on %s (%s): %s\n",
|
||||||
|
modesNetServices[j].port,
|
||||||
|
modesNetServices[j].address,
|
||||||
|
modesNetServices[j].descr,
|
||||||
|
strerror(errno));
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
anetNonBlock(Modes.aneterr, s);
|
anetNonBlock(Modes.aneterr, s);
|
||||||
@ -2429,9 +2438,13 @@ void showHelp(void) {
|
|||||||
"--raw Show only messages hex values.\n"
|
"--raw Show only messages hex values.\n"
|
||||||
"--net Enable networking.\n"
|
"--net Enable networking.\n"
|
||||||
"--net-only Enable just networking, no RTL device or file used.\n"
|
"--net-only Enable just networking, no RTL device or file used.\n"
|
||||||
|
"--net-ro-addr <addr> TCP listening address for raw output (default: 0.0.0.0).\n"
|
||||||
"--net-ro-port <port> TCP listening port for raw output (default: 30002).\n"
|
"--net-ro-port <port> TCP listening port for raw output (default: 30002).\n"
|
||||||
|
"--net-ri-addr <addr> TCP listenint address for raw input (default: 0.0.0.0).\n"
|
||||||
"--net-ri-port <port> TCP listening port for raw input (default: 30001).\n"
|
"--net-ri-port <port> TCP listening port for raw input (default: 30001).\n"
|
||||||
|
"--net-http-addr <addr> HTTP server address (default: 0.0.0.0).\n"
|
||||||
"--net-http-port <port> HTTP server port (default: 8080).\n"
|
"--net-http-port <port> HTTP server port (default: 8080).\n"
|
||||||
|
"--net-sbs-addr <addr> TCP listening address for BaseStation format output (default: 0.0.0.0).\n"
|
||||||
"--net-sbs-port <port> TCP listening port for BaseStation format output (default: 30003).\n"
|
"--net-sbs-port <port> TCP listening port for BaseStation format output (default: 30003).\n"
|
||||||
"--no-fix Disable single-bits error correction using CRC.\n"
|
"--no-fix Disable single-bits error correction using CRC.\n"
|
||||||
"--no-crc-check Disable messages with broken CRC (discouraged).\n"
|
"--no-crc-check Disable messages with broken CRC (discouraged).\n"
|
||||||
@ -2505,12 +2518,20 @@ int main(int argc, char **argv) {
|
|||||||
} else if (!strcmp(argv[j],"--net-only")) {
|
} else if (!strcmp(argv[j],"--net-only")) {
|
||||||
Modes.net = 1;
|
Modes.net = 1;
|
||||||
Modes.net_only = 1;
|
Modes.net_only = 1;
|
||||||
|
} else if (!strcmp(argv[j],"--net-ro-addr") && more) {
|
||||||
|
modesNetServices[MODES_NET_SERVICE_RAWO].address = strdup(argv[++j]);
|
||||||
} else if (!strcmp(argv[j],"--net-ro-port") && more) {
|
} else if (!strcmp(argv[j],"--net-ro-port") && more) {
|
||||||
modesNetServices[MODES_NET_SERVICE_RAWO].port = atoi(argv[++j]);
|
modesNetServices[MODES_NET_SERVICE_RAWO].port = atoi(argv[++j]);
|
||||||
|
} else if (!strcmp(argv[j],"--net-ri-addr") && more) {
|
||||||
|
modesNetServices[MODES_NET_SERVICE_RAWI].address = strdup(argv[++j]);
|
||||||
} else if (!strcmp(argv[j],"--net-ri-port") && more) {
|
} else if (!strcmp(argv[j],"--net-ri-port") && more) {
|
||||||
modesNetServices[MODES_NET_SERVICE_RAWI].port = atoi(argv[++j]);
|
modesNetServices[MODES_NET_SERVICE_RAWI].port = atoi(argv[++j]);
|
||||||
|
} else if (!strcmp(argv[j],"--net-http-addr") && more) {
|
||||||
|
modesNetServices[MODES_NET_SERVICE_HTTP].address = strdup(argv[++j]);
|
||||||
} else if (!strcmp(argv[j],"--net-http-port") && more) {
|
} else if (!strcmp(argv[j],"--net-http-port") && more) {
|
||||||
modesNetServices[MODES_NET_SERVICE_HTTP].port = atoi(argv[++j]);
|
modesNetServices[MODES_NET_SERVICE_HTTP].port = atoi(argv[++j]);
|
||||||
|
} else if (!strcmp(argv[j],"--net-sbs-addr") && more) {
|
||||||
|
modesNetServices[MODES_NET_SERVICE_SBS].address = strdup(argv[++j]);
|
||||||
} else if (!strcmp(argv[j],"--net-sbs-port") && more) {
|
} else if (!strcmp(argv[j],"--net-sbs-port") && more) {
|
||||||
modesNetServices[MODES_NET_SERVICE_SBS].port = atoi(argv[++j]);
|
modesNetServices[MODES_NET_SERVICE_SBS].port = atoi(argv[++j]);
|
||||||
} else if (!strcmp(argv[j],"--onlyaddr")) {
|
} else if (!strcmp(argv[j],"--onlyaddr")) {
|
||||||
|
Loading…
Reference in New Issue
Block a user