From f0a672b16a675a7199fce6db56e52ed2bd0c4b99 Mon Sep 17 00:00:00 2001 From: Vladimir Dubrovin <3proxy@3proxy.ru> Date: Fri, 29 May 2026 20:29:25 +0300 Subject: [PATCH] Unify installation environment --- CMakeLists.txt | 47 +++++++++++++++++-------------- Makefile.FreeBSD | 46 ++++++++++++++++++------------ Makefile.Linux | 33 +++++++++------------- Makefile.unix | 46 ++++++++++++++++++------------ debian/postinst | 14 ++++++++++ scripts/3proxy.cfg | 4 --- scripts/3proxy.cfg.in | 31 ++++++++++++++++++++ scripts/3proxy.cfg.inchroot | 6 ++-- scripts/3proxy.service | 19 ------------- scripts/3proxy.service.in | 2 +- scripts/3proxy.tmpfiles.in | 3 -- scripts/add3proxyuser.sh | 15 ---------- scripts/add3proxyuser.sh.in | 14 ++++++++++ scripts/init.d/3proxy.in | 2 +- scripts/init.d/3proxy.sh | 56 ------------------------------------- scripts/postinstall.sh | 9 ++++-- scripts/rc.d/3proxy | 27 ------------------ scripts/rc.d/3proxy.in | 6 ++-- scripts/rh/3proxy.spec | 25 +++++++++++------ 19 files changed, 185 insertions(+), 220 deletions(-) delete mode 100644 scripts/3proxy.cfg create mode 100644 scripts/3proxy.cfg.in delete mode 100644 scripts/3proxy.service delete mode 100644 scripts/3proxy.tmpfiles.in delete mode 100644 scripts/add3proxyuser.sh create mode 100644 scripts/add3proxyuser.sh.in delete mode 100644 scripts/init.d/3proxy.sh delete mode 100644 scripts/rc.d/3proxy diff --git a/CMakeLists.txt b/CMakeLists.txt index 193f147..39cd177 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -676,8 +676,25 @@ endif() # Install configuration files if(NOT WIN32) - install(FILES scripts/3proxy.cfg DESTINATION /etc/3proxy) - install(FILES scripts/add3proxyuser.sh DESTINATION ${CMAKE_INSTALL_BINDIR}) + set(CRYPT_PREFIX "${3PROXY_BINARY_PREFIX}") + set(3PROXY_CONFDIR "${CMAKE_INSTALL_FULL_SYSCONFDIR}/3proxy/conf") + set(3PROXY_COUNTERDIR "/opt/3proxy") + install(DIRECTORY DESTINATION /opt/3proxy) + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/scripts/3proxy.cfg.in + ${CMAKE_CURRENT_BINARY_DIR}/3proxy.cfg + @ONLY + ) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/3proxy.cfg DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/3proxy) + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/scripts/add3proxyuser.sh.in + ${CMAKE_CURRENT_BINARY_DIR}/add3proxyuser + @ONLY + ) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/add3proxyuser + DESTINATION ${CMAKE_INSTALL_BINDIR} + PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE + ) endif() # Install service files (systemd, launchd, init.d, or rc.d) @@ -736,16 +753,6 @@ if(NOT WIN32) DESTINATION ${SYSTEMD_UNIT_DIR} ) - # Install tmpfiles.d configuration for runtime directory - configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/scripts/3proxy.tmpfiles.in - ${CMAKE_CURRENT_BINARY_DIR}/3proxy.conf - @ONLY - ) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/3proxy.conf - DESTINATION /usr/lib/tmpfiles.d - ) - message(STATUS " systemd: YES (${SYSTEMD_UNIT_DIR})") else() # No systemd - install init.d script @@ -778,16 +785,14 @@ if(NOT WIN32) message(STATUS " init.d: YES (/etc/init.d)") endif() - # Create proxy user and group during installation - install(FILES scripts/postinstall.sh - DESTINATION ${CMAKE_INSTALL_BINDIR} - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE - ) + # Run postinstall only for direct installs (no DESTDIR) install(CODE " - execute_process( - COMMAND ${CMAKE_INSTALL_FULL_BINDIR}/postinstall.sh - RESULT_VARIABLE POSTINSTALL_RESULT - ) + if(\"\$ENV{DESTDIR}\" STREQUAL \"\") + execute_process( + COMMAND ${CMAKE_COMMAND} -E env sh ${CMAKE_CURRENT_SOURCE_DIR}/scripts/postinstall.sh ${CMAKE_INSTALL_PREFIX} + RESULT_VARIABLE POSTINSTALL_RESULT + ) + endif() ") endif() diff --git a/Makefile.FreeBSD b/Makefile.FreeBSD index e9c96cc..e37f28a 100644 --- a/Makefile.FreeBSD +++ b/Makefile.FreeBSD @@ -68,29 +68,39 @@ endif include Makefile.inc +DESTDIR ?= +prefix ?= /usr/local +BINPREFIX ?= $(prefix)/bin + install: all - if [ ! -d "/usr/local/3proxy/bin" ]; then mkdir -p /usr/local/3proxy/bin/; fi - install bin/3proxy /usr/local/3proxy/bin/3proxy - install bin/$(CRYPT_PREFIX)crypt /usr/local/3proxy/bin/$(CRYPT_PREFIX)crypt + if [ ! -d "$(DESTDIR)$(BINPREFIX)" ]; then mkdir -p $(DESTDIR)$(BINPREFIX)/; fi + install bin/3proxy $(DESTDIR)$(BINPREFIX)/3proxy + install bin/$(CRYPT_PREFIX)crypt $(DESTDIR)$(BINPREFIX)/$(CRYPT_PREFIX)crypt for f in proxy socks pop3p smtpp ftppr tcppm udppm tlspr; do \ - if [ -f bin/$(PREFIX)$$f ]; then install bin/$(PREFIX)$$f /usr/local/3proxy/bin/$(PREFIX)$$f; fi; \ + if [ -f bin/$(PREFIX)$$f ]; then install bin/$(PREFIX)$$f $(DESTDIR)$(BINPREFIX)/$(PREFIX)$$f; fi; \ done - install scripts/rc.d/3proxy /usr/local/etc/rc.d/3proxy - install scripts/add3proxyuser.sh /usr/local/3proxy/bin/ - if [ -s /usr/local/etc/3proxy/3proxy.cfg ]; then echo /usr/local/3proxy/3proxy.cfg already exists; else install scripts/3proxy.cfg /usr/local/etc/3proxy/; fi - if [ ! -d /var/log/3proxy/ ]; then mkdir /var/log/3proxy/; fi - touch /usr/local/3proxy/passwd - touch /usr/local/3proxy/counters - touch /usr/local/3proxy/bandlimiters - install -d $(MANDIR)/man8 - install -m 644 man/3proxy.8 $(MANDIR)/man8/3proxy.8 + install -d $(DESTDIR)$(prefix)/etc/rc.d/ + sed -e 's|@CMAKE_INSTALL_FULL_BINDIR@|$(BINPREFIX)|g' -e 's|@CMAKE_INSTALL_FULL_SYSCONFDIR@|$(prefix)/etc|g' scripts/rc.d/3proxy.in > $(DESTDIR)$(prefix)/etc/rc.d/3proxy + chmod 755 $(DESTDIR)$(prefix)/etc/rc.d/3proxy + sed -e 's|@CMAKE_INSTALL_FULL_BINDIR@|$(BINPREFIX)|g' -e 's|@3PROXY_CONFDIR@|$(prefix)/etc/3proxy/conf|g' -e 's|@CRYPT_PREFIX@|$(CRYPT_PREFIX)|g' scripts/add3proxyuser.sh.in > $(DESTDIR)$(BINPREFIX)/add3proxyuser + if [ -s $(DESTDIR)$(prefix)/etc/3proxy/3proxy.cfg ]; then echo $(prefix)/etc/3proxy/3proxy.cfg already exists; else sed -e 's|@CMAKE_INSTALL_FULL_SYSCONFDIR@|$(prefix)/etc|g' -e 's|@3PROXY_CONFDIR@|$(prefix)/etc/3proxy/conf|g' -e 's|@3PROXY_COUNTERDIR@|/opt/3proxy|g' scripts/3proxy.cfg.in > $(DESTDIR)$(prefix)/etc/3proxy/3proxy.cfg; chmod 640 $(DESTDIR)$(prefix)/etc/3proxy/3proxy.cfg; fi + if [ ! -d $(DESTDIR)/var/log/3proxy/ ]; then mkdir -p $(DESTDIR)/var/log/3proxy/; fi + mkdir -p $(DESTDIR)/opt/3proxy + touch $(DESTDIR)$(prefix)/3proxy/passwd + touch $(DESTDIR)$(prefix)/3proxy/counters + touch $(DESTDIR)$(prefix)/3proxy/bandlimiters + install -d $(DESTDIR)$(MANDIR)/man8 + install -m 644 man/3proxy.8 $(DESTDIR)$(MANDIR)/man8/3proxy.8 for f in proxy socks pop3p smtpp ftppr tcppm udppm tlspr; do \ - if [ -f man/$$f.8 ]; then install -m 644 man/$$f.8 $(MANDIR)/man8/$(PREFIX)$$f.8; fi; \ + if [ -f man/$$f.8 ]; then install -m 644 man/$$f.8 $(DESTDIR)$(MANDIR)/man8/$(PREFIX)$$f.8; fi; \ done - install -m 644 man/3proxy_crypt.8 $(MANDIR)/man8 - install -d $(MANDIR)/man5 - install -m 644 man/3proxy.cfg.5 $(MANDIR)/man5/3proxy.cfg.5 - echo Run /usr/local/3proxy/bin/add3proxyuser.sh to add \'admin\' user + install -m 644 man/3proxy_crypt.8 $(DESTDIR)$(MANDIR)/man8/$(CRYPT_PREFIX)crypt.8 + install -d $(DESTDIR)$(MANDIR)/man5 + install -m 644 man/3proxy.cfg.5 $(DESTDIR)$(MANDIR)/man5/3proxy.cfg.5 + @if [ "$(DESTDIR)" = "" ]; then \ + sh scripts/postinstall.sh $(prefix); \ + fi + echo Run $(BINPREFIX)/add3proxyuser to add \'admin\' user allplugins: @list='$(PLUGINS)'; for p in $$list; do cp Makefile Makefile.var plugins/$$p; cd plugins/$$p ; make ; cd ../.. ; done diff --git a/Makefile.Linux b/Makefile.Linux index 857ccb1..50ba426 100644 --- a/Makefile.Linux +++ b/Makefile.Linux @@ -74,13 +74,13 @@ include Makefile.inc allplugins: @list='$(PLUGINS)'; for p in $$list; do cp Makefile Makefile.var plugins/$$p; cd plugins/$$p ; make ; cd ../.. ; done -DESTDIR = -prefix = -exec_prefix = $(prefix) -man_prefix = /usr/share -chroot_prefix = /usr/local +DESTDIR ?= +prefix ?= +exec_prefix ?= $(prefix) +man_prefix ?= /usr/share +chroot_prefix ?= /usr/local -INSTALL = /usr/bin/install +INSTALL ?= /usr/bin/install INSTALL_BIN = $(INSTALL) -m 755 INSTALL_DATA = $(INSTALL) -m 644 INSTALL_OBJS = bin/3proxy \ @@ -97,12 +97,11 @@ INSTALL_OBJS = bin/3proxy \ INSTALL_CFG = scripts/3proxy.cfg.chroot INSTALL_CFG_INCHROOT = scripts/3proxy.cfg.inchroot -INSTALL_CFG_OBJS = scripts/add3proxyuser.sh INSTALL_CFG_OBJS2 = counters bandlimiters -INSTALL_INITD_SCRIPT = scripts/init.d/3proxy.sh -INSTALL_SYSTEMD_SCRIPT = scripts/3proxy.service +INSTALL_INITD_SCRIPT = scripts/init.d/3proxy.in +INSTALL_SYSTEMD_SCRIPT = scripts/3proxy.service.in CHROOTDIR = $(DESTDIR)$(chroot_prefix)/3proxy CHROOTREL = ../..$(chroot_prefix)/3proxy @@ -111,8 +110,6 @@ MANDIR8 = $(DESTDIR)$(man_prefix)/man/man8 BINDIR = $(DESTDIR)$(exec_prefix)/bin ETCDIR = $(DESTDIR)/etc/3proxy INITDDIR = $(DESTDIR)/etc/init.d -RUNBASE = $(DESTDIR)/var/run -RUNDIR = $(RUNBASE)/3proxy LOGBASE = $(DESTDIR)/var/log LOGDIR = $(LOGBASE)/3proxy INSTALL_CFG_DEST = $(ETCDIR)/conf @@ -122,6 +119,7 @@ install-bin: $(INSTALL_BIN) -d $(BINDIR) $(INSTALL_BIN) -s $(INSTALL_OBJS) $(BINDIR) $(INSTALL_BIN) -s bin/*.ld.so $(CHROOTDIR)/libexec + $(INSTALL_BIN) scripts/add3proxyuser.sh.in $(BINDIR)/add3proxyuser install-etc-dir: $(INSTALL_BIN) -d $(ETCDIR) @@ -132,13 +130,11 @@ install-chroot-dir: $(INSTALL_BIN) -d $(CHROOTDIR)/logs $(INSTALL_BIN) -d $(CHROOTDIR)/count $(INSTALL_BIN) -d $(CHROOTDIR)/libexec - chmod -R o-rwx $(CHROOTDIR) install-etc-default-config: install-chroot-dir if [ ! -d $(INSTALL_CFG_DEST) ]; then \ ln -s $(CHROOTREL)/conf $(INSTALL_CFG_DEST); \ $(INSTALL_BIN) $(INSTALL_CFG) $(ETCDIR)/3proxy.cfg; \ - $(INSTALL_BIN) $(INSTALL_CFG_OBJS) $(INSTALL_CFG_DEST); \ $(INSTALL_BIN) $(INSTALL_CFG_INCHROOT) $(INSTALL_CFG_DEST)/3proxy.cfg; \ fi @@ -156,16 +152,13 @@ install-man: for f in proxy socks pop3p smtpp ftppr tcppm udppm tlspr; do \ if [ -f man/$$f.8 ]; then $(INSTALL_DATA) man/$$f.8 $(MANDIR8)/$(PREFIX)$$f.8; fi; \ done - $(INSTALL_DATA) man/3proxy_crypt.8 $(MANDIR8) + $(INSTALL_DATA) man/3proxy_crypt.8 $(MANDIR8)/$(CRYPT_PREFIX)crypt.8 install-init: + $(INSTALL_BIN) -d $(SYSTEMDDIR) + sed -e 's|@CMAKE_INSTALL_FULL_BINDIR@|$(exec_prefix)/bin|g' -e 's|@CMAKE_INSTALL_FULL_SYSCONFDIR@|/etc|g' $(INSTALL_SYSTEMD_SCRIPT) > $(SYSTEMDDIR)/3proxy.service $(INSTALL_BIN) -d $(INITDDIR) $(INSTALL_BIN) $(INSTALL_INITD_SCRIPT) $(INITDDIR)/3proxy - $(INSTALL_BIN) -d $(SYSTEMDDIR) - $(INSTALL_DATA) $(INSTALL_SYSTEMD_SCRIPT) $(SYSTEMDDIR) - -install-run: - $(INSTALL_BIN) -d $(RUNDIR) install-log: $(INSTALL_BIN) -d $(LOGBASE) @@ -173,7 +166,7 @@ install-log: ln -s $(CHROOTREL)/logs $(LOGDIR);\ fi -install: install-chroot-dir install-bin install-etc install-log install-man install-run install-init +install: install-chroot-dir install-bin install-etc install-log install-man install-init @if [ "$(DESTDIR)" = "" ]; then \ sh debian/preinst; \ sh debian/postinst; \ diff --git a/Makefile.unix b/Makefile.unix index 9fae45f..50e4050 100644 --- a/Makefile.unix +++ b/Makefile.unix @@ -70,29 +70,39 @@ endif include Makefile.inc +DESTDIR ?= +prefix ?= /usr/local +BINPREFIX ?= $(prefix)/bin + install: all - if [ ! -d "/usr/local/3proxy/bin" ]; then mkdir -p /usr/local/3proxy/bin/; fi - install bin/3proxy /usr/local/3proxy/bin/3proxy - install bin/$(CRYPT_PREFIX)crypt /usr/local/3proxy/bin/$(CRYPT_PREFIX)crypt + if [ ! -d "$(DESTDIR)$(BINPREFIX)" ]; then mkdir -p $(DESTDIR)$(BINPREFIX)/; fi + install bin/3proxy $(DESTDIR)$(BINPREFIX)/3proxy + install bin/$(CRYPT_PREFIX)crypt $(DESTDIR)$(BINPREFIX)/$(CRYPT_PREFIX)crypt for f in proxy socks pop3p smtpp ftppr tcppm udppm tlspr; do \ - if [ -f bin/$(PREFIX)$$f ]; then install bin/$(PREFIX)$$f /usr/local/3proxy/bin/$(PREFIX)$$f; fi; \ + if [ -f bin/$(PREFIX)$$f ]; then install bin/$(PREFIX)$$f $(DESTDIR)$(BINPREFIX)/$(PREFIX)$$f; fi; \ done - install scripts/rc.d/3proxy /usr/local/etc/rc.d/3proxy - install scripts/add3proxyuser.sh /usr/local/3proxy/bin/ - if [ -s /usr/local/etc/3proxy/3proxy.cfg ]; then echo /usr/local/3proxy/3proxy.cfg already exists; else install scripts/3proxy.cfg /usr/local/etc/3proxy/; fi - if [ ! -d /var/log/3proxy/ ]; then mkdir /var/log/3proxy/; fi - touch /usr/local/3proxy/passwd - touch /usr/local/3proxy/counters - touch /usr/local/3proxy/bandlimiters - install -d $(MANDIR)/man8 - install -m 644 man/3proxy.8 $(MANDIR)/man8/3proxy.8 + install -d $(DESTDIR)$(prefix)/etc/rc.d/ + sed -e 's|@CMAKE_INSTALL_FULL_BINDIR@|$(BINPREFIX)|g' -e 's|@CMAKE_INSTALL_FULL_SYSCONFDIR@|$(prefix)/etc|g' scripts/rc.d/3proxy.in > $(DESTDIR)$(prefix)/etc/rc.d/3proxy + chmod 755 $(DESTDIR)$(prefix)/etc/rc.d/3proxy + sed -e 's|@CMAKE_INSTALL_FULL_BINDIR@|$(BINPREFIX)|g' -e 's|@3PROXY_CONFDIR@|$(prefix)/etc/3proxy/conf|g' -e 's|@CRYPT_PREFIX@|$(CRYPT_PREFIX)|g' scripts/add3proxyuser.sh.in > $(DESTDIR)$(BINPREFIX)/add3proxyuser + if [ -s $(DESTDIR)$(prefix)/etc/3proxy/3proxy.cfg ]; then echo $(prefix)/etc/3proxy/3proxy.cfg already exists; else sed -e 's|@CMAKE_INSTALL_FULL_SYSCONFDIR@|$(prefix)/etc|g' -e 's|@3PROXY_CONFDIR@|$(prefix)/etc/3proxy/conf|g' -e 's|@3PROXY_COUNTERDIR@|/opt/3proxy|g' scripts/3proxy.cfg.in > $(DESTDIR)$(prefix)/etc/3proxy/3proxy.cfg; chmod 640 $(DESTDIR)$(prefix)/etc/3proxy/3proxy.cfg; fi + if [ ! -d $(DESTDIR)/var/log/3proxy/ ]; then mkdir -p $(DESTDIR)/var/log/3proxy/; fi + mkdir -p $(DESTDIR)/opt/3proxy + touch $(DESTDIR)$(prefix)/3proxy/passwd + touch $(DESTDIR)$(prefix)/3proxy/counters + touch $(DESTDIR)$(prefix)/3proxy/bandlimiters + install -d $(DESTDIR)$(MANDIR)/man8 + install -m 644 man/3proxy.8 $(DESTDIR)$(MANDIR)/man8/3proxy.8 for f in proxy socks pop3p smtpp ftppr tcppm udppm tlspr; do \ - if [ -f man/$$f.8 ]; then install -m 644 man/$$f.8 $(MANDIR)/man8/$(PREFIX)$$f.8; fi; \ + if [ -f man/$$f.8 ]; then install -m 644 man/$$f.8 $(DESTDIR)$(MANDIR)/man8/$(PREFIX)$$f.8; fi; \ done - install -m 644 man/3proxy_crypt.8 $(MANDIR)/man8 - install -d $(MANDIR)/man5 - install -m 644 man/3proxy.cfg.5 $(MANDIR)/man5/3proxy.cfg.5 - echo Run /usr/local/3proxy/bin/add3proxyuser.sh to add \'admin\' user + install -m 644 man/3proxy_crypt.8 $(DESTDIR)$(MANDIR)/man8/$(CRYPT_PREFIX)crypt.8 + install -d $(DESTDIR)$(MANDIR)/man5 + install -m 644 man/3proxy.cfg.5 $(DESTDIR)$(MANDIR)/man5/3proxy.cfg.5 + @if [ "$(DESTDIR)" = "" ]; then \ + sh scripts/postinstall.sh $(prefix); \ + fi + echo Run $(BINPREFIX)/add3proxyuser to add \'admin\' user allplugins: @list='$(PLUGINS)'; for p in $$list; do cp Makefile Makefile.var plugins/$$p; cd plugins/$$p ; make ; cd ../.. ; done diff --git a/debian/postinst b/debian/postinst index f5a46a9..ee548aa 100644 --- a/debian/postinst +++ b/debian/postinst @@ -1,3 +1,17 @@ +sed -i -e 's|@CMAKE_INSTALL_FULL_BINDIR@|/bin|g' -e 's|@3PROXY_CONFDIR@|/etc/3proxy/conf|g' -e 's|@CRYPT_PREFIX@|3proxy_|g' /bin/add3proxyuser; \ +sed -i -e 's|@CMAKE_INSTALL_FULL_BINDIR@|/bin|g' -e 's|@CMAKE_INSTALL_FULL_SYSCONFDIR@|/etc|g' /etc/init.d/3proxy; \ +sed -i -e 's|@CMAKE_INSTALL_FULL_BINDIR@|/bin|g' -e 's|@CMAKE_INSTALL_FULL_SYSCONFDIR@|/etc|g' /usr/lib/systemd/system/3proxy.service; \ + +if [ -d /etc/3proxy ]; then \ + chmod -R o-rwx /etc/3proxy; \ + chown -R proxy:proxy /etc/3proxy; \ +fi + +if [ -d /usr/local/3proxy ]; then \ + chmod -R o-rwx /usr/local/3proxy; \ + chown -R proxy:proxy /usr/local/3proxy; \ +fi + if /bin/systemctl >/dev/null 2>&1; then \ /usr/sbin/update-rc.d 3proxy disable || true; \ /usr/sbin/chkconfig 3proxy off || true; \ diff --git a/scripts/3proxy.cfg b/scripts/3proxy.cfg deleted file mode 100644 index 660467b..0000000 --- a/scripts/3proxy.cfg +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/local/bin/3proxy - -#use standard syslog logging -log @3proxy diff --git a/scripts/3proxy.cfg.in b/scripts/3proxy.cfg.in new file mode 100644 index 0000000..01bb9d0 --- /dev/null +++ b/scripts/3proxy.cfg.in @@ -0,0 +1,31 @@ + +# use standard syslog logging +log @3proxy +#log /logs/3proxy-%y%m%d.log D +#rotate 60 + + +#nscache 65536 +#nserver 8.8.8.8 +#nserver 8.8.4.4 + +#config @CMAKE_INSTALL_FULL_SYSCONFDIR@/3proxy/3proxy.cfg +#monitor @CMAKE_INSTALL_FULL_SYSCONFDIR@/3proxy/3proxy.cfg +#monitor @3PROXY_CONFDIR@/passwd + +#counter @3PROXY_COUNTERDIR@/3proxy.3cf + +#users $@3PROXY_CONFDIR@/passwd + +#include @3PROXY_CONFDIR@/counters +#include @3PROXY_CONFDIR@/bandlimiters + +#auth strong +#deny * * 127.0.0.0/8 +#allow * +#proxy -n +#socks +#flush +#allow admin + +#admin -p8080 diff --git a/scripts/3proxy.cfg.inchroot b/scripts/3proxy.cfg.inchroot index 30b4024..5509d90 100644 --- a/scripts/3proxy.cfg.inchroot +++ b/scripts/3proxy.cfg.inchroot @@ -5,8 +5,10 @@ nserver 8.8.4.4 config /conf/3proxy.cfg monitor /conf/3proxy.cfg -log /logs/3proxy-%y%m%d.log D -rotate 60 +log @3proxy +#log /logs/3proxy-%y%m%d.log D +#rotate 60 + counter /count/3proxy.3cf users $/conf/passwd diff --git a/scripts/3proxy.service b/scripts/3proxy.service deleted file mode 100644 index cdb3af2..0000000 --- a/scripts/3proxy.service +++ /dev/null @@ -1,19 +0,0 @@ -[Unit] -Description=3proxy tiny proxy server -Documentation=man:3proxy(1) -After=network.target - -[Service] -Environment=CONFIGFILE=/etc/3proxy/3proxy.cfg -ExecStart=/bin/3proxy ${CONFIGFILE} -ExecReload=/bin/kill -SIGUSR1 $MAINPID -KillMode=process -Restart=on-failure -RestartSec=60s -LimitNOFILE=65536 -LimitNPROC=32768 -RuntimeDirectory=3proxy - -[Install] -WantedBy=multi-user.target -Alias=3proxy.service \ No newline at end of file diff --git a/scripts/3proxy.service.in b/scripts/3proxy.service.in index 917e088..3c84a15 100644 --- a/scripts/3proxy.service.in +++ b/scripts/3proxy.service.in @@ -7,7 +7,7 @@ After=network.target Type=simple User=proxy Group=proxy -Environment=CONFIGFILE=/etc/3proxy/3proxy.cfg +Environment=CONFIGFILE=@CMAKE_INSTALL_FULL_SYSCONFDIR@/3proxy/3proxy.cfg ExecStart=@CMAKE_INSTALL_FULL_BINDIR@/3proxy ${CONFIGFILE} ExecReload=/bin/kill -SIGUSR1 $MAINPID KillMode=process diff --git a/scripts/3proxy.tmpfiles.in b/scripts/3proxy.tmpfiles.in deleted file mode 100644 index a021fc3..0000000 --- a/scripts/3proxy.tmpfiles.in +++ /dev/null @@ -1,3 +0,0 @@ -# tmpfiles.d configuration for 3proxy -# This creates the runtime directory for 3proxy -d /run/3proxy 0755 proxy proxy - diff --git a/scripts/add3proxyuser.sh b/scripts/add3proxyuser.sh deleted file mode 100644 index 131873f..0000000 --- a/scripts/add3proxyuser.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -if [ $4 ]; then - echo bandlimin $4 $1 >> /etc/3proxy/conf/bandlimiters -fi -if [ $3 ]; then - echo countin \"`wc -l /etc/3proxy/conf/counters|awk '{print $1}'`/$1\" D $3 $1 >> /etc/3proxy/conf/counters -fi -if [ $2 ]; then - echo $1:`/bin/3proxy_crypt $$ $2` >> /etc/3proxy/conf/passwd -else - echo usage: $0 username password [day_limit] [bandwidth] - echo " "day_limit - traffic limit in MB per day - echo " "bandwidth - bandwidth in bits per second 1048576 = 1Mbps -fi - diff --git a/scripts/add3proxyuser.sh.in b/scripts/add3proxyuser.sh.in new file mode 100644 index 0000000..db73c05 --- /dev/null +++ b/scripts/add3proxyuser.sh.in @@ -0,0 +1,14 @@ +#!/bin/sh +if [ $4 ]; then + echo bandlimin $4 $1 >> @3PROXY_CONFDIR@/bandlimiters +fi +if [ $3 ]; then + echo countall \"`wc -l @3PROXY_CONFDIR@/counters|awk '{print $1}'`/$1\" D $3 $1 >> @3PROXY_CONFDIR@/counters +fi +if [ $2 ]; then + echo $1:`@CMAKE_INSTALL_FULL_BINDIR@/@CRYPT_PREFIX@crypt $$ $2` >> @3PROXY_CONFDIR@/passwd +else + echo usage: $0 username password [day_limit] [bandwidth] + echo " "day_limit - traffic limit in MB per day + echo " "bandwidth - bandwidth in bits per second 1048576 = 1Mbps +fi diff --git a/scripts/init.d/3proxy.in b/scripts/init.d/3proxy.in index 494ec08..efaa027 100644 --- a/scripts/init.d/3proxy.in +++ b/scripts/init.d/3proxy.in @@ -14,7 +14,7 @@ # description: 3proxy tiny proxy server DAEMON=@CMAKE_INSTALL_FULL_BINDIR@/3proxy -CONFIGFILE=/etc/3proxy/3proxy.cfg +CONFIGFILE=@CMAKE_INSTALL_FULL_SYSCONFDIR@/3proxy/3proxy.cfg PIDFILE=/var/run/3proxy/3proxy.pid USER=proxy GROUP=proxy diff --git a/scripts/init.d/3proxy.sh b/scripts/init.d/3proxy.sh deleted file mode 100644 index e549cbd..0000000 --- a/scripts/init.d/3proxy.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/sh -### BEGIN INIT INFO -# Provides: 3proxy -# Required-Start: -# Required-Stop: -# Should-Start: -# Should-Stop: -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: Start/stop 3proxy -# Description: Start/stop 3proxy, tiny proxy server -### END INIT INFO -# chkconfig: 2345 20 80 -# description: 3proxy tiny proxy server - -case "$1" in - start) - echo Starting 3Proxy - - /bin/mkdir -p /var/run/3proxy - /bin/3proxy /etc/3proxy/3proxy.cfg & - - RETVAL=$? - echo - [ $RETVAL ] - ;; - - stop) - echo Stopping 3Proxy - if [ -f /var/run/3proxy/3proxy.pid ]; then - /bin/kill `cat /var/run/3proxy/3proxy.pid` - else - /usr/bin/killall 3proxy - fi - - RETVAL=$? - echo - [ $RETVAL ] - ;; - - restart|reload) - echo Reloading 3Proxy - if [ -f /var/run/3proxy/3proxy.pid ]; then - /bin/kill -s USR1 `cat /var/run/3proxy/3proxy.pid` - else - /usr/bin/killall -s USR1 3proxy - fi - ;; - - - *) - echo Usage: $0 "{start|stop|restart}" - exit 1 -esac -exit 0 - diff --git a/scripts/postinstall.sh b/scripts/postinstall.sh index 3fbd223..b21f55b 100644 --- a/scripts/postinstall.sh +++ b/scripts/postinstall.sh @@ -4,11 +4,12 @@ set -e +PREFIX="${1-/usr/local}" + # Check if user already exists if id proxy >/dev/null 2>&1; then echo "User 'proxy' already exists" - exit 0 -fi +else echo "Creating proxy user and group..." @@ -33,7 +34,6 @@ elif command -v dscl >/dev/null 2>&1; then dscl . create /Users/proxy NFSHomeDirectory /var/run/3proxy 2>/dev/null || true else echo "Warning: Could not create proxy user - no suitable user management tool found" - exit 0 fi if id proxy >/dev/null 2>&1; then @@ -42,4 +42,7 @@ else echo "Warning: Failed to create user 'proxy'" fi +fi + +chown -R proxy:proxy ${PREFIX}/etc/3proxy/ exit 0 diff --git a/scripts/rc.d/3proxy b/scripts/rc.d/3proxy deleted file mode 100644 index f293671..0000000 --- a/scripts/rc.d/3proxy +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh - -# PROVIDE: 3proxy -# REQUIRE: LOGIN DAEMON -# KEYWORD: shutdown - -. /etc/rc.subr - -name="3proxy" -rcvar="3proxy_enable" - -command="/usr/local/3proxy/bin/3proxy" -pidfile="/var/run/3proxy/${name}.pid" -command_args="${3proxy_config:-/usr/local/etc/3proxy/3proxy.cfg}" -required_files="${3proxy_config:-/usr/local/etc/3proxy/3proxy.cfg}" - -start_precmd="3proxy_precmd" - -3proxy_precmd() -{ - if [ ! -d /var/run/3proxy ]; then - mkdir -p /var/run/3proxy - fi -} - -load_rc_config $name -run_rc_command "$1" diff --git a/scripts/rc.d/3proxy.in b/scripts/rc.d/3proxy.in index 7d77e0f..ab7c38e 100644 --- a/scripts/rc.d/3proxy.in +++ b/scripts/rc.d/3proxy.in @@ -1,7 +1,7 @@ #!/bin/sh # PROVIDE: 3proxy -# REQUIRE: LOGIN DAEMON +# REQUIRE: LOGIN DAEMON NETWORKING # KEYWORD: shutdown . /etc/rc.subr @@ -11,8 +11,8 @@ rcvar="3proxy_enable" command="@CMAKE_INSTALL_FULL_BINDIR@/3proxy" pidfile="/var/run/3proxy/${name}.pid" -command_args="${3proxy_config:-/etc/3proxy/3proxy.cfg}" -required_files="${3proxy_config:-/etc/3proxy/3proxy.cfg}" +command_args="${3proxy_config:-@CMAKE_INSTALL_FULL_SYSCONFDIR@/3proxy/3proxy.cfg}" +required_files="${3proxy_config:-@CMAKE_INSTALL_FULL_SYSCONFDIR@/3proxy/3proxy.cfg}" command_user="proxy:proxy" start_precmd="3proxy_precmd" diff --git a/scripts/rh/3proxy.spec b/scripts/rh/3proxy.spec index aacca79..7de3173 100644 --- a/scripts/rh/3proxy.spec +++ b/scripts/rh/3proxy.spec @@ -41,12 +41,12 @@ make clean /bin/3proxy_tcppm /bin/3proxy_tlspr /bin/3proxy_udppm +/bin/add3proxyuser %config(noreplace) /etc/3proxy/3proxy.cfg /etc/3proxy/conf /etc/init.d/3proxy /usr/lib/systemd/system/3proxy.service %config(noreplace) /usr/local/3proxy/conf/3proxy.cfg -%config(noreplace) /usr/local/3proxy/conf/add3proxyuser.sh %config(noreplace) /usr/local/3proxy/conf/bandlimiters %config(noreplace) /usr/local/3proxy/conf/counters /usr/local/3proxy/libexec/*.ld.so @@ -66,10 +66,17 @@ fi if [ ! -f /usr/local/3proxy/conf/passwd ]; then \ touch /usr/local/3proxy/conf/passwd;\ fi -chown -R proxy:proxy /usr/local/3proxy -chmod 550 /usr/local/3proxy/ -chmod 550 /usr/local/3proxy/conf/ -chmod 440 /usr/local/3proxy/conf/* +sed -i -e 's|@CMAKE_INSTALL_FULL_BINDIR@|/bin|g' -e 's|@3PROXY_CONFDIR@|/etc/3proxy/conf|g' -e 's|@CRYPT_PREFIX@|3proxy_|g' /bin/add3proxyuser; \ +sed -i -e 's|@CMAKE_INSTALL_FULL_BINDIR@|/bin|g' -e 's|@CMAKE_INSTALL_FULL_SYSCONFDIR@|/etc|g' /etc/init.d/3proxy; \ +sed -i -e 's|@CMAKE_INSTALL_FULL_BINDIR@|/bin|g' -e 's|@CMAKE_INSTALL_FULL_SYSCONFDIR@|/etc|g' /usr/lib/systemd/system/3proxy.service; \ +if [ -d /etc/3proxy ]; then \ + chown -R proxy:proxy /etc/3proxy; \ + chmod -R o-rwx /etc/3proxy; \ +fi +if [ -d /usr/local/3proxy ]; then \ + chown -R proxy:proxy /usr/local/3proxy; \ + chmod -R o-rwx /usr/local/3proxy; \ +fi if /bin/systemctl >/dev/null 2>&1; then \ /usr/sbin/update-rc.d 3proxy disable || true; \ /usr/sbin/chkconfig 3proxy off || true; \ @@ -84,8 +91,8 @@ fi echo "" echo 3proxy installed. if /bin/systemctl >/dev/null 2>&1; then \ - /bin/systemctl stop 3proxy.service \ - /bin/systemctl start 3proxy.service \ + /bin/systemctl stop 3proxy.service ; \ + /bin/systemctl start 3proxy.service ; \ echo use ;\ echo " "systemctl start 3proxy.service ;\ echo to start proxy ;\ @@ -99,10 +106,10 @@ elif [ -x /usr/sbin/service ]; then \ echo " "service 3proxy stop ;\ echo to stop proxy ;\ fi -echo " "/usr/local/3proxy/conf/add3proxyuser.sh +echo " "/bin/add3proxyuser echo to add users echo "" echo Default config uses Google\'s DNS. echo It\'s recommended to use provider supplied DNS or install local recursor, e.g. pdns-recursor. echo Configure preferred DNS in /usr/local/3proxy/conf/3proxy.cfg. -echo run \'/usr/local/3proxy/conf/add3proxyuser.sh admin password\' to configure \'admin\' user +echo run \'/bin/add3proxyuser admin password\' to configure \'admin\' user