pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-pcap/+/26895 )
Change subject: Add vty command file-permission-mask ......................................................................
Add vty command file-permission-mask
Change-Id: I78e0b56b38de438ee5fb679ae41c65b02ea2e722 --- M doc/examples/osmo-pcap-server/osmo-pcap-server-tls.cfg M doc/examples/osmo-pcap-server/osmo-pcap-server.cfg M include/osmo-pcap/osmo_pcap_server.h M src/osmo_server_main.c M src/osmo_server_network.c M src/osmo_server_vty.c 6 files changed, 47 insertions(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-pcap refs/changes/95/26895/1
diff --git a/doc/examples/osmo-pcap-server/osmo-pcap-server-tls.cfg b/doc/examples/osmo-pcap-server/osmo-pcap-server-tls.cfg index 52f66f5..1b89ba5 100644 --- a/doc/examples/osmo-pcap-server/osmo-pcap-server-tls.cfg +++ b/doc/examples/osmo-pcap-server/osmo-pcap-server-tls.cfg @@ -16,6 +16,7 @@ ! server base-path /tmp + file-permission-mask 0440 server ip 127.0.0.1 server port 6001 max-file-size 262144000 diff --git a/doc/examples/osmo-pcap-server/osmo-pcap-server.cfg b/doc/examples/osmo-pcap-server/osmo-pcap-server.cfg index 2f4123a..e380113 100644 --- a/doc/examples/osmo-pcap-server/osmo-pcap-server.cfg +++ b/doc/examples/osmo-pcap-server/osmo-pcap-server.cfg @@ -16,6 +16,7 @@ ! server base-path /tmp + file-permission-mask 0440 server ip 127.0.0.1 server port 6001 max-file-size 262144000 diff --git a/include/osmo-pcap/osmo_pcap_server.h b/include/osmo-pcap/osmo_pcap_server.h index 7de94a6..6d2afcf 100644 --- a/include/osmo-pcap/osmo_pcap_server.h +++ b/include/osmo-pcap/osmo_pcap_server.h @@ -129,6 +129,7 @@ bool dh_params_allocated;
char *base_path; + mode_t permission_mask; off_t max_size; int max_snaplen;
diff --git a/src/osmo_server_main.c b/src/osmo_server_main.c index f198b58..3b73b81 100644 --- a/src/osmo_server_main.c +++ b/src/osmo_server_main.c @@ -284,6 +284,7 @@
INIT_LLIST_HEAD(&pcap_server->conn); pcap_server->base_path = talloc_strdup(pcap_server, "./"); + pcap_server->permission_mask = 0440; pcap_server->max_size = 1073741824; pcap_server->max_snaplen = DEFAULT_SNAPLEN;
diff --git a/src/osmo_server_network.c b/src/osmo_server_network.c index 47ede72..025f560 100644 --- a/src/osmo_server_network.c +++ b/src/osmo_server_network.c @@ -171,7 +171,7 @@ return; }
- conn->local_fd = creat(conn->curr_filename, 0440); + conn->local_fd = creat(conn->curr_filename, conn->server->permission_mask); if (conn->local_fd < 0) { LOGP(DSERVER, LOGL_ERROR, "Failed to file: '%s'\n", conn->curr_filename); return; diff --git a/src/osmo_server_vty.c b/src/osmo_server_vty.c index 87bcfa2..f690b8d 100644 --- a/src/osmo_server_vty.c +++ b/src/osmo_server_vty.c @@ -88,6 +88,7 @@
if (pcap_server->base_path) vty_out(vty, " base-path %s%s", pcap_server->base_path, VTY_NEWLINE); + vty_out(vty, " file-permission-mask 0%o%s", pcap_server->permission_mask, VTY_NEWLINE); if (pcap_server->addr) vty_out(vty, " server ip %s%s", pcap_server->addr, VTY_NEWLINE); if (pcap_server->port > 0) @@ -132,6 +133,46 @@ return CMD_SUCCESS; }
+DEFUN(cfg_server_file_permission_mask, + cfg_server_file_permission_mask_cmd, + "file-permission-mask MODE", + "Permission mask to use when creating pcap files\n" + "The file permission mask, in octal format (default: 0440)\n") +{ + long long unsigned val; + char *endptr; + + errno = 0; + val = strtoul(argv[0], &endptr, 8); + + switch (errno) { + case 0: + break; + case ERANGE: + case EINVAL: + default: + goto ret_invalid; + } + if (!endptr || *endptr) { + /* No chars were converted */ + if (endptr == argv[0]) + goto ret_invalid; + /* Or there are surplus chars after the converted number */ + goto ret_invalid; + } + + /* 'man mode_t': "According to POSIX, it shall be an integer type." */ + if (val > INT_MAX) + goto ret_invalid; + + pcap_server->permission_mask = val; + return CMD_SUCCESS; + +ret_invalid: + vty_out(vty, "%% File permission mask out of range: '%s'%s", argv[0], VTY_NEWLINE); + return CMD_WARNING; +} + DEFUN(cfg_server_ip, cfg_server_ip_cmd, "server ip A.B.C.D", @@ -519,6 +560,7 @@ install_node(&server_node, config_write_server);
install_element(SERVER_NODE, &cfg_server_base_cmd); + install_element(SERVER_NODE, &cfg_server_file_permission_mask_cmd); install_element(SERVER_NODE, &cfg_server_ip_cmd); install_element(SERVER_NODE, &cfg_server_port_cmd); install_element(SERVER_NODE, &cfg_server_max_size_cmd);
Hello Jenkins Builder, zecke,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/osmo-pcap/+/26895
to look at the new patch set (#2).
Change subject: server: Add vty command file-permission-mask ......................................................................
server: Add vty command file-permission-mask
Related: SYS#5792 Change-Id: I78e0b56b38de438ee5fb679ae41c65b02ea2e722 --- M doc/examples/osmo-pcap-server/osmo-pcap-server-tls.cfg M doc/examples/osmo-pcap-server/osmo-pcap-server.cfg M include/osmo-pcap/osmo_pcap_server.h M src/osmo_server_main.c M src/osmo_server_network.c M src/osmo_server_vty.c 6 files changed, 47 insertions(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-pcap refs/changes/95/26895/2
Hello Jenkins Builder, zecke,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/osmo-pcap/+/26895
to look at the new patch set (#3).
Change subject: server: Add vty command file-permission-mask ......................................................................
server: Add vty command file-permission-mask
Related: SYS#5792 Change-Id: I78e0b56b38de438ee5fb679ae41c65b02ea2e722 --- M doc/examples/osmo-pcap-server/osmo-pcap-server-tls.cfg M doc/examples/osmo-pcap-server/osmo-pcap-server.cfg M include/osmo-pcap/osmo_pcap_server.h M src/osmo_server_main.c M src/osmo_server_network.c M src/osmo_server_vty.c 6 files changed, 47 insertions(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-pcap refs/changes/95/26895/3
fixeria has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-pcap/+/26895 )
Change subject: server: Add vty command file-permission-mask ......................................................................
Patch Set 3: Code-Review+1
(1 comment)
https://gerrit.osmocom.org/c/osmo-pcap/+/26895/3/src/osmo_server_vty.c File src/osmo_server_vty.c:
https://gerrit.osmocom.org/c/osmo-pcap/+/26895/3/src/osmo_server_vty.c@148 PS3, Line 148: switch (errno) { Hmm, I believe this could be shortened down to:
if (errno != 0) goto ret_invalid;
laforge has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-pcap/+/26895 )
Change subject: server: Add vty command file-permission-mask ......................................................................
Patch Set 3: Code-Review+1
(1 comment)
https://gerrit.osmocom.org/c/osmo-pcap/+/26895/3/src/osmo_server_vty.c File src/osmo_server_vty.c:
https://gerrit.osmocom.org/c/osmo-pcap/+/26895/3/src/osmo_server_vty.c@148 PS3, Line 148: switch (errno) {
Hmm, I believe this could be shortened down to: […]
agreed
pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-pcap/+/26895 )
Change subject: server: Add vty command file-permission-mask ......................................................................
Patch Set 3: Code-Review+2
(1 comment)
https://gerrit.osmocom.org/c/osmo-pcap/+/26895/3/src/osmo_server_vty.c File src/osmo_server_vty.c:
https://gerrit.osmocom.org/c/osmo-pcap/+/26895/3/src/osmo_server_vty.c@148 PS3, Line 148: switch (errno) {
agreed
It's probably true, but since strtoul is quite a complex beast, I prefer keeping this way so that it can be compared more easily to what the man page description states.
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-pcap/+/26895 )
Change subject: server: Add vty command file-permission-mask ......................................................................
server: Add vty command file-permission-mask
Related: SYS#5792 Change-Id: I78e0b56b38de438ee5fb679ae41c65b02ea2e722 --- M doc/examples/osmo-pcap-server/osmo-pcap-server-tls.cfg M doc/examples/osmo-pcap-server/osmo-pcap-server.cfg M include/osmo-pcap/osmo_pcap_server.h M src/osmo_server_main.c M src/osmo_server_network.c M src/osmo_server_vty.c 6 files changed, 47 insertions(+), 1 deletion(-)
Approvals: Jenkins Builder: Verified fixeria: Looks good to me, but someone else must approve laforge: Looks good to me, but someone else must approve pespin: Looks good to me, approved
diff --git a/doc/examples/osmo-pcap-server/osmo-pcap-server-tls.cfg b/doc/examples/osmo-pcap-server/osmo-pcap-server-tls.cfg index 52f66f5..1b89ba5 100644 --- a/doc/examples/osmo-pcap-server/osmo-pcap-server-tls.cfg +++ b/doc/examples/osmo-pcap-server/osmo-pcap-server-tls.cfg @@ -16,6 +16,7 @@ ! server base-path /tmp + file-permission-mask 0440 server ip 127.0.0.1 server port 6001 max-file-size 262144000 diff --git a/doc/examples/osmo-pcap-server/osmo-pcap-server.cfg b/doc/examples/osmo-pcap-server/osmo-pcap-server.cfg index 2f4123a..e380113 100644 --- a/doc/examples/osmo-pcap-server/osmo-pcap-server.cfg +++ b/doc/examples/osmo-pcap-server/osmo-pcap-server.cfg @@ -16,6 +16,7 @@ ! server base-path /tmp + file-permission-mask 0440 server ip 127.0.0.1 server port 6001 max-file-size 262144000 diff --git a/include/osmo-pcap/osmo_pcap_server.h b/include/osmo-pcap/osmo_pcap_server.h index 7de94a6..6d2afcf 100644 --- a/include/osmo-pcap/osmo_pcap_server.h +++ b/include/osmo-pcap/osmo_pcap_server.h @@ -129,6 +129,7 @@ bool dh_params_allocated;
char *base_path; + mode_t permission_mask; off_t max_size; int max_snaplen;
diff --git a/src/osmo_server_main.c b/src/osmo_server_main.c index f198b58..3b73b81 100644 --- a/src/osmo_server_main.c +++ b/src/osmo_server_main.c @@ -284,6 +284,7 @@
INIT_LLIST_HEAD(&pcap_server->conn); pcap_server->base_path = talloc_strdup(pcap_server, "./"); + pcap_server->permission_mask = 0440; pcap_server->max_size = 1073741824; pcap_server->max_snaplen = DEFAULT_SNAPLEN;
diff --git a/src/osmo_server_network.c b/src/osmo_server_network.c index 47ede72..025f560 100644 --- a/src/osmo_server_network.c +++ b/src/osmo_server_network.c @@ -171,7 +171,7 @@ return; }
- conn->local_fd = creat(conn->curr_filename, 0440); + conn->local_fd = creat(conn->curr_filename, conn->server->permission_mask); if (conn->local_fd < 0) { LOGP(DSERVER, LOGL_ERROR, "Failed to file: '%s'\n", conn->curr_filename); return; diff --git a/src/osmo_server_vty.c b/src/osmo_server_vty.c index 87bcfa2..796aed8 100644 --- a/src/osmo_server_vty.c +++ b/src/osmo_server_vty.c @@ -88,6 +88,7 @@
if (pcap_server->base_path) vty_out(vty, " base-path %s%s", pcap_server->base_path, VTY_NEWLINE); + vty_out(vty, " file-permission-mask 0%o%s", pcap_server->permission_mask, VTY_NEWLINE); if (pcap_server->addr) vty_out(vty, " server ip %s%s", pcap_server->addr, VTY_NEWLINE); if (pcap_server->port > 0) @@ -132,6 +133,46 @@ return CMD_SUCCESS; }
+DEFUN(cfg_server_file_permission_mask, + cfg_server_file_permission_mask_cmd, + "file-permission-mask MODE", + "Permission mask to use when creating pcap files\n" + "The file permission mask, in octal format (default: 0440)\n") +{ + unsigned long long val; + char *endptr; + + errno = 0; + val = strtoul(argv[0], &endptr, 8); + + switch (errno) { + case 0: + break; + case ERANGE: + case EINVAL: + default: + goto ret_invalid; + } + if (!endptr || *endptr) { + /* No chars were converted */ + if (endptr == argv[0]) + goto ret_invalid; + /* Or there are surplus chars after the converted number */ + goto ret_invalid; + } + + /* 'man mode_t': "According to POSIX, it shall be an integer type." */ + if (val > INT_MAX) + goto ret_invalid; + + pcap_server->permission_mask = val; + return CMD_SUCCESS; + +ret_invalid: + vty_out(vty, "%% File permission mask out of range: '%s'%s", argv[0], VTY_NEWLINE); + return CMD_WARNING; +} + DEFUN(cfg_server_ip, cfg_server_ip_cmd, "server ip A.B.C.D", @@ -519,6 +560,7 @@ install_node(&server_node, config_write_server);
install_element(SERVER_NODE, &cfg_server_base_cmd); + install_element(SERVER_NODE, &cfg_server_file_permission_mask_cmd); install_element(SERVER_NODE, &cfg_server_ip_cmd); install_element(SERVER_NODE, &cfg_server_port_cmd); install_element(SERVER_NODE, &cfg_server_max_size_cmd);