#!/bin/bash
# 3proxy build and install script for Debian Linux 
# Release 2.0 at 29.12.2016
# (с) Evgeniy Solovyev 
# mail-to: eugen-soloviov@yandex.ru

ScriptPath=""
Src3proxyDirPath=""
ScriptName=""
ScriptFullName=""
SourceRoot=""

ResourcesData=""


ProxyVersion=""
LasestProxyVersion=""
LasestProxyVersionLink=""
UseSudo=0
PacketFiles=""
NeedSourceUpdate=0


main()
{
	local msgNewVersion
	local msgInsertYorN
	
	VarsInit
	LoadResources
	CheckRunConditions
	
	if [ $UseSudo == 1 ]
	then
		sudo bash "${0}"
		exit $?
	fi
	
	CheckLocation
	GetLasestVersionInfo
	
	SourceDownloadOrUpdate
	
	cd "${SourceRoot}"
	
	Build3Proxy
	BinInstall
	ManInstall
	CreateLogDir
	CopyConfig
	SetInit
	Pack3proxyFiles
}

VarsInit()
{
	cd `dirname $0`
	ScriptPath="${PWD}"
	ScriptName=`basename $0`
	ScriptFullName="${ScriptPath}/${ScriptName}"
}

CheckLocation()
{
	Src3proxyDirPath="${ScriptPath}"
	
	if echo ${ScriptPath} | grep -e "/scripts$"
	then
		if [ -e "../src/version.h" ]
		then
			ProxyVersion=`cat "../src/version.h" | awk '/VERSION/ { gsub("\"", "\n"); print; exit }' | grep "3proxy"`
			cd ../
			SourceRoot="${PWD}"
			cd ../
			Src3proxyDirPath="${PWD}"
			cd "${ScriptPath}"
		fi
	fi
}

GetLasestVersionInfo()
{
	local Githublink
	local msg
	
	Githublink=`wget https://github.com/3proxy/3proxy/releases/latest -O /dev/stdout |
	awk '/<a.+href=.+\.tar\.gz/ { gsub("\"", "\n"); print; exit }' |
	grep -e ".tar.gz"`
	if [ $? != 0 ]
	then
		msg=`GetResource "msgInternetConnectionError"`
		echo -e "${msg}"
		exit 255
	fi
	
	LasestProxyVersionLink="https://github.com${Githublink}"

	LasestProxyVersion=`basename "${Githublink}" | awk 'gsub(".tar.gz", "") { print "3proxy-" $0 }'`
}

CheckRunConditions()
{
	local UserName
	local answer
	local msg
	local msgContinueWork
	local msgInsertYorN
	
	UserName=`whoami`
	
	if [  $UID != 0 ]
	then
		if [ `CheckPacketInstall "sudo"` == 0 ]
		then
			msg=`GetResource "msgSudoNotInstalled"`
			echo -e "${msg}"
			exit 255
		fi
		
		UseSudo=1
		
		if [ -z `cat /etc/group | grep -e "^sudo" | grep "${UserName}"`  ]
		then
			msg=`GetResource "msgUserNotMemberOfSudoGroup"`
			echo -e "${msg}"
			exit 255
		fi
		
		if [ `env | grep -e ^http_proxy` != "" ]
		then
			msg=`GetResource "msgSystemUseProxy"`
			echo -e "${msg}"
			
			msgContinueWork=`GetResource "msgDoYouWishContinue"`
			msgInsertYorN=`GetResource "msgPleaseInsertYorN"`
			
			while true; do
				read -s -n1 -p "${msgContinueWork}" answer
				case $answer in
					[Yy]* ) echo -ne "\n";break;;
					[Nn]* ) echo -ne "\n"; sleep 0; exit 0;;
					* ) echo -e "${msgInsertYorN}";;
				esac
			done
		
		fi
	fi
	
}

DonwnloadSource()
{
	if [ ! -e "${Src3proxyDirPath}/${LasestProxyVersion}.tar.gz" ] 
	then
		wget "${LasestProxyVersionLink}" -O "${Src3proxyDirPath}/${LasestProxyVersion}.tar.gz"
	fi
	
	ProxyVersion="${LasestProxyVersion}"
}

