Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
Skrill0 authored Sep 19, 2023
1 parent b2775f4 commit a6a0188
Show file tree
Hide file tree
Showing 5 changed files with 107 additions and 82 deletions.
2 changes: 1 addition & 1 deletion _xkeen/01_info/01_info_variable.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ register_dir="/opt/lib/opkg/info"
status_file="/opt/lib/opkg/status"
releases_dir="/opt/releases"
app_name=Xkeen
xkeen_current_version="0.8"
xkeen_current_version="0.8.2"

# -------------------------------------
# Определение временных значений
Expand Down
130 changes: 79 additions & 51 deletions _xkeen/02_install/07_install_register/01_register_xray.sh
Original file line number Diff line number Diff line change
Expand Up @@ -104,24 +104,40 @@ Installed-Time: $(date +%s)"
# Функция для создания или обновления инициализационного скрипта для Xray
register_xray_initd() {
local initd_file="$initd_dir/S24xray"

local s24xray_filename="${current_datetime}_S24xray"

# Проверяем наличие файла S24xray
if [ -e "$initd_file" ]; then
local current_content="$(cat "$initd_file")"
local script_version=$(grep 'version=' "$initd_file" | grep -o '[0-9.]\+')

if [ "$script_version" != "0.5" ]; then
local backup_path="$backups_dir/$s24xray_filename"

# Перемещаем файл в каталог резервных копий с новым именем
mv "$initd_file" "$backup_path"

echo -e " Ваш файл «${green}S24xray${reset}» перемещен в каталог резервных копий «${yellow}$backup_path${reset}»"
fi
fi

local script_content='#!/bin/sh
### Начало информации о службе
# Краткое-описание: Запуск / Остановка Xray
# Краткое-описание: Запуск / Остановка Xray
# version="0.5" # Версия скрипта
### Конец информации о службе
green="\033[32m"
red="\033[31m"
yellow="\033[33m"
reset="\033[0m"
reset="\033[0m"
xkeen_info_log="/opt/var/log/xkeen/info.log"
xkeen_error_log="/opt/var/log/xkeen/error.log"
path=/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin
xray_path=xray
xray_config=/opt/etc/xray/configs
pidfile=/opt/var/run/xray.pid
app_name=Xkeen
export XRAY_LOCATION_ASSET=/opt/etc/xray/dat/
Expand All @@ -132,55 +148,80 @@ log_notice_init(){
logger -p notice -t "${header}" "${1}"
}
log_error_init(){
local header=${app_name}
logger -p error -t "${header}" "${1}"
}
# Функция для проверки статуса xray
xray_status()
{
if [ -f $pidfile ]; then
local pid=$(cat $pidfile)
if [ -d /proc/$pid ]; then
return 0 # Процесс существует и работает
else
return 1 # Процесс не существует
fi
if pgrep -f "$xray_path run -confdir $xray_config" > /dev/null; then
return 0 # Процесс существует и работает
else
return 1 # pid файл отсутствует
return 1 # Процесс не существует
fi
}
# Функция для запуска xray
# Функция для запуска xray | Особая благодарность jameszero
start()
{
log_notice_init "Инициирован запуск Xray"
if xray_status; then
echo -e " Xray уже ${green}запущен${reset}"
log_notice_init "Не удалось запустить Xray, так как он уже запущен"
echo "" >> "$xkeen_error_log"
echo "[start] Проверка статуса Xray" >> "$xkeen_error_log"
echo " [error] Xray уже запущен" >> "$xkeen_error_log"
echo "[end] Проверка статуса Xray выполнена" >> "$xkeen_error_log"
echo "" >> "$xkeen_error_log"
else
$xray_path run -confdir $xray_config &
echo $! > $pidfile
echo -e " Xray ${green}запущен${reset}"
log_notice_init "Xray запущен"
echo "" >> "$xkeen_info_log"
echo "[end] Проверка статуса Xray" >> "$xkeen_info_log"
echo " [info] Xray запущен" >> "$xkeen_info_log"
echo "[end] Проверка статуса Xray выполнена" >> "$xkeen_info_log"
echo "" >> "$xkeen_info_log"
fi
log_notice_init "Инициирован запуск Xray"
max_retries=3 # Максимальное количество попыток запуска
retries=0
while [ $retries -lt $max_retries ]; do
if xray_status; then
echo -e " Xray уже ${green}запущен${reset}"
log_notice_init "Не удалось запустить Xray, так как он уже запущен"
echo "" >> "$xkeen_error_log"
echo "[start] Проверка статуса Xray" >> "$xkeen_error_log"
echo " [error] Xray уже запущен" >> "$xkeen_error_log"
echo "[end] Проверка статуса Xray выполнена" >> "$xkeen_error_log"
echo "" >> "$xkeen_error_log"
return 0 # Прерываем цикл, так как Xray уже запущен
else
$xray_path run -confdir $xray_config &
sleep 10
if xray_status; then
echo -e " Xray ${green}запущен${reset}"
log_notice_init "Xray запущен"
echo "" >> "$xkeen_info_log"
echo "[end] Проверка статуса Xray" >> "$xkeen_info_log"
echo " [info] Xray запущен" >> "$xkeen_info_log"
echo "[end] Проверка статуса Xray выполнена" >> "$xkeen_info_log"
echo "" >> "$xkeen_info_log"
return 0 # Прерываем цикл, так как Xray успешно запущен
else
retries=$((retries + 1))
echo -e " Попытка повторного запуска Xray: $retries из $max_retries"
log_notice_init "Попытка повторного запуска Xray: $retries из $max_retries"
sleep 10
fi
fi
done
# Если достигнуто максимальное количество попыток и Xray не запущен, выводим ошибку
echo -e " Не удалось запустить Xray после $max_retries попыток"
log_error_init "Не удалось запустить Xray после $max_retries попыток"
echo "" >> "$xkeen_error_log"
echo "[start] Проверка статуса Xray" >> "$xkeen_error_log"
echo " [error] Не удалось запустить Xray после $max_retries попыток" >> "$xkeen_error_log"
echo "[end] Проверка статуса Xray выполнена" >> "$xkeen_error_log"
echo "" >> "$xkeen_error_log"
}
# Функция для остановки xray
stop()
{
log_notice_init "Инициирована остановка Xray"
if xray_status; then
kill "$(cat $pidfile)"
rm -f $pidfile
killall -q -9 "$xray_path"
echo -e " Xray ${yellow}остановлен${reset}"
log_notice_init "Xray остановлен"
Expand All @@ -191,7 +232,7 @@ stop()
echo "" >> "$xkeen_info_log"
else
echo -e " Xray ${red}не запущен${reset}"
log_notice_init "Остановка Xray не удалась. Xray не был запущен"
log_error_init "Остановка Xray не удалась. Xray не был запущен"
echo "" >> "$xkeen_error_log"
echo "[start] Проверка статуса Xray" >> "$xkeen_error_log"
Expand All @@ -201,15 +242,6 @@ stop()
fi
}
# Функция для ожидания завершения процесса
wait_for_process()
{
local pid=$1
while [ -d /proc/$pid ]; do
sleep 1
done
}
# Обработка аргументов командной строки
case "$1" in
start)
Expand Down Expand Up @@ -239,10 +271,6 @@ case "$1" in
;;
restart)
stop > /dev/null 2>&1
if [ -f $pidfile ]; then
local pid=$(cat $pidfile)
wait_for_process "$pid"
fi
start > /dev/null 2>&1
echo -e " Xray ${green}перезапущен${reset}"
;;
Expand Down
41 changes: 19 additions & 22 deletions _xkeen/02_install/07_install_register/03_register_cron.sh
Original file line number Diff line number Diff line change
@@ -1,20 +1,27 @@
register_cron_initd() {
local initd_file="$initd_dir/S05crond"
local s05crond_filename="${current_datetime}_S05crond"
local required_script_version="0.3"

# Проверяем наличие файла S05crond
if [ -e "$initd_file" ]; then
local backup_path="$backups_dir/$s05crond_filename"
local current_content="$(cat "$initd_file")"
local script_version=$(grep 'version=' "$initd_file" | grep -o '[0-9.]\+')

# Перемещаем файл в каталог резервных копий с новым именем
mv "$initd_file" "$backup_path"
if [ "$script_version" != "$required_script_version" ]; then
local backup_path="$backups_dir/$s05crond_filename"

echo -e "Ваш файл «${green}S05crond${reset}» перемещен в каталог резерных копий «${yellow}$backup_path${reset}»"
# Перемещаем файл в каталог резервных копий с новым именем
mv "$initd_file" "$backup_path"

echo -e " Ваш файл «${green}S05crond${reset}» перемещен в каталог резервных копий «${yellow}$backup_path${reset}»"
fi
fi

local script_content='#!/bin/sh
local script_content='#!/bin/sh
### Начало информации о службе
# Краткое описание: Запуск / Остановка Cron
# version="0.3" # Версия скрипта
### Конец информации о службе
green="\033[32m"
Expand All @@ -23,19 +30,13 @@ yellow="\033[33m"
reset="\033[0m"
cron_initd="/opt/sbin/crond"
cron_pidfile="/opt/var/run/crond.pid" # Путь к файлу с PID процесса Cron
# Функция для проверки статуса cron
cron_status() {
if [ -e "$cron_pidfile" ]; then
local pid=$(cat "$cron_pidfile")
if [ -d "/proc/$pid" ]; then
return 0 # Процесс существует и работает
else
return 1 # Процесс не существует
fi
if ps | grep -v grep | grep -q "$cron_initd"; then
return 0 # Процесс существует и работает
else
return 1 # PID-файл отсутствует
return 1 # Процесс не существует
fi
}
Expand All @@ -46,15 +47,13 @@ start() {
else
$cron_initd -L /dev/null
echo -e " Cron ${green}запущен${reset}"
echo $$ > "$cron_pidfile" # Сохраняем PID текущего процесса в файл
fi
}
# Функция для остановки cron
stop() {
if cron_status; then
kill $(cat "$cron_pidfile")
rm "$cron_pidfile" # Удаляем PID-файл после остановки
killall -9 "crond"
echo -e " Cron ${yellow}остановлен${reset}"
else
echo -e " Cron ${red}не запущен${reset}"
Expand Down Expand Up @@ -95,10 +94,8 @@ exit 0
'

# Создание или замена файла
if [ -e "$initd_file" ]; then
rm "$initd_file"
if [ "$script_version" != "$required_script_version" ]; then
echo -e "$script_content" > "$initd_file"
chmod +x "$initd_file"
fi

echo -e "$script_content" > "$initd_file"
chmod +x "$initd_file"
}
12 changes: 6 additions & 6 deletions _xkeen/04_tools/01_tools_logs/03_logs_xkeen.sh
Original file line number Diff line number Diff line change
Expand Up @@ -975,13 +975,13 @@ logs_delete_geoip_info_xkeen() {
if [ -f "$geo_dir/geoip_antifilter.dat" ]; then
info_content="${info_content}\t[info] Файл geoip_antifilter.dat отсутствует в директории «$geo_dir»\n"
else
error_content="${error_content}\t[error] Файл geoip_antifilter.dat не удален\n"
error_content="${error_content}\t[error] Файл geoip_antifilter.dat не удален. Возможно его и не было в процессе установки\n"
fi

if [ -f "$geo_dir/geoip_v2fly.dat" ]; then
info_content="${info_content}\t[info] Файл geoip_v2fly.dat отсутствует в директории «$geo_dir»"
else
error_content="${error_content}\t[error] Файл geoip_v2fly.dat не удален"
error_content="${error_content}\t[error] Файл geoip_v2fly.dat не удален. Возможно его и не было в процессе установки"
fi

if [ -n "$error_content" ]; then
Expand All @@ -1008,19 +1008,19 @@ logs_delete_geosite_info_xkeen() {
if [ -f "$geo_dir/geosite_antifilter.dat" ]; then
info_content="${info_content}\t[info] Файл geosite_antifilter.dat отсутствует в директории «$geo_dir»\n"
else
error_content="${error_content}\t[error] Файл geosite_antifilter.dat не удален\n"
error_content="${error_content}\t[error] Файл geosite_antifilter.dat не удален. Возможно его и не было в процессе установки\n"
fi

if [ -f "$geo_dir/geosite_antizapret.dat" ]; then
info_content="${info_content}\t[info] Файл geosite_antizapret.dat отсутствует в директории «$geo_dir»\n"
else
error_content="${error_content}\t[error] Файл geosite_antizapret.dat не удален\n"
error_content="${error_content}\t[error] Файл geosite_antizapret.dat не удален. Возможно его и не было в процессе установки\n"
fi

if [ -f "$geo_dir/geosite_v2fly.dat" ]; then
info_content="${info_content}\t[info] Файл geosite_v2fly.dat отсутствует в директории «$geo_dir»"
else
error_content="${error_content}\t[error] Файл geosite_v2fly.dat не удален\n"
error_content="${error_content}\t[error] Файл geosite_v2fly.dat не удален. Возможно его и не было в процессе установки\n"
fi

if [ -n "$error_content" ]; then
Expand Down Expand Up @@ -2078,7 +2078,7 @@ logs_file_check_xkeen_xkeen() {
info_content="$info_content\t[info] Файл «00_tools_import.sh» найден\n"
fi

if [ ! -f "/opt/sbin/.xkeen/04_tools/06_tools_archive.sh" ]; then
if [ ! -f "/opt/sbin/.xkeen/04_tools/05_tools_archive.sh" ]; then
error_content="$error_content\t[error] Файл «05_tools_archive.sh» не найден\n"
else
info_content="$info_content\t[info] Файл «05_tools_archive.sh» найден\n"
Expand Down
4 changes: 2 additions & 2 deletions _xkeen/05_tests/02_tests_xports.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ tests_ports_xray() {
local listening_ports_udp
local output=" Xray ${green}слушает${reset}"

listening_ports_tcp=$(netstat -ltunp | grep LISTEN | grep "$app_name" | grep "tcp")
listening_ports_udp=$(netstat -ltunp | grep LISTEN | grep "$app_name" | grep "udp")
listening_ports_tcp=$(netstat -ltunp | grep "$app_name" | grep "tcp")
listening_ports_udp=$(netstat -ltunp | grep "$app_name" | grep "udp")

if [ -n "$listening_ports_tcp" ] || [ -n "$listening_ports_udp" ]; then
local printed=false
Expand Down

0 comments on commit a6a0188

Please sign in to comment.