From 30aaccc155555b8c6d7f7a02f2fb96adb1398854 Mon Sep 17 00:00:00 2001
From: Vladimir Dubrovin <3proxy@3proxy.ru>
Date: Wed, 27 May 2026 21:23:29 +0300
Subject: [PATCH 1/4] Fix build for Windows
---
.github/workflows/build-watcom.yml | 13 ++++++++++++-
.github/workflows/build-win32.yml | 13 ++++++++++++-
.github/workflows/build-win64.yml | 14 ++++++++++++--
.github/workflows/build-winarm64.yml | 13 ++++++++++++-
Makefile.Solaris | 2 ++
Makefile.msvc | 2 ++
Makefile.watcom | 2 ++
Makefile.win | 2 ++
8 files changed, 56 insertions(+), 5 deletions(-)
diff --git a/.github/workflows/build-watcom.yml b/.github/workflows/build-watcom.yml
index 2db9af6..dd395f6 100644
--- a/.github/workflows/build-watcom.yml
+++ b/.github/workflows/build-watcom.yml
@@ -31,6 +31,17 @@ jobs:
run: |
echo "volatile char VerSion[]=^"3APA3A-3proxy-Internal-Build: 3proxy-%RELEASE%-%NOW%\r\nCode certificate: https://3proxy.org/3proxy.cer\r\n^";" >>src/3proxy.c
nmake /F Makefile.watcom
+ - name: Decode Certificate
+ shell: pwsh
+ run: |
+ $pfx_cert_byte = [System.Convert]::FromBase64String("${{ secrets.WINDOWS_CERTIFICATE }}")
+ [System.IO.File]::WriteAllBytes("${{ github.workspace }}\cert.pfx", $pfx_cert_byte)
+ - name: Sign
+ shell: pwsh
+ run: |
+ $signtool = (Get-ChildItem "C:\Program Files (x86)\Windows Kits\10\bin\*\x64\signtool.exe" | Sort-Object { [version]$_.Directory.Parent.Name } -Descending | Select-Object -First 1).FullName
+ & $signtool sign /f "${{ github.workspace }}\cert.pfx" /p "${{ secrets.WINDOWS_CERTIFICATE_PASSWORD }}" /tr http://timestamp.digicert.com /td sha256 /fd sha256 "bin\3proxy.exe"
+ & $signtool sign /f "${{ github.workspace }}\cert.pfx" /p "${{ secrets.WINDOWS_CERTIFICATE_PASSWORD }}" /tr http://timestamp.digicert.com /td sha256 /fd sha256 "bin\3proxy_crypt.exe"
- name: make dist dir
shell: cmd
run: |
@@ -48,7 +59,7 @@ jobs:
mkdir dist\3proxy\doc\devel
copy bin\3proxy.exe dist\3proxy\bin\
copy bin\*.dll dist\3proxy\bin\
- copy bin\mycrypt.exe dist\3proxy\bin\
+ copy bin\3proxy_crypt.exe dist\3proxy\bin\
copy cfg\*.* dist\3proxy\cfg\
copy cfg\sql\*.* dist\3proxy\cfg\sql\
copy doc\ru\*.* dist\3proxy\doc\ru\
diff --git a/.github/workflows/build-win32.yml b/.github/workflows/build-win32.yml
index 5c4e176..3fe6a7f 100644
--- a/.github/workflows/build-win32.yml
+++ b/.github/workflows/build-win32.yml
@@ -37,6 +37,17 @@ jobs:
set "INCLUDE=%INCLUDE%;c:/vcpkg/installed/x86-windows-static/include"
echo "volatile char VerSion[]=^"3APA3A-3proxy-Internal-Build: 3proxy-%RELEASE%-%NOW%\r\nCode certificate: https://3proxy.org/3proxy.cer\r\n^";" >>src/3proxy.c
nmake /F Makefile.msvc
+ - name: Decode Certificate
+ shell: pwsh
+ run: |
+ $pfx_cert_byte = [System.Convert]::FromBase64String("${{ secrets.WINDOWS_CERTIFICATE }}")
+ [System.IO.File]::WriteAllBytes("${{ github.workspace }}\cert.pfx", $pfx_cert_byte)
+ - name: Sign
+ shell: pwsh
+ run: |
+ $signtool = (Get-ChildItem "C:\Program Files (x86)\Windows Kits\10\bin\*\x64\signtool.exe" | Sort-Object { [version]$_.Directory.Parent.Name } -Descending | Select-Object -First 1).FullName
+ & $signtool sign /f "${{ github.workspace }}\cert.pfx" /p "${{ secrets.WINDOWS_CERTIFICATE_PASSWORD }}" /tr http://timestamp.digicert.com /td sha256 /fd sha256 "bin\3proxy.exe"
+ & $signtool sign /f "${{ github.workspace }}\cert.pfx" /p "${{ secrets.WINDOWS_CERTIFICATE_PASSWORD }}" /tr http://timestamp.digicert.com /td sha256 /fd sha256 "bin\3proxy_crypt.exe"
- name: make dist dir
shell: cmd
run: |
@@ -54,7 +65,7 @@ jobs:
mkdir dist\3proxy\doc\devel
copy bin\3proxy.exe dist\3proxy\bin\
copy bin\*.dll dist\3proxy\bin\
- copy bin\mycrypt.exe dist\3proxy\bin\
+ copy bin\3proxy_crypt.exe dist\3proxy\bin\
copy cfg\*.* dist\3proxy\cfg\
copy cfg\sql\*.* dist\3proxy\cfg\sql\
copy doc\ru\*.* dist\3proxy\doc\ru\
diff --git a/.github/workflows/build-win64.yml b/.github/workflows/build-win64.yml
index 2ba2669..d9aca65 100644
--- a/.github/workflows/build-win64.yml
+++ b/.github/workflows/build-win64.yml
@@ -28,7 +28,6 @@ jobs:
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v3
- name: make Windows MSVC
- if: ${{ startsWith(matrix.target, 'windows') }}
shell: cmd
run: |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
@@ -39,6 +38,17 @@ jobs:
echo "volatile char VerSion[]=^"3APA3A-3proxy-Internal-Build: 3proxy-%RELEASE%-%NOW%\r\nCode certificate: https://3proxy.org/3proxy.cer\r\n^";" >>src/3proxy.c
echo %NOW% / %RELEASE% / %BUILDDATE% / %VERSION%
nmake /F Makefile.msvc
+ - name: Decode Certificate
+ shell: pwsh
+ run: |
+ $pfx_cert_byte = [System.Convert]::FromBase64String("${{ secrets.WINDOWS_CERTIFICATE }}")
+ [System.IO.File]::WriteAllBytes("${{ github.workspace }}\cert.pfx", $pfx_cert_byte)
+ - name: Sign
+ shell: pwsh
+ run: |
+ $signtool = (Get-ChildItem "C:\Program Files (x86)\Windows Kits\10\bin\*\x64\signtool.exe" | Sort-Object { [version]$_.Directory.Parent.Name } -Descending | Select-Object -First 1).FullName
+ & $signtool sign /f "${{ github.workspace }}\cert.pfx" /p "${{ secrets.WINDOWS_CERTIFICATE_PASSWORD }}" /tr http://timestamp.digicert.com /td sha256 /fd sha256 "bin\3proxy.exe"
+ & $signtool sign /f "${{ github.workspace }}\cert.pfx" /p "${{ secrets.WINDOWS_CERTIFICATE_PASSWORD }}" /tr http://timestamp.digicert.com /td sha256 /fd sha256 "bin\3proxy_crypt.exe"
- name: make dist dir
shell: cmd
run: |
@@ -56,7 +66,7 @@ jobs:
mkdir dist\3proxy\doc\devel
copy bin\3proxy.exe dist\3proxy\bin64\
copy bin\*.dll dist\3proxy\bin64\
- copy bin\mycrypt.exe dist\3proxy\bin64\
+ copy bin\3proxy_crypt.exe dist\3proxy\bin64\
copy cfg\*.* dist\3proxy\cfg\
copy cfg\sql\*.* dist\3proxy\cfg\sql\
copy doc\ru\*.* dist\3proxy\doc\ru\
diff --git a/.github/workflows/build-winarm64.yml b/.github/workflows/build-winarm64.yml
index 3ebcb06..83680b5 100644
--- a/.github/workflows/build-winarm64.yml
+++ b/.github/workflows/build-winarm64.yml
@@ -37,6 +37,17 @@ jobs:
set "INCLUDE=%INCLUDE%;c:/vcpkg/installed/arm64-windows-static/include"
echo "volatile char VerSion[]=^"3APA3A-3proxy-Internal-Build: 3proxy-%RELEASE%-%NOW%\r\nCode certificate: https://3proxy.org/3proxy.cer\r\n^";" >>src/3proxy.c
nmake /F Makefile.msvc
+ - name: Decode Certificate
+ shell: pwsh
+ run: |
+ $pfx_cert_byte = [System.Convert]::FromBase64String("${{ secrets.WINDOWS_CERTIFICATE }}")
+ [System.IO.File]::WriteAllBytes("${{ github.workspace }}\cert.pfx", $pfx_cert_byte)
+ - name: Sign
+ shell: pwsh
+ run: |
+ $signtool = (Get-ChildItem "C:\Program Files (x86)\Windows Kits\10\bin\*\x64\signtool.exe" | Sort-Object { [version]$_.Directory.Parent.Name } -Descending | Select-Object -First 1).FullName
+ & $signtool sign /f "${{ github.workspace }}\cert.pfx" /p "${{ secrets.WINDOWS_CERTIFICATE_PASSWORD }}" /tr http://timestamp.digicert.com /td sha256 /fd sha256 "bin\3proxy.exe"
+ & $signtool sign /f "${{ github.workspace }}\cert.pfx" /p "${{ secrets.WINDOWS_CERTIFICATE_PASSWORD }}" /tr http://timestamp.digicert.com /td sha256 /fd sha256 "bin\3proxy_crypt.exe"
- name: make dist dir
shell: cmd
run: |
@@ -54,7 +65,7 @@ jobs:
mkdir dist\3proxy\doc\devel
copy bin\3proxy.exe dist\3proxy\bin64\
copy bin\*.dll dist\3proxy\bin64\
- copy bin\mycrypt.exe dist\3proxy\bin64\
+ copy bin\3proxy_crypt.exe dist\3proxy\bin64\
copy cfg\*.* dist\3proxy\cfg\
copy cfg\sql\*.* dist\3proxy\cfg\sql\
copy doc\ru\*.* dist\3proxy\doc\ru\
diff --git a/Makefile.Solaris b/Makefile.Solaris
index 1b73953..bbb611b 100644
--- a/Makefile.Solaris
+++ b/Makefile.Solaris
@@ -6,6 +6,8 @@
# library support. Add -DSAFESQL for poorely written ODBC library / drivers.
BUILDDIR = ../bin/
+PREFIX ?= 3proxy_
+CRYPT_PREFIX ?= $(PREFIX)
CC ?= cc
CFLAGS = -xO3 -c -D_SOLARIS -D_THREAD_SAFE -DGETHOSTBYNAME_R -D_REENTRANT -DFD_SETSIZE=4096 -DWITH_POLL
COUT = -o ./
diff --git a/Makefile.msvc b/Makefile.msvc
index aad015b..f88d3e6 100644
--- a/Makefile.msvc
+++ b/Makefile.msvc
@@ -6,6 +6,8 @@
# Add /DSAFESQL to CFLAGS if you are using poorely written/tested ODBC driver
BUILDDIR = ../bin/
+PREFIX = 3proxy_
+CRYPT_PREFIX = 3proxy_
CC = cl
VERSION = $(VERSION)
BUILDDATE = $(BUILDDATE)
diff --git a/Makefile.watcom b/Makefile.watcom
index f9b199c..1ea8141 100644
--- a/Makefile.watcom
+++ b/Makefile.watcom
@@ -5,6 +5,8 @@
# Add /DSAFESQL to CFLAGS if you are using poorely written/tested ODBC driver
BUILDDIR = ../bin/
+PREFIX = 3proxy_
+CRYPT_PREFIX = 3proxy_
CC = cl
CFLAGS = /nologo /Ox /MT /D "NOIPV6" /D "NODEBUG" /D "NORADIUS" /D"WATCOM" /D "MSVC" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /D "PRId64=\"I64d\"" /D "PRIu64=\"I64u\"" /D "SCNu64=\"I64u\"" /D "SCNx64=\"I64x\"" /D "SCNd64=\"I64d\"" /D "PRIx64=\"I64x\"" /c $(VERSION) $(BUILDDATE)
COUT = /Fo
diff --git a/Makefile.win b/Makefile.win
index c2d4414..c603ac8 100644
--- a/Makefile.win
+++ b/Makefile.win
@@ -6,6 +6,8 @@
BUILDDIR = ../bin/
+PREFIX ?= 3proxy_
+CRYPT_PREFIX ?= $(PREFIX)
CC ?= gcc
CFLAGS ?= -O3 -flto
CFLAGS += -fno-strict-aliasing -c -mthreads -DWITH_WSAPOLL -DWITH_ODBC
From 01dad546b78dc696897aad934871bc3927cea494 Mon Sep 17 00:00:00 2001
From: Vladimir Dubrovin <3proxy@3proxy.ru>
Date: Wed, 27 May 2026 21:38:02 +0300
Subject: [PATCH 2/4] Fix filenames in builds
---
.github/workflows/build-watcom.yml | 6 +++---
.github/workflows/build-win32.yml | 6 +++---
.github/workflows/build-win64.yml | 6 +++---
.github/workflows/build-winarm64.yml | 6 +++---
4 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/.github/workflows/build-watcom.yml b/.github/workflows/build-watcom.yml
index dd395f6..1e472a2 100644
--- a/.github/workflows/build-watcom.yml
+++ b/.github/workflows/build-watcom.yml
@@ -56,7 +56,7 @@ jobs:
mkdir dist\3proxy\doc\html\plugins
mkdir dist\3proxy\doc\html\man5
mkdir dist\3proxy\doc\html\man8
- mkdir dist\3proxy\doc\devel
+ mkdir dist\3proxy\doc\html\devel
copy bin\3proxy.exe dist\3proxy\bin\
copy bin\*.dll dist\3proxy\bin\
copy bin\3proxy_crypt.exe dist\3proxy\bin\
@@ -67,10 +67,10 @@ jobs:
copy doc\html\plugins\*.* dist\3proxy\doc\html\plugins\
copy doc\html\man8\*.* dist\3proxy\doc\html\man8\
copy doc\html\man5\*.* dist\3proxy\doc\html\man5\
- copy doc\devel\*.rtf dist\3proxy\doc\devel\
+ copy doc\html\devel\*.* dist\3proxy\doc\html\devel\
copy copying dist\3proxy\
copy authors dist\3proxy\
- copy README dist\3proxy\
+ copy README.md dist\3proxy\
copy rus.3ps dist\3proxy\
- name: Get artifact
uses: actions/upload-artifact@v6
diff --git a/.github/workflows/build-win32.yml b/.github/workflows/build-win32.yml
index 3fe6a7f..367595d 100644
--- a/.github/workflows/build-win32.yml
+++ b/.github/workflows/build-win32.yml
@@ -62,7 +62,7 @@ jobs:
mkdir dist\3proxy\doc\html\plugins
mkdir dist\3proxy\doc\html\man5
mkdir dist\3proxy\doc\html\man8
- mkdir dist\3proxy\doc\devel
+ mkdir dist\3proxy\doc\html\devel
copy bin\3proxy.exe dist\3proxy\bin\
copy bin\*.dll dist\3proxy\bin\
copy bin\3proxy_crypt.exe dist\3proxy\bin\
@@ -73,10 +73,10 @@ jobs:
copy doc\html\plugins\*.* dist\3proxy\doc\html\plugins\
copy doc\html\man8\*.* dist\3proxy\doc\html\man8\
copy doc\html\man5\*.* dist\3proxy\doc\html\man5\
- copy doc\devel\*.rtf dist\3proxy\doc\devel\
+ copy doc\html\devel\*.* dist\3proxy\doc\html\devel\
copy copying dist\3proxy\
copy authors dist\3proxy\
- copy README dist\3proxy\
+ copy README.md dist\3proxy\
copy rus.3ps dist\3proxy\
- name: Get artifact
uses: actions/upload-artifact@v6
diff --git a/.github/workflows/build-win64.yml b/.github/workflows/build-win64.yml
index d9aca65..055c57d 100644
--- a/.github/workflows/build-win64.yml
+++ b/.github/workflows/build-win64.yml
@@ -63,7 +63,7 @@ jobs:
mkdir dist\3proxy\doc\html\plugins
mkdir dist\3proxy\doc\html\man5
mkdir dist\3proxy\doc\html\man8
- mkdir dist\3proxy\doc\devel
+ mkdir dist\3proxy\doc\html\devel
copy bin\3proxy.exe dist\3proxy\bin64\
copy bin\*.dll dist\3proxy\bin64\
copy bin\3proxy_crypt.exe dist\3proxy\bin64\
@@ -74,10 +74,10 @@ jobs:
copy doc\html\plugins\*.* dist\3proxy\doc\html\plugins\
copy doc\html\man8\*.* dist\3proxy\doc\html\man8\
copy doc\html\man5\*.* dist\3proxy\doc\html\man5\
- copy doc\devel\*.rtf dist\3proxy\doc\devel\
+ copy doc\html\devel\*.rtf dist\3proxy\doc\html\devel\
copy copying dist\3proxy\
copy authors dist\3proxy\
- copy README dist\3proxy\
+ copy README.md dist\3proxy\
copy rus.3ps dist\3proxy\
- name: Get artifact
uses: actions/upload-artifact@v6
diff --git a/.github/workflows/build-winarm64.yml b/.github/workflows/build-winarm64.yml
index 83680b5..4c8dd7c 100644
--- a/.github/workflows/build-winarm64.yml
+++ b/.github/workflows/build-winarm64.yml
@@ -62,7 +62,7 @@ jobs:
mkdir dist\3proxy\doc\html\plugins
mkdir dist\3proxy\doc\html\man5
mkdir dist\3proxy\doc\html\man8
- mkdir dist\3proxy\doc\devel
+ mkdir dist\3proxy\doc\html\devel
copy bin\3proxy.exe dist\3proxy\bin64\
copy bin\*.dll dist\3proxy\bin64\
copy bin\3proxy_crypt.exe dist\3proxy\bin64\
@@ -73,10 +73,10 @@ jobs:
copy doc\html\plugins\*.* dist\3proxy\doc\html\plugins\
copy doc\html\man8\*.* dist\3proxy\doc\html\man8\
copy doc\html\man5\*.* dist\3proxy\doc\html\man5\
- copy doc\devel\*.rtf dist\3proxy\doc\devel\
+ copy doc\html\devel\*.rtf dist\3proxy\doc\html\devel\
copy copying dist\3proxy\
copy authors dist\3proxy\
- copy README dist\3proxy\
+ copy README.md dist\3proxy\
copy rus.3ps dist\3proxy\
- name: Get artifact
uses: actions/upload-artifact@v6
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 3/4] 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
From 1772295a362b3c24fbe6a19c52b224f5e42a779f Mon Sep 17 00:00:00 2001
From: Vladimir Dubrovin <3proxy@3proxy.ru>
Date: Fri, 29 May 2026 21:11:32 +0300
Subject: [PATCH 4/4] Fix installation
---
Makefile.FreeBSD | 8 +++++---
Makefile.unix | 8 +++++---
debian/postinst | 6 +++---
scripts/3proxy.cfg.in | 2 ++
scripts/org.3proxy.3proxy.plist.in | 2 +-
scripts/postinstall.sh | 7 ++++++-
scripts/rh/3proxy.spec | 6 +++---
7 files changed, 25 insertions(+), 14 deletions(-)
diff --git a/Makefile.FreeBSD b/Makefile.FreeBSD
index e37f28a..6f61c9e 100644
--- a/Makefile.FreeBSD
+++ b/Makefile.FreeBSD
@@ -79,16 +79,18 @@ install: all
for f in proxy socks pop3p smtpp ftppr tcppm udppm tlspr; do \
if [ -f bin/$(PREFIX)$$f ]; then install bin/$(PREFIX)$$f $(DESTDIR)$(BINPREFIX)/$(PREFIX)$$f; fi; \
done
+ install -d $(DESTDIR)$(prefix)/etc/3proxy/conf
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
+ chmod 755 $(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
+ touch $(DESTDIR)$(prefix)/etc/3proxy/conf/passwd
+ touch $(DESTDIR)$(prefix)/etc/3proxy/conf/counters
+ touch $(DESTDIR)$(prefix)/etc/3proxy/conf/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 \
diff --git a/Makefile.unix b/Makefile.unix
index 50e4050..937c031 100644
--- a/Makefile.unix
+++ b/Makefile.unix
@@ -81,16 +81,18 @@ install: all
for f in proxy socks pop3p smtpp ftppr tcppm udppm tlspr; do \
if [ -f bin/$(PREFIX)$$f ]; then install bin/$(PREFIX)$$f $(DESTDIR)$(BINPREFIX)/$(PREFIX)$$f; fi; \
done
+ install -d $(DESTDIR)$(prefix)/etc/3proxy/conf
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
+ chmod 755 $(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
+ touch $(DESTDIR)$(prefix)/etc/3proxy/conf/passwd
+ touch $(DESTDIR)$(prefix)/etc/3proxy/conf/counters
+ touch $(DESTDIR)$(prefix)/etc/3proxy/conf/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 \
diff --git a/debian/postinst b/debian/postinst
index ee548aa..a2218c0 100644
--- a/debian/postinst
+++ b/debian/postinst
@@ -1,6 +1,6 @@
-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; \
+[ -f /bin/add3proxyuser ] && 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; \
+[ -f /etc/init.d/3proxy ] && sed -i -e 's|@CMAKE_INSTALL_FULL_BINDIR@|/bin|g' -e 's|@CMAKE_INSTALL_FULL_SYSCONFDIR@|/etc|g' /etc/init.d/3proxy; \
+[ -f /usr/lib/systemd/system/3proxy.service ] && 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; \
diff --git a/scripts/3proxy.cfg.in b/scripts/3proxy.cfg.in
index 01bb9d0..061a7b1 100644
--- a/scripts/3proxy.cfg.in
+++ b/scripts/3proxy.cfg.in
@@ -1,6 +1,8 @@
+#!@CMAKE_INSTALL_FULL_BINDIR@/3proxy
# use standard syslog logging
log @3proxy
+pidfile /var/run/3proxy/3proxy.pid
#log /logs/3proxy-%y%m%d.log D
#rotate 60
diff --git a/scripts/org.3proxy.3proxy.plist.in b/scripts/org.3proxy.3proxy.plist.in
index 1e53129..b96cc9f 100644
--- a/scripts/org.3proxy.3proxy.plist.in
+++ b/scripts/org.3proxy.3proxy.plist.in
@@ -7,7 +7,7 @@
ProgramArguments
@CMAKE_INSTALL_FULL_BINDIR@/3proxy
- /etc/3proxy/3proxy.cfg
+ @CMAKE_INSTALL_FULL_SYSCONFDIR@/3proxy/3proxy.cfg
UserName
proxy
diff --git a/scripts/postinstall.sh b/scripts/postinstall.sh
index b21f55b..f156af5 100644
--- a/scripts/postinstall.sh
+++ b/scripts/postinstall.sh
@@ -44,5 +44,10 @@ fi
fi
-chown -R proxy:proxy ${PREFIX}/etc/3proxy/
+if id proxy >/dev/null 2>&1 && [ -d "${PREFIX}/etc/3proxy" ]; then
+ chown -R proxy:proxy "${PREFIX}/etc/3proxy/"
+fi
+if id proxy >/dev/null 2>&1 && [ -d "/opt/3proxy" ]; then
+ chown -R proxy:proxy "/opt/3proxy/"
+fi
exit 0
diff --git a/scripts/rh/3proxy.spec b/scripts/rh/3proxy.spec
index 7de3173..efbabde 100644
--- a/scripts/rh/3proxy.spec
+++ b/scripts/rh/3proxy.spec
@@ -66,9 +66,9 @@ fi
if [ ! -f /usr/local/3proxy/conf/passwd ]; then \
touch /usr/local/3proxy/conf/passwd;\
fi
-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; \
+[ -f /bin/add3proxyuser ] && 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; \
+[ -f /etc/init.d/3proxy ] && sed -i -e 's|@CMAKE_INSTALL_FULL_BINDIR@|/bin|g' -e 's|@CMAKE_INSTALL_FULL_SYSCONFDIR@|/etc|g' /etc/init.d/3proxy; \
+[ -f /usr/lib/systemd/system/3proxy.service ] && 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; \