UnpackSource()
{
	if [ ! -d "${Src3proxyDirPath}/${LasestProxyVersion}" ]
	then
		tar -xvf "${Src3proxyDirPath}/${LasestProxyVersion}.tar.gz" -C "${Src3proxyDirPath}"
	fi
	
	SourceRoot="${Src3proxyDirPath}/${LasestProxyVersion}"
}

SourceDownloadOrUpdate()
{
	if [ -z "${ProxyVersion}" ]
	then
		NeedSourceUpdate=1
	else
		if [ "${ProxyVersion}" != "${LasestProxyVersion}" ]
		then
			msgNewVersion=`GetResource "msgNewVersion"`
			msgInsertYorN=`GetResource "msgPleaseInsertYorN"`
			
			echo -ne "\a"
			
			while true; do
				read -s -n1 -p "${msgNewVersion}" answer
				case $answer in
					[Yy]* ) echo -ne "\n"; NeedSourceUpdate=1; sleep 0; break;;
					[Nn]* ) echo -ne "\n"; NeedSourceUpdate=0; sleep 0; break;;
					* ) echo -e "${msgInsertYorN}";;
				esac
			done
		fi
	fi
	
	if [ $NeedSourceUpdate == 1 ]
	then
		DonwnloadSource
		UnpackSource
	fi
}

Build3Proxy()
{
	local msg
	
	if [ `CheckPacketInstall "build-essential"` == 0 ]
	then
		apt-get -y install build-essential
	fi
	
	if [ `CheckPacketInstall "build-essential"` == 0 ]
	then
		msg=`GetResource "msgBuildEssentialNotInstalled"`
		echo -e "${msg}"
		
		exit 255
	fi
	
	make -f Makefile.Linux
}


BinInstall()
{
	local binlist
	local liblist
	
	if [! -d bin]
	then
		mkdir bin
	fi
	
	cd bin
	
	binlist=`ls -l --time-style="+%d.%m.%Y %H:%m" | awk '$1 ~ /x$/ && $1 ~ /^[^d]/ && $8 !~ /\.so$/ { print $8 }'`
	
	for file in $binlist
	do
		cp -vf "${file}" /usr/bin
		PacketFiles=`echo -e "${PacketFiles}\n/usr/bin/${file}"`
	done
	
	liblist=`ls -l --time-style="+%d.%m.%Y %H:%m" | awk '$1 ~ /x$/ && $1 ~ /^[^d]/ && $8 ~ /\.so$/ { print $8 }'`

	for file in $liblist
	do
		cp -vf "${file}" /usr/lib
		PacketFiles=`echo -e "${PacketFiles}\n/usr/lib/${file}"`
	done

	cd ..
}

ManInstall()
{
	local man3list
	local man8list
	
	cd man
	
	man3list=`ls -l --time-style="+%d.%m.%Y %H:%m" | awk '$8 ~ /\.3$/ { print $8 }'`
	gzip -vfk $man3list
	
	man3list=`echo "${man3list}" | awk '{ print $1 ".gz" }'`
	
	for file in $man3list
	do
		mv -vf "${file}" /usr/share/man/man3
		PacketFiles="${PacketFiles}\n/usr/share/man/man3/${file}" 
	done
	
	man8list=`ls -l --time-style="+%d.%m.%Y %H:%m" | awk '$8 ~ /\.8$/ { print $8 }'`
	
	gzip -vfk $man8list
	
	man8list=`echo "${man8list}" | awk '{ print $1 ".gz" }'`
	
	for file in $man8list
	do
		mv -vf "${file}" /usr/share/man/man8
		PacketFiles=`echo -e "${PacketFiles}\n/usr/share/man/man8/${file}"`
	done
	
	cd ..
}


CreateLogDir()
{
	local LogDir
	LogDir="/var/log/3proxy"
	
	if [ ! -d  "${LogDir}" ]
	then
		mkdir "${LogDir}"
	fi
	
	chown nobody:nogroup "${LogDir}"
	chmod 775 "${LogDir}"
	PacketFiles="${PacketFiles}\n${LogDir}" 
}


