mirror of
https://github.com/3proxy/3proxy.git
synced 2026-04-06 21:30:12 +08:00
Use syslog for non-chroot configuration, support MacOS launchd
This commit is contained in:
parent
28969bbc5a
commit
dc83562700
@ -509,10 +509,22 @@ if(NOT WIN32)
|
|||||||
install(FILES scripts/add3proxyuser.sh DESTINATION ${CMAKE_INSTALL_BINDIR})
|
install(FILES scripts/add3proxyuser.sh DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Install service files (systemd, init.d, or rc.d)
|
# Install service files (systemd, launchd, init.d, or rc.d)
|
||||||
if(NOT WIN32)
|
if(NOT WIN32)
|
||||||
if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD|Darwin|OpenBSD|NetBSD")
|
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||||
# BSD/macOS - install rc.d script
|
# macOS - install launchd plist
|
||||||
|
configure_file(
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/scripts/org.3proxy.3proxy.plist.in
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/org.3proxy.3proxy.plist
|
||||||
|
@ONLY
|
||||||
|
)
|
||||||
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.3proxy.3proxy.plist
|
||||||
|
DESTINATION /Library/LaunchDaemons
|
||||||
|
)
|
||||||
|
|
||||||
|
message(STATUS " launchd: YES (/Library/LaunchDaemons)")
|
||||||
|
elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD|OpenBSD|NetBSD")
|
||||||
|
# BSD - install rc.d script
|
||||||
set(RCD_DIR "/usr/local/etc/rc.d")
|
set(RCD_DIR "/usr/local/etc/rc.d")
|
||||||
|
|
||||||
configure_file(
|
configure_file(
|
||||||
@ -566,7 +578,12 @@ if(NOT WIN32)
|
|||||||
message(STATUS " systemd: YES (${SYSTEMD_UNIT_DIR})")
|
message(STATUS " systemd: YES (${SYSTEMD_UNIT_DIR})")
|
||||||
else()
|
else()
|
||||||
# No systemd - install init.d script
|
# No systemd - install init.d script
|
||||||
install(FILES scripts/init.d/3proxy.sh
|
configure_file(
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/scripts/init.d/3proxy.in
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/3proxy.init
|
||||||
|
@ONLY
|
||||||
|
)
|
||||||
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/3proxy.init
|
||||||
DESTINATION /etc/init.d
|
DESTINATION /etc/init.d
|
||||||
RENAME 3proxy
|
RENAME 3proxy
|
||||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
||||||
@ -576,7 +593,12 @@ if(NOT WIN32)
|
|||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
# Other Unix - install init.d script
|
# Other Unix - install init.d script
|
||||||
install(FILES scripts/init.d/3proxy.sh
|
configure_file(
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/scripts/init.d/3proxy.in
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/3proxy.init
|
||||||
|
@ONLY
|
||||||
|
)
|
||||||
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/3proxy.init
|
||||||
DESTINATION /etc/init.d
|
DESTINATION /etc/init.d
|
||||||
RENAME 3proxy
|
RENAME 3proxy
|
||||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
||||||
@ -584,6 +606,18 @@ if(NOT WIN32)
|
|||||||
|
|
||||||
message(STATUS " init.d: YES (/etc/init.d)")
|
message(STATUS " init.d: YES (/etc/init.d)")
|
||||||
endif()
|
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
|
||||||
|
)
|
||||||
|
install(CODE "
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${CMAKE_INSTALL_FULL_BINDIR}/postinstall.sh
|
||||||
|
RESULT_VARIABLE POSTINSTALL_RESULT
|
||||||
|
)
|
||||||
|
")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Install man pages
|
# Install man pages
|
||||||
|
|||||||
53
README
53
README
@ -21,10 +21,10 @@ Devel branch - 3proxy 10 (don't use it)
|
|||||||
|
|
||||||
* Windows installation
|
* Windows installation
|
||||||
|
|
||||||
3proxy --install
|
3proxy [path_to_config_file] --install
|
||||||
|
|
||||||
installs and starts proxy as Windows service
|
installs and starts proxy as Windows service
|
||||||
(config file should be located in the same directory)
|
(config file should be located in the same directory or may be optionally specified)
|
||||||
|
|
||||||
3proxy --remove
|
3proxy --remove
|
||||||
|
|
||||||
@ -33,13 +33,14 @@ Devel branch - 3proxy 10 (don't use it)
|
|||||||
|
|
||||||
* To build in Linux
|
* To build in Linux
|
||||||
|
|
||||||
install git and build-essential packages, use
|
With Makefile:
|
||||||
|
<pre>
|
||||||
git clone https://github.com/z3apa3a/3proxy
|
git clone https://github.com/z3apa3a/3proxy
|
||||||
cd 3proxy
|
cd 3proxy
|
||||||
ln -s Makefile.Linux Makefile
|
ln -s Makefile.Linux Makefile
|
||||||
make
|
make
|
||||||
sudo make install
|
sudo make install
|
||||||
|
</pre>
|
||||||
|
|
||||||
Default configuration (for Linux/Unix):
|
Default configuration (for Linux/Unix):
|
||||||
3proxy uses 2 configuration files:
|
3proxy uses 2 configuration files:
|
||||||
@ -58,15 +59,59 @@ usage: /etc/3proxy/conf/add3proxyuser.sh username password [day_limit] [bandwidt
|
|||||||
|
|
||||||
or modify /etc/3proxy/conf/ files directly.
|
or modify /etc/3proxy/conf/ files directly.
|
||||||
|
|
||||||
|
|
||||||
|
With CMake:
|
||||||
|
<pre>
|
||||||
|
git clone https://github.com/z3apa3a/3proxy
|
||||||
|
cd 3proxy
|
||||||
|
mkdir build && cd build
|
||||||
|
cmake ..
|
||||||
|
cmake --build .
|
||||||
|
sudo cmake --install .
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
CMake does not use chroot configuration, config file is /etc/3proxy/3proxy.cfg
|
||||||
|
|
||||||
* For MacOS X / FreeBSD / *BSD
|
* For MacOS X / FreeBSD / *BSD
|
||||||
|
|
||||||
|
With Makefile:
|
||||||
|
<pre>
|
||||||
git clone https://github.com/z3apa3a/3proxy
|
git clone https://github.com/z3apa3a/3proxy
|
||||||
cd 3proxy
|
cd 3proxy
|
||||||
ln -s Makefile.FreeBSD Makefile
|
ln -s Makefile.FreeBSD Makefile
|
||||||
make
|
make
|
||||||
|
</pre>
|
||||||
|
|
||||||
(binaries are in bin/ directory)
|
(binaries are in bin/ directory)
|
||||||
|
|
||||||
|
With CMake (recommended):
|
||||||
|
<pre>
|
||||||
|
git clone https://github.com/z3apa3a/3proxy
|
||||||
|
cd 3proxy
|
||||||
|
mkdir build && cd build
|
||||||
|
cmake ..
|
||||||
|
cmake --build .
|
||||||
|
sudo cmake --install .
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
This installs binaries to /usr/local/bin/, configuration to /etc/3proxy/,
|
||||||
|
plugins to /usr/local/lib/3proxy/, rc scripts to rc.d for BSD and launchd plist to /Library/LaunchDaemons/ for MacOS.
|
||||||
|
|
||||||
|
Service management on macOS:
|
||||||
|
<pre>
|
||||||
|
# Load and start service
|
||||||
|
sudo launchctl load /Library/LaunchDaemons/org.3proxy.3proxy.plist
|
||||||
|
|
||||||
|
# Stop service
|
||||||
|
sudo launchctl stop org.3proxy.3proxy
|
||||||
|
|
||||||
|
# Start service
|
||||||
|
sudo launchctl start org.3proxy.3proxy
|
||||||
|
|
||||||
|
# Unload and disable service
|
||||||
|
sudo launchctl unload /Library/LaunchDaemons/org.3proxy.3proxy.plist
|
||||||
|
</pre>
|
||||||
|
|
||||||
Features:
|
Features:
|
||||||
1. General
|
1. General
|
||||||
+ IPv6 support for incoming and outgoing connection,
|
+ IPv6 support for incoming and outgoing connection,
|
||||||
|
|||||||
@ -12,6 +12,7 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li><A HREF="#INSTNT">How to install/remove 3proxy under Windows NT/2000/XP</A>
|
<li><A HREF="#INSTNT">How to install/remove 3proxy under Windows NT/2000/XP</A>
|
||||||
<li><A HREF="#INSTUNIX">How to install/remove 3proxy under Unix/Linux</A>
|
<li><A HREF="#INSTUNIX">How to install/remove 3proxy under Unix/Linux</A>
|
||||||
|
<li><A HREF="#INSTMACOS">How to install/remove 3proxy under macOS</A>
|
||||||
<li><A HREF="#INSTDOCKER">How to use 3proxy with Docker</A>
|
<li><A HREF="#INSTDOCKER">How to use 3proxy with Docker</A>
|
||||||
</ul>
|
</ul>
|
||||||
<li><A HREF="#SERVER">Server configuration</A>
|
<li><A HREF="#SERVER">Server configuration</A>
|
||||||
@ -182,6 +183,51 @@ Add 3proxy to the system startup scripts or use systemd:
|
|||||||
sudo systemctl enable 3proxy
|
sudo systemctl enable 3proxy
|
||||||
sudo systemctl start 3proxy
|
sudo systemctl start 3proxy
|
||||||
</pre>
|
</pre>
|
||||||
|
</p>
|
||||||
|
<li><A NAME="INSTMACOS">How to install/remove 3proxy under macOS</A>
|
||||||
|
<p>
|
||||||
|
<b>Using CMake (recommended):</b>
|
||||||
|
<pre>
|
||||||
|
mkdir build && cd build
|
||||||
|
cmake ..
|
||||||
|
cmake --build .
|
||||||
|
sudo cmake --install .
|
||||||
|
</pre>
|
||||||
|
This installs:
|
||||||
|
<ul>
|
||||||
|
<li>Binaries to <code>/usr/local/bin/</code></li>
|
||||||
|
<li>Configuration to <code>/etc/3proxy/</code></li>
|
||||||
|
<li>Plugins to <code>/usr/local/lib/3proxy/</code></li>
|
||||||
|
<li>Launchd plist to <code>/Library/LaunchDaemons/org.3proxy.3proxy.plist</code></li>
|
||||||
|
</ul>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<b>Using Makefile:</b>
|
||||||
|
<pre>
|
||||||
|
ln -sf Makefile.FreeBSD Makefile
|
||||||
|
make
|
||||||
|
sudo make install
|
||||||
|
</pre>
|
||||||
|
This installs binaries to <code>/usr/local/3proxy/bin/</code> and configuration to <code>/usr/local/etc/3proxy/</code>.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<b>Service management with launchd:</b>
|
||||||
|
<br>After installation via cmake, the service can be managed with launchctl:
|
||||||
|
<pre>
|
||||||
|
# Load and start the service
|
||||||
|
sudo launchctl load /Library/LaunchDaemons/org.3proxy.3proxy.plist
|
||||||
|
|
||||||
|
# Stop the service
|
||||||
|
sudo launchctl stop org.3proxy.3proxy
|
||||||
|
|
||||||
|
# Start the service
|
||||||
|
sudo launchctl start org.3proxy.3proxy
|
||||||
|
|
||||||
|
# Unload and disable the service
|
||||||
|
sudo launchctl unload /Library/LaunchDaemons/org.3proxy.3proxy.plist
|
||||||
|
</pre>
|
||||||
|
The service runs as user <code>proxy</code> (created during installation).
|
||||||
|
Configuration file: <code>/etc/3proxy/3proxy.cfg</code>
|
||||||
</p>
|
</p>
|
||||||
<li><A NAME="INSTDOCKER">How to use 3proxy with Docker</A>
|
<li><A NAME="INSTDOCKER">How to use 3proxy with Docker</A>
|
||||||
<p>
|
<p>
|
||||||
|
|||||||
@ -12,6 +12,7 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li><a href="#INSTNT">Как установить/удалить 3proxy под Windows NT/2000/XP/2003 как службу</a>
|
<li><a href="#INSTNT">Как установить/удалить 3proxy под Windows NT/2000/XP/2003 как службу</a>
|
||||||
<li><a href="#INSTUNIX">Как установить/удалить 3proxy под Unix/Linux</a>
|
<li><a href="#INSTUNIX">Как установить/удалить 3proxy под Unix/Linux</a>
|
||||||
|
<li><a href="#INSTMACOS">Как установить/удалить 3proxy под macOS</a>
|
||||||
<li><a href="#INSTDOCKER">Как использовать 3proxy с Docker</a>
|
<li><a href="#INSTDOCKER">Как использовать 3proxy с Docker</a>
|
||||||
</ul>
|
</ul>
|
||||||
<li><a href="#SERVER">Конфигурация сервера</a>
|
<li><a href="#SERVER">Конфигурация сервера</a>
|
||||||
@ -178,6 +179,48 @@
|
|||||||
sudo systemctl enable 3proxy
|
sudo systemctl enable 3proxy
|
||||||
sudo systemctl start 3proxy</pre>
|
sudo systemctl start 3proxy</pre>
|
||||||
</p>
|
</p>
|
||||||
|
<li><a name="INSTMACOS"><i>Как установить/удалить 3proxy под macOS</i></a>
|
||||||
|
<p>
|
||||||
|
<b>С помощью CMake (рекомендуется):</b>
|
||||||
|
<pre>
|
||||||
|
mkdir build && cd build
|
||||||
|
cmake ..
|
||||||
|
cmake --build .
|
||||||
|
sudo cmake --install .</pre>
|
||||||
|
Это установит:
|
||||||
|
<ul>
|
||||||
|
<li>Исполняемые файлы в <code>/usr/local/bin/</code></li>
|
||||||
|
<li>Конфигурацию в <code>/etc/3proxy/</code></li>
|
||||||
|
<li>Плагины в <code>/usr/local/lib/3proxy/</code></li>
|
||||||
|
<li>Launchd plist в <code>/Library/LaunchDaemons/org.3proxy.3proxy.plist</code></li>
|
||||||
|
</ul>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<b>С помощью Makefile:</b>
|
||||||
|
<pre>
|
||||||
|
ln -sf Makefile.FreeBSD Makefile
|
||||||
|
make
|
||||||
|
sudo make install</pre>
|
||||||
|
Это установит исполняемые файлы в <code>/usr/local/3proxy/bin/</code> и конфигурацию в <code>/usr/local/etc/3proxy/</code>.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<b>Управление службой через launchd:</b>
|
||||||
|
<br>После установки через cmake службой можно управлять с помощью launchctl:
|
||||||
|
<pre>
|
||||||
|
# Загрузить и запустить службу
|
||||||
|
sudo launchctl load /Library/LaunchDaemons/org.3proxy.3proxy.plist
|
||||||
|
|
||||||
|
# Остановить службу
|
||||||
|
sudo launchctl stop org.3proxy.3proxy
|
||||||
|
|
||||||
|
# Запустить службу
|
||||||
|
sudo launchctl start org.3proxy.3proxy
|
||||||
|
|
||||||
|
# Выгрузить и отключить службу
|
||||||
|
sudo launchctl unload /Library/LaunchDaemons/org.3proxy.3proxy.plist</pre>
|
||||||
|
Служба запускается от имени пользователя <code>proxy</code> (создаётся при установке).
|
||||||
|
Файл конфигурации: <code>/etc/3proxy/3proxy.cfg</code>
|
||||||
|
</p>
|
||||||
<li><a name="INSTDOCKER"><i>Как использовать 3proxy с Docker</i></a>
|
<li><a name="INSTDOCKER"><i>Как использовать 3proxy с Docker</i></a>
|
||||||
<p>
|
<p>
|
||||||
<b>Использование готовых образов из GitHub Container Registry:</b>
|
<b>Использование готовых образов из GitHub Container Registry:</b>
|
||||||
|
|||||||
@ -1,2 +1,4 @@
|
|||||||
#!/usr/local/bin/3proxy
|
#!/usr/local/bin/3proxy
|
||||||
#path to plugins:
|
|
||||||
|
#use standard syslog logging
|
||||||
|
log @3proxy
|
||||||
|
|||||||
@ -4,6 +4,9 @@ Documentation=man:3proxy(1)
|
|||||||
After=network.target
|
After=network.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=proxy
|
||||||
|
Group=proxy
|
||||||
Environment=CONFIGFILE=/etc/3proxy/3proxy.cfg
|
Environment=CONFIGFILE=/etc/3proxy/3proxy.cfg
|
||||||
ExecStart=@CMAKE_INSTALL_FULL_BINDIR@/3proxy ${CONFIGFILE}
|
ExecStart=@CMAKE_INSTALL_FULL_BINDIR@/3proxy ${CONFIGFILE}
|
||||||
ExecReload=/bin/kill -SIGUSR1 $MAINPID
|
ExecReload=/bin/kill -SIGUSR1 $MAINPID
|
||||||
@ -13,6 +16,7 @@ RestartSec=60s
|
|||||||
LimitNOFILE=65536
|
LimitNOFILE=65536
|
||||||
LimitNPROC=32768
|
LimitNPROC=32768
|
||||||
RuntimeDirectory=3proxy
|
RuntimeDirectory=3proxy
|
||||||
|
RuntimeDirectoryMode=0755
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
# tmpfiles.d configuration for 3proxy
|
# tmpfiles.d configuration for 3proxy
|
||||||
# This creates the runtime directory for 3proxy
|
# This creates the runtime directory for 3proxy
|
||||||
d /run/3proxy 0755 root root -
|
d /run/3proxy 0755 proxy proxy -
|
||||||
|
|||||||
109
scripts/init.d/3proxy.in
Normal file
109
scripts/init.d/3proxy.in
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
### BEGIN INIT INFO
|
||||||
|
# Provides: 3proxy
|
||||||
|
# Required-Start: $network $local_fs
|
||||||
|
# Required-Stop: $network $local_fs
|
||||||
|
# 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
|
||||||
|
|
||||||
|
DAEMON=@CMAKE_INSTALL_FULL_BINDIR@/3proxy
|
||||||
|
CONFIGFILE=/etc/3proxy/3proxy.cfg
|
||||||
|
PIDFILE=/var/run/3proxy/3proxy.pid
|
||||||
|
USER=proxy
|
||||||
|
GROUP=proxy
|
||||||
|
|
||||||
|
# Source function library if available
|
||||||
|
if [ -f /etc/init.d/functions ]; then
|
||||||
|
. /etc/init.d/functions
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
start)
|
||||||
|
echo -n "Starting 3Proxy: "
|
||||||
|
|
||||||
|
if [ ! -d /var/run/3proxy ]; then
|
||||||
|
mkdir -p /var/run/3proxy
|
||||||
|
chown $USER:$GROUP /var/run/3proxy 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
if command -v start-stop-daemon >/dev/null 2>&1; then
|
||||||
|
# Debian/Ubuntu style
|
||||||
|
start-stop-daemon --start --quiet --pidfile $PIDFILE \
|
||||||
|
--chuid $USER:$GROUP --exec $DAEMON -- $CONFIGFILE
|
||||||
|
elif [ -f /etc/init.d/functions ]; then
|
||||||
|
# RedHat/CentOS style
|
||||||
|
daemon --user=$USER $DAEMON $CONFIGFILE
|
||||||
|
else
|
||||||
|
# Fallback
|
||||||
|
su -s /bin/sh $USER -c "$DAEMON $CONFIGFILE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
RETVAL=$?
|
||||||
|
echo
|
||||||
|
[ $RETVAL = 0 ] && touch /var/lock/subsys/3proxy
|
||||||
|
;;
|
||||||
|
|
||||||
|
stop)
|
||||||
|
echo -n "Stopping 3Proxy: "
|
||||||
|
|
||||||
|
if command -v start-stop-daemon >/dev/null 2>&1; then
|
||||||
|
# Debian/Ubuntu style
|
||||||
|
start-stop-daemon --stop --quiet --pidfile $PIDFILE
|
||||||
|
elif [ -f /etc/init.d/functions ]; then
|
||||||
|
# RedHat/CentOS style
|
||||||
|
killproc -p $PIDFILE $DAEMON
|
||||||
|
else
|
||||||
|
# Fallback
|
||||||
|
if [ -f $PIDFILE ]; then
|
||||||
|
kill `cat $PIDFILE` 2>/dev/null
|
||||||
|
else
|
||||||
|
killall 3proxy 2>/dev/null
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
RETVAL=$?
|
||||||
|
echo
|
||||||
|
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/3proxy
|
||||||
|
;;
|
||||||
|
|
||||||
|
restart|reload)
|
||||||
|
echo -n "Reloading 3Proxy: "
|
||||||
|
if [ -f $PIDFILE ]; then
|
||||||
|
kill -s USR1 `cat $PIDFILE` 2>/dev/null
|
||||||
|
RETVAL=$?
|
||||||
|
else
|
||||||
|
echo "PID file not found, cannot reload"
|
||||||
|
RETVAL=1
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
;;
|
||||||
|
|
||||||
|
status)
|
||||||
|
if command -v status >/dev/null 2>&1; then
|
||||||
|
status -p $PIDFILE $DAEMON
|
||||||
|
elif [ -f $PIDFILE ]; then
|
||||||
|
if kill -0 `cat $PIDFILE` 2>/dev/null; then
|
||||||
|
echo "3proxy is running (pid `cat $PIDFILE`)"
|
||||||
|
RETVAL=0
|
||||||
|
else
|
||||||
|
echo "3proxy is dead but pid file exists"
|
||||||
|
RETVAL=1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "3proxy is not running"
|
||||||
|
RETVAL=3
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "Usage: $0 {start|stop|restart|reload|status}"
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
exit ${RETVAL:-0}
|
||||||
35
scripts/org.3proxy.3proxy.plist.in
Normal file
35
scripts/org.3proxy.3proxy.plist.in
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>Label</key>
|
||||||
|
<string>org.3proxy.3proxy</string>
|
||||||
|
<key>ProgramArguments</key>
|
||||||
|
<array>
|
||||||
|
<string>@CMAKE_INSTALL_FULL_BINDIR@/3proxy</string>
|
||||||
|
<string>/etc/3proxy/3proxy.cfg</string>
|
||||||
|
</array>
|
||||||
|
<key>UserName</key>
|
||||||
|
<string>proxy</string>
|
||||||
|
<key>GroupName</key>
|
||||||
|
<string>proxy</string>
|
||||||
|
<key>RunAtLoad</key>
|
||||||
|
<true/>
|
||||||
|
<key>KeepAlive</key>
|
||||||
|
<true/>
|
||||||
|
<key>StandardOutPath</key>
|
||||||
|
<string>/var/log/3proxy.log</string>
|
||||||
|
<key>StandardErrorPath</key>
|
||||||
|
<string>/var/log/3proxy.log</string>
|
||||||
|
<key>SoftResourceLimits</key>
|
||||||
|
<dict>
|
||||||
|
<key>NumberOfFiles</key>
|
||||||
|
<integer>65536</integer>
|
||||||
|
</dict>
|
||||||
|
<key>HardResourceLimits</key>
|
||||||
|
<dict>
|
||||||
|
<key>NumberOfFiles</key>
|
||||||
|
<integer>65536</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
45
scripts/postinstall.sh
Normal file
45
scripts/postinstall.sh
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Post-install script for 3proxy
|
||||||
|
# Creates proxy user and group if they don't exist
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Check if user already exists
|
||||||
|
if id proxy >/dev/null 2>&1; then
|
||||||
|
echo "User 'proxy' already exists"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Creating proxy user and group..."
|
||||||
|
|
||||||
|
# Determine which commands are available
|
||||||
|
if command -v groupadd >/dev/null 2>&1; then
|
||||||
|
# Linux (shadow-utils)
|
||||||
|
groupadd -r proxy 2>/dev/null || true
|
||||||
|
useradd -r -g proxy -d /var/run/3proxy -s /usr/sbin/nologin proxy 2>/dev/null || true
|
||||||
|
elif command -v addgroup >/dev/null 2>&1; then
|
||||||
|
# Alpine Linux / BusyBox
|
||||||
|
addgroup -S proxy 2>/dev/null || true
|
||||||
|
adduser -S -D -H -G proxy -s /sbin/nologin proxy 2>/dev/null || true
|
||||||
|
elif command -v pw >/dev/null 2>&1; then
|
||||||
|
# FreeBSD
|
||||||
|
pw groupadd proxy 2>/dev/null || true
|
||||||
|
pw useradd proxy -g proxy -d /var/run/3proxy -s /usr/sbin/nologin 2>/dev/null || true
|
||||||
|
elif command -v dscl >/dev/null 2>&1; then
|
||||||
|
# macOS
|
||||||
|
dscl . create /Groups/proxy 2>/dev/null || true
|
||||||
|
dscl . create /Users/proxy 2>/dev/null || true
|
||||||
|
dscl . create /Users/proxy UserShell /usr/bin/false 2>/dev/null || true
|
||||||
|
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
|
||||||
|
echo "User 'proxy' created successfully"
|
||||||
|
else
|
||||||
|
echo "Warning: Failed to create user 'proxy'"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
||||||
@ -13,6 +13,7 @@ command="@CMAKE_INSTALL_FULL_BINDIR@/3proxy"
|
|||||||
pidfile="/var/run/3proxy/${name}.pid"
|
pidfile="/var/run/3proxy/${name}.pid"
|
||||||
command_args="${3proxy_config:-/etc/3proxy/3proxy.cfg}"
|
command_args="${3proxy_config:-/etc/3proxy/3proxy.cfg}"
|
||||||
required_files="${3proxy_config:-/etc/3proxy/3proxy.cfg}"
|
required_files="${3proxy_config:-/etc/3proxy/3proxy.cfg}"
|
||||||
|
command_user="proxy:proxy"
|
||||||
|
|
||||||
start_precmd="3proxy_precmd"
|
start_precmd="3proxy_precmd"
|
||||||
|
|
||||||
@ -20,6 +21,7 @@ start_precmd="3proxy_precmd"
|
|||||||
{
|
{
|
||||||
if [ ! -d /var/run/3proxy ]; then
|
if [ ! -d /var/run/3proxy ]; then
|
||||||
mkdir -p /var/run/3proxy
|
mkdir -p /var/run/3proxy
|
||||||
|
chown proxy:proxy /var/run/3proxy
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user