Browse Source

tpws : dropcaps

pull/33/head
bolvan 6 years ago
parent
commit
8b9d7f56d3
  1. BIN
      binaries/aarch64/tpws
  2. BIN
      binaries/armhf/tpws
  3. BIN
      binaries/mips32r1-lsb/tpws
  4. BIN
      binaries/mips32r1-msb/tpws
  5. BIN
      binaries/mips64r2-msb/tpws
  6. BIN
      binaries/ppc/tpws
  7. BIN
      binaries/x86/tpws
  8. BIN
      binaries/x86_64/tpws
  9. 2
      docs/compile/openwrt/package/zapret/tpws/Makefile
  10. 28
      tpws/tpws.c

BIN
binaries/aarch64/tpws

Binary file not shown.

BIN
binaries/armhf/tpws

Binary file not shown.

BIN
binaries/mips32r1-lsb/tpws

Binary file not shown.

BIN
binaries/mips32r1-msb/tpws

Binary file not shown.

BIN
binaries/mips64r2-msb/tpws

Binary file not shown.

BIN
binaries/ppc/tpws

Binary file not shown.

BIN
binaries/x86/tpws

Binary file not shown.

BIN
binaries/x86_64/tpws

Binary file not shown.

2
docs/compile/openwrt/package/zapret/tpws/Makefile

@ -12,7 +12,7 @@ define Package/tpws
CATEGORY:=Network
TITLE:=tpws
SUBMENU:=Zapret
DEPENDS:=+zlib
DEPENDS:=+zlib +libcap
endef
define Build/Prepare

28
tpws/tpws.c

@ -23,6 +23,7 @@
#include <getopt.h>
#include <pwd.h>
#include <signal.h>
#include <sys/capability.h>
#include "tpws.h"
#include "tpws_conn.h"
@ -789,6 +790,26 @@ void daemonize()
/* stderror */
}
bool dropcaps()
{
cap_t capabilities;
capabilities = cap_init();
if (cap_clear(capabilities))
{
perror("cap_init");
return false;
}
if (cap_set_proc(capabilities))
{
perror("cap_set_proc");
cap_free(capabilities);
return false;
}
cap_free(capabilities);
return true;
}
bool droproot()
{
if (params.uid || params.gid)
@ -804,9 +825,10 @@ bool droproot()
return false;
}
}
return true;
return dropcaps();
}
bool writepid(const char *filename)
{
FILE *F;
@ -1002,7 +1024,7 @@ int main(int argc, char *argv[]) {
perror("setsockopt (SO_KEEPALIVE): ");
goto exiterr;
}
//Mark that this socket can be used for transparent proxying
//This allows the socket to accept connections for non-local IPs
if (setsockopt(listen_fd, SOL_IP, IP_TRANSPARENT, &yes, sizeof(yes)) == -1)
@ -1027,7 +1049,7 @@ int main(int argc, char *argv[]) {
perror("listen: ");
goto exiterr;
}
//splice() causes the process to receive the SIGPIPE-signal if one part (for
//example a socket) is closed during splice(). I would rather have splice()
//fail and return -1, so blocking SIGPIPE.

Loading…
Cancel
Save