CopyConfig()
{
	local ConfigDir
	ConfigDir="/etc/3proxy"
	
	if [ ! -d  "${ConfigDir}" ]
	then
		mkdir "${ConfigDir}"
	fi
	
	LoadGlobalResource "ConfigFile" > "${ConfigDir}/3proxy.cfg"

	PacketFiles=`echo -e "${PacketFiles}\n${ConfigDir}/3proxy.cfg"`
}


SetInit()
{
	LoadGlobalResource "InitScript" > "/etc/init.d/3proxy"
	chown root:root "/etc/init.d/3proxy"
	chmod 755 "/etc/init.d/3proxy"
	
	PacketFiles=`echo -e "${PacketFiles}\n/etc/init.d/3proxy"`
	update-rc.d 3proxy defaults
}

Pack3proxyFiles()
{
	local CPU_Arc
	CPU_Arc=`uname -m`
	cd ../
	tar -czPpvf "${ProxyVersion}-${CPU_Arc}.tar.gz" $PacketFiles
}

LoadResources()
{
	local StartRow
	local EndRow
	local LngLabel
	local msgResourceErr="\aError! Script could not find resources!"
	
	if env | grep -q 'LANG=ru_RU.UTF-8' 
	then
		LngLabel="RU"
#LngLabel="EN"
	else
		LngLabel="EN"
	fi
	
	StartRow=`cat "${ScriptFullName}" | awk "/^#Resources_${LngLabel}/ { print NR; exit}"`
	
	if [ -z "${StartRow}" ]
	then
		echo -e "${msgResourceErr}"
		exit 255
	fi
	
	EndRow=`cat "${ScriptFullName}" | awk "NR > ${StartRow} && /^#Resources_${LngLabel}_end/ { print NR; exit}"`
	
	if [ -z "${EndRow}" ]
	then
		echo -e "${msgResourceErr}"
		exit 255
	fi
	
	ResourcesData=`cat "${ScriptFullName}" | awk -v StartRow="${StartRow}" -v EndRow="${EndRow}" 'NR > StartRow && NR < EndRow { print $0 }'`
}


# $1 - Name of Resource
GetResource()
{
	local StartRow
	local EndRow
	local msgResourceErr="\aError! Script could not find resource \"${1}\"!"
	
	StartRow=`echo "${ResourcesData}" | awk "/^#Resource=${1}/ { print NR; exit}"`
	
	if [ -z "${StartRow}" ]
	then
		echo -e "${msgResourceErr}" > /dev/stderr
		exit 255
	fi
	
	EndRow=`echo "${ResourcesData}" | awk "NR > ${StartRow} && /^#endResource=${1}/ { print NR; exit}"`
	
	if [ -z "${EndRow}" ]
	then
		echo -e "${msgResourceErr}" > /dev/stderr
		exit 255
	fi
	
	echo "${ResourcesData}" | awk -v StartRow="${StartRow}" -v EndRow="${EndRow}" 'NR > StartRow && NR < EndRow { print $0 }'
}


# $1 - Name of Resource
LoadGlobalResource()
{
	local StartRow
	local EndRow
	local LngLabel
	local msgResourceErr="\aError! Script could not find resource \"${1}\"!"
	
	
	StartRow=`cat "${ScriptFullName}" | awk "/^#Resource=${1}/ { print NR; exit}"`
	
	if [ -z "${StartRow}" ]
	then
		echo -e "${msgResourceErr}" > /dev/stderr
		exit 255
	fi
	
	EndRow=`cat "${ScriptFullName}" | awk "NR > ${StartRow} && /^#endResource=${1}/ { print NR; exit}"`
	
	if [ -z "${EndRow}" ]
	then
		echo -e "${msgResourceErr}" > /dev/stderr
		exit 255
	fi
	
	cat "${ScriptFullName}" | awk -v StartRow="${StartRow}" -v EndRow="${EndRow}" 'NR > StartRow && NR < EndRow { print $0 }'
}


CheckPacketInstall()
{
	if [ `dpkg -l ${1} 2>&1 | wc -l` -le 1 ]  
	then
		echo 0
		return
	fi
	if [ `dpkg -l ${1} | grep -e ^un | wc -l` == 1 ]
	then
		echo 0
		return
	fi
	
	echo 1
}

main
exit 0

#Resources_EN

#Resource=msgSudoNotInstalled
\aThe script is running under the account a non-privileged user.
"Sudo" package is not installed in the system.
The script can not continue, as the execution of operations,
requiring rights "root" - is not possible!
Please run the script under the account "root",
or install and configure "sudo" package!
#endResource=msgSudoNotInstalled

#Resource=msgUserNotMemberOfSudoGroup
\aThe script is running under account a non-privileged user.
The account of the current user is not included in the "sudo" group!
The script can not continue, as the execution of operations,
requiring rights "root" - is not possible!
Please run the script under the account "root",
or configure "sudo" package!
#endResource=msgUserNotMemberOfSudoGroup

#Resource=msgSystemUseProxy
\aAttention! The operating system uses proxy-server.
For correctly work of package manager "apt" 
in the file "/etc/sudoers" should be present line:
Defaults env_keep = "http_proxy https_proxy"
#endResource=msgSystemUseProxy

#Resource=msgDoYouWishContinue
Do you wish to the script continued executing? (y/n):
#endResource=msgDoYouWishContinue

#Resource=msgPleaseInsertYorN
\a\nPlease insert "y" or "n"!
#endResource=msgPleaseInsertYorN

#Resource=msgInternetConnectionError
\aError downloading "https://github.com/z3APA3A/3proxy/releases/latest"!
Please check the settings of the Internet connection.
#endResource=msgInternetConnectionError

#Resource=msgNewVersion
The new version of "3proxy" detected, do you want download it?
#endResource=msgNewVersion

#Resource=msgBuildEssentialNotInstalled
\aPackage "build-essential" was not installed.
The installation can not be continued!
#endResource=msgBuildEssentialNotInstalled

#Resources_EN_end

#Resources_RU

#Resource=msgSudoNotInstalled
\aСкрипт запущен под учётной записью обычного пользователя.
В системе не установлен пакет "sudo".
Скрипт не может продолжить работу, так как выполнение операций,
требующих прав "root" - не представляется возможным!
Пожалуйста, запустите скрипт под учётной записью "root", 
либо установите и настройте пакет "sudo"!
#endResource=msgSudoNotInstalled

#Resource=msgUserNotMemberOfSudoGroup
\aСкрипт запущен под учётной записью обычного пользователя.
Учётная запись текущего пользователя не включена в группу "sudo"!
Скрипт не может продолжить работу, так как выполнение операций,
требующих прав "root" - не представляется возможным!
Пожалуйста, запустите скрипт под учётной записью "root", 
либо настройте пакет "sudo"!
#endResource=msgUserNotMemberOfSudoGroup

#Resource=msgSystemUseProxy
\aВнимание! В системе используется прокси-сервер.
Чтобы менеджер пакетов "apt" работал корректно,
в файле "/etc/sudoers" должна присутствовать строка:
Defaults env_keep = "http_proxy https_proxy"
#endResource=msgSystemUseProxy

#Resource=msgDoYouWishContinue
Хотите чтобы скрипт дальше продолжил работу? (y/n):
#endResource=msgDoYouWishContinue

#Resource=msgPleaseInsertYorN
\a\nПожалуйста введите "y" или "n"!
#endResource=msgPleaseInsertYorN

#Resource=msgInternetConnectionError
\aОшибка закачки "https://github.com/z3APA3A/3proxy/releases/latest"!
Пожалуйста, проверьте настройки интернет соединения.
#endResource=msgInternetConnectionError

#Resource=msgNewVersion
Обнаружена новая версия "3proxy", скачать её (y/n)?
#endResource=msgNewVersion

#Resource=msgBuildEssentialNotInstalled
\aПакет "build-essential" не был установлен.
Дальнейшая установка не может быть продолжена!
#endResource=msgBuildEssentialNotInstalled

#Resources_RU_end


#Resource=ConfigFile
noconfig
# If in this file have line "noconfig", then 3proxy not to be runned!
# For usung this configuration file 3proxy you must to delete 
# or comment out the line with "noconfig".

daemon
# Parameter "daemon" - means run 3proxy as daemon


pidfile /tmp/3proxy.pid
# PID file location 
# This parameter must have the same value as 
# the variable "PidFile" in  the script "/etc/init.d/3proxy"


# Configuration file location
config /etc/3proxy/3proxy.cfg


internal 127.0.0.1
# Internal is address of interface proxy will listen for incoming requests
# 127.0.0.1 means only localhost will be able to use this proxy. This is
# address you should specify for clients as proxy IP.
# You MAY use 0.0.0.0 but you shouldn't, because it's a chance for you to
# have open proxy in your network in this case.

external 192.168.0.1
# External is address 3proxy uses for outgoing connections. 0.0.0.0 means any
# interface. Using 0.0.0.0 is not good because it allows to connect to 127.0.0.1


# DNS IP addresses
nserver 8.8.8.8
nserver 8.8.4.4


# DNS cache size
nscache 65536

# Timeouts settings
timeouts 1 5 30 60 180 1800 15 60


# log file location
log /var/log/3proxy/3proxy.log D

# log file format
logformat "L%C - %U [%d-%o-%Y %H:%M:%S %z] ""%T"" %E %I %O %N/%R:%r"

archiver gz /usr/bin/gzip %F
# If archiver specified log file will be compressed after closing.
# you should specify extension, path to archiver and command line, %A will be
# substituted with archive file name, %f - with original file name.
# Original file will not be removed, so archiver should care about it.

rotate 30
# We will keep last 30 log files

proxy -p3128
# Run http/https proxy on port 3128

auth none
# No authentication is requires

setgid 65534
setuid 65534
# Run 3proxy under account "nobody" with group "nobody"
#endResource=ConfigFile


#Resource=InitScript
#!/bin/sh
#
# 3proxy daemon control script
#
### BEGIN INIT INFO
# Provides:          3proxy
# Required-Start:    $network $remote_fs $syslog
# Required-Stop:     $network $remote_fs $syslog
# Should-Start:      $named
# Should-Stop:       $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: 3proxy HTTP Proxy
### END INIT INFO


ScriptName="3proxy"
ScriptFullName="/etc/init.d/3proxy"

ConfigFile="/etc/3proxy/3proxy.cfg"
LogDir="/var/log/3proxy"
PidFile="/tmp/3proxy.pid"

ResourcesData=""

main()
{
	LoadResources
	
	if [ ! -d "${LogDir}" ]
	then
		mkdir -p "${LogDir}";
	fi
	
	case "$1" in
		start)		Start ;;
		stop)		Stop ;;
		restart)	Stop; Start ;;
		status)		Status ;;
		*)			ShowHelp;;
	esac
}

Start()
{
	local msg
	local ProxyPID
	
	if [ ! -f "${ConfigFile}" ]
	then
		msg=`GetResource "msgConfigFileNotFound"`
		printf "${msg}" "${ConfigFile}"
		return
	fi
	
	if cat "${ConfigFile}" | grep -qe "^noconfig"
	then
		msg=`GetResource "msgNoconfigDetected"`
		printf "${msg}" "${ConfigFile}"
		return
	fi
	
	ProxyPID=`Get3proxyPID`
	
	if [ ! -z "${ProxyPID}" ]
	then
		msg=`GetResource "msg3proxyAlreadyRunning"`
		printf "${msg}" "${ProxyPID}"
		return
	fi
	
	3proxy "${ConfigFile}"
	sleep 1
	
	ProxyPID=`Get3proxyPID`
	
	if [ ! -f "${PidFile}" ] 
	then
		msg=`GetResource "msg3proxyStartProblems"`
		printf "${msg}"
		return
	fi
	
	if [ `cat "${PidFile}"` != "${ProxyPID}" ]
	then
		msg=`GetResource "msg3proxyStartProblems"`
		printf "${msg}"
		return
	fi
	
	msg=`GetResource "msg3proxyStartedSuccessfully"`
	printf "${msg}" `date +%d-%m-%Y" "%H:%M:%S` "${ProxyPID}"

}

Stop()
{
	local msg
	local ProxyPID
	
	ProxyPID=`Get3proxyPID`
	
	if [ -f "${PidFile}" ] 
	then
		if [ `cat "${PidFile}"` = "${ProxyPID}" ]
		then
			kill -9 "${ProxyPID}"
			rm -f "${PidFile}"
			
			msg=`GetResource "msg3proxyStoppedSuccessfully"`
			printf "${msg}" `date +%d-%m-%Y" "%H:%M:%S`
			
			return
		fi
	fi
	
	if [ -z "${ProxyPID}" ]
	then
		msg=`GetResource "msg3proxyProxyNotDetected"`
		printf "${msg}"
		
		return
	fi
	
	pkill -o 3proxy
	
	msg=`GetResource "msg3proxyStoppedByKillall"`
	printf "${msg}" `date +%d-%m-%Y" "%H:%M:%S` "${PidFile}"
	
}

Status()
{
	local msg
	local ProxyPID
	
	if [ -f "${PidFile}" ] 
	then
		msg=`GetResource "msgPidFileExists"`
		printf "${msg}" "${PidFile}" `cat "${PidFile}"`
	else
		msg=`GetResource "msgPidFileNotExists"`
		printf "${msg}" "${PidFile}"
	fi
	
	ProxyPID=`Get3proxyPID`
	
	if [ ! -z  "${ProxyPID}" ]
	then
		msg=`GetResource "msg3proxyProcessDetected"`
		printf "${msg}"
		ps -ef | awk '$8 ~ /^3proxy/ { print "User: " $1 "\tPID: " $2 }'
	else
		msg=`GetResource "msg3proxyProcessNotDetected"`
		printf "${msg}"
	fi
}

ShowHelp()
{
	local msg
	
	msg=`GetResource "msg3proxyHelp"`
	printf "${msg}" "${ScriptFullName}" "${ScriptName}"
}

Get3proxyPID()
{
	ps -ef | awk '$8 ~ /^3proxy/ { print $2; exit }'
}

LoadResources()
{
	local StartRow
	local EndRow
	local LngLabel
	local msgResourceErr="\aError! Script could not find resources!"
	
	if env | grep -q 'LANG=ru_RU.UTF-8' 
	then
		LngLabel="RU"
	else
		LngLabel="EN"
	fi
	
	StartRow=`cat "${ScriptFullName}" | awk "/^#Resources_${LngLabel}/ { print NR; exit}"`
	
	if [ -z "${StartRow}" ]
	then
		echo -e "${msgResourceErr}"
		exit 255
	fi
	
	EndRow=`cat "${ScriptFullName}" | awk "NR > ${StartRow} && /^#Resources_${LngLabel}_end/ { print NR; exit}"`
	
	if [ -z "${EndRow}" ]
	then
		echo -e "${msgResourceErr}"
		exit 255
	fi
	
	ResourcesData=`cat "${ScriptFullName}" | awk -v StartRow="${StartRow}" -v EndRow="${EndRow}" 'NR > StartRow && NR < EndRow { print $0 }'`
}

# $1 - Name of Resource
GetResource()
{
	local StartRow
	local EndRow
	local msgResourceErr="\aError! Script could not find resource \"${1}\"!"
	
	StartRow=`echo "${ResourcesData}" | awk "/^#Resource=${1}/ { print NR; exit}"`
	
	if [ -z "${StartRow}" ]
	then
		echo -e "${msgResourceErr}" > /dev/stderr
		exit 255
	fi
	
	EndRow=`echo "${ResourcesData}" | awk "NR > ${StartRow} && /^#endResource=${1}/ { print NR; exit}"`
	
	if [ -z "${EndRow}" ]
	then
		echo -e "${msgResourceErr}" > /dev/stderr
		exit 255
	fi
	
	echo "${ResourcesData}" | awk -v StartRow="${StartRow}" -v EndRow="${EndRow}" 'NR > StartRow && NR < EndRow { print $0 }'
}


main $@
exit 0;

#Resources_EN

#Resource=msg3proxyHelp
Usage:
\t%s {start|stop|restart}
or
\tservice %s {start|stop|restart|status}\\n
#endResource=msg3proxyHelp

#Resource=msgConfigFileNotFound
\a3proxy configuration file - "%s" is not found!\\n
#endResource=msgConfigFileNotFound

#Resource=msgNoconfigDetected
Parameter "noconfig" found in 3proxy configuration file -
"% s" !
To run 3proxy this parameter should be disabled.\\n
#endResource=msgNoconfigDetected

#Resource=msg3proxyAlreadyRunning
\a3proxy already running PID: %s\\n
#endResource=msg3proxyAlreadyRunning

#Resource=msg3proxyStartProblems
With the start of 3proxy, something is wrong! 
Use: service 3proxy status\\n
#endResource=msg3proxyStartProblems

#Resource=msg3proxyStartedSuccessfully
[ %s %s ] 3proxy started successfully! PID: %s\\n
#endResource=msg3proxyStartedSuccessfully

#Resource=msg3proxyStoppedSuccessfully
[ %s %s ] 3proxy stopped successfully!\\n
#endResource=msg3proxyStoppedSuccessfully

#Resource=msg3proxyProxyNotDetected
Process "3proxy" is not detected!\\n
#endResource=msg3proxyProxyNotDetected

#Resource=msg3proxyStoppedByKillall
[ %s %s ] Command "pkill -o 3proxy" was executed,
because process number was not stored in "%s",
but in fact 3proxy was runned!\\n
#endResource=msg3proxyStoppedByKillall

#Resource=msgPidFileExists
File "%s" exists. It contains the PID: %s\\n
#endResource=msgPidFileExists

#Resource=msgPidFileNotExists
File "%s" not found, that is, PID 3proxy was not stored!\\n
#endResource=msgPidFileNotExists

#Resource=msg3proxyProcessDetected
Process 3proxy detected:\\n
#endResource=msg3proxyProcessDetected

#Resource=msg3proxyProcessNotDetected
Processes of 3proxy is not found!\\n
#endResource=msg3proxyProcessNotDetected

#Resources_EN_end


#Resources_RU

#Resource=msg3proxyHelp
Используйте:
\t%s {start|stop|restart}
или
\tservice %s {start|stop|restart|status}\\n
#endResource=msg3proxyHelp

#Resource=msgConfigFileNotFound
\aФайл конфигурации 3proxy - "%s", не найден!\\n
#endResource=msgConfigFileNotFound

#Resource=msgNoconfigDetected
\aОбнаружен параметр "noconfig" в файле конфигурации 3proxy -
"%s" !
Для запуска 3proxy этот параметр нужно отключить.\\n
#endResource=msgNoconfigDetected

#Resource=msg3proxyAlreadyRunning
\a3proxy уже запущен PID: %s\\n
#endResource=msg3proxyAlreadyRunning

#Resource=msg3proxyStartProblems
\aСо стартом 3proxy, что-то не так!
Используйте: service 3proxy status\\n
#endResource=msg3proxyStartProblems

#Resource=msg3proxyStartedSuccessfully
[ %s %s ] 3proxy успешно стартовал! PID: %s\\n
#endResource=msg3proxyStartedSuccessfully

#Resource=msg3proxyStoppedSuccessfully
[ %s %s ] 3proxy успешно остановлен!\\n
#endResource=msg3proxyStoppedSuccessfully

#Resource=msg3proxyProxyNotDetected
Процесс "3proxy" не обнаружен!\\n
#endResource=msg3proxyProxyNotDetected

#Resource=msg3proxyStoppedByKillall
[ %s %s ] Выполнена команда "pkill -o 3proxy",
т.к. номер процесса не записан в "%s",
но по факту 3proxy рабатал!\\n
#endResource=msg3proxyStoppedByKillall

#Resource=msgPidFileExists
Файл "%s" есть. Он содержит PID: %s\\n
#endResource=msgPidFileExists

#Resource=msgPidFileNotExists
Файл "%s" не найден, т.е. PID 3proxy не был сохранён!\\n
#endResource=msgPidFileNotExists

#Resource=msg3proxyProcessDetected
Обнаружен процесс 3proxy:\\n
#endResource=msg3proxyProcessDetected

#Resource=msg3proxyProcessNotDetected
Процессов 3proxy не обнаружено!\\n
#endResource=msg3proxyProcessNotDetected

#Resources_RU_end
#endResource=InitScript
