Skip to content

Commit

Permalink
Dev (#5)
Browse files Browse the repository at this point in the history
* Update Config.class.php

* Update Mirror.class.php

* Update Config.class.php

* Update Mirror.class.php

* Update Mirror.class.php

* Update Mirror.class.php

* Update Mirror.class.php

* Update Config.class.php

* Update Mirror.class.php

* Update
  • Loading branch information
marat2509 authored Mar 5, 2024
1 parent f4cf1da commit 015f3b7
Show file tree
Hide file tree
Showing 7 changed files with 78 additions and 48 deletions.
9 changes: 9 additions & 0 deletions nod32ms.conf
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,15 @@ debug_update = 0
; Path to your www directory where eset mirror files will be located.
web_dir = "www"

; Method for linking files
; auto - autodetect for current OS
; hardlink_php - link() php function for create hard link
; hardlink_fsutil - WinNT fsutil for create hard link
; hardlink_ln - Unix ln for create hard link
; symlink_php - symlink() php function for create symbolic link
; symlink_ln - Unix ln for create symbolic link
link_method = "auto"

; Generate index.html file and put it into the root of www directory.
; It will have: correct database version, size and date of successful update.
generate_html = 1
Expand Down
75 changes: 39 additions & 36 deletions worker/core/inc/classes/Config.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -170,45 +170,48 @@ static private function check_config()

if (!is_writable(static::$CONF['SCRIPT']['web_dir'])) throw new ConfigException("Web directory is not writable. Check your permissions!");

// Link test
$linktestfile = Tools::ds(static::$CONF['LOG']['dir'], LINKTEST);
$test = false;
$status = false;

if (file_exists($linktestfile)) {
$status = file_get_contents($linktestfile);

if (preg_match("/link|fsutil|false/", $status)) $test = true;
}
if ($test == false) {
file_put_contents(Tools::ds(static::$CONF['SCRIPT']['web_dir'], 'linktest'), '');

if (
function_exists('link') &&
symlink(
Tools::ds(static::$CONF['SCRIPT']['web_dir'], 'linktest'),
Tools::ds(static::$CONF['SCRIPT']['web_dir'], 'linktest2')
)
) {
$status = 'link';
} elseif (
preg_match("/^win/i", PHP_OS) &&
shell_exec(
sprintf(
"fsutil hardlink create %s %s",
if (empty(static::$CONF['SCRIPT']['link_method']) || static::$CONF['SCRIPT']['link_method'] == "auto") {
// Link test
$linktestfile = Tools::ds(static::$CONF['LOG']['dir'], LINKTEST);
$test = false;
$status = false;

if (file_exists($linktestfile)) {
$status = file_get_contents($linktestfile);

if (preg_match("/symlink_php|hardlink_fsutil|false/", $status)) $test = true;
}
if ($test == false) {
file_put_contents(Tools::ds(static::$CONF['SCRIPT']['web_dir'], 'linktest'), '');

if (
function_exists('symlink') &&
symlink(
Tools::ds(static::$CONF['SCRIPT']['web_dir'], 'linktest'),
Tools::ds(static::$CONF['SCRIPT']['web_dir'], 'linktest2'))
) != 0
) {
$status = 'fsutil';
} else $status = 'false';

if ($status) unlink(Tools::ds(static::$CONF['SCRIPT']['web_dir'], 'linktest2'));

unlink(Tools::ds(static::$CONF['SCRIPT']['web_dir'], 'linktest'));
@file_put_contents($linktestfile, $status);
Tools::ds(static::$CONF['SCRIPT']['web_dir'], 'linktest2')
)
) {
$status = 'symlink_php';
} elseif (
preg_match("/^win/i", PHP_OS) &&
shell_exec(
sprintf(
"fsutil hardlink create %s %s",
Tools::ds(static::$CONF['SCRIPT']['web_dir'], 'linktest'),
Tools::ds(static::$CONF['SCRIPT']['web_dir'], 'linktest2'))
) != 0
) {
$status = 'hardlink_fsutil';
} else $status = 'false';

if ($status) unlink(Tools::ds(static::$CONF['SCRIPT']['web_dir'], 'linktest2'));

unlink(Tools::ds(static::$CONF['SCRIPT']['web_dir'], 'linktest'));
@file_put_contents($linktestfile, $status);
}
static::$CONF['SCRIPT']['link_method'] = ($status != 'false' ? $status : false);
}
static::$CONF['create_hard_links'] = ($status != 'false' ? $status : false);
}

/**
Expand Down
20 changes: 16 additions & 4 deletions worker/core/inc/classes/Mirror.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -649,15 +649,27 @@ static public function create_links($dir, $new_files)

if (!file_exists($res)) mkdir($res, 0755, true);

switch (Config::get('create_hard_links')) {
case 'link':
symlink($result, $path);
switch (Config::get('SCRIPT')['link_method']) {
case 'hardlink_php':
link($result, $path);
Log::write_log(Language::t("Created hard link for %s", basename($array['file'])), 3, static::$version);
break;
case 'fsutil':
case 'hardlink_fsutil':
shell_exec(sprintf("fsutil hardlink create %s %s", $path, $result));
Log::write_log(Language::t("Created hard link for %s", basename($array['file'])), 3, static::$version);
break;
case 'hardlink_ln':
shell_exec(sprintf("ln -f %s %s", $result, $path));
Log::write_log(Language::t("Created hard link for %s", basename($array['file'])), 3, static::$version);
break;
case 'symlink_php':
symlink($result, $path);
Log::write_log(Language::t("Created symbolic link for %s", basename($array['file'])), 3, static::$version);
break;
case 'symlink_ln':
shell_exec(sprintf("ln -fs %s %s", $result, $path));
Log::write_log(Language::t("Created symbolic link for %s", basename($array['file'])), 3, static::$version);
break;
case 'copy':
default:
copy($result, $path);
Expand Down
8 changes: 5 additions & 3 deletions worker/core/langpacks/en.lng
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ Incorrect value of self_update parameter. Must be 0, 1 or 2!
Language file [%s.lng] does not exist!
Language file [%s] is corrupted!
Created hard link for %s
Created symbolic link for %s
Copied file %s
From %s downloaded %s [%s] [%s/s]
Error download url %s
Expand All @@ -38,14 +39,14 @@ Run script %s
Total working time: %s
Stop script.
Keys file is empty!
Use valid key [%s:%s] Expiration date %s
Use valid key [%s:%s]
Invalid key [%s:%s]
Unhandled exception [%s]
No working keys were found!
Link wasn't found [%s]
Link was found [%s]
Found keys: %s
Found valid key [%s:%s] Expiration date %s
Found valid key [%s:%s]
Found invalid key [%s:%s]
Found links: %s
Begining search at %s
Expand Down Expand Up @@ -81,7 +82,8 @@ Validating key [%s:%s] for version %s
The script has been stopped!
Checking mirror %s with key [%s:%s]
Extracting file %s to %s
Key [%s:%s:%s:%s] already exists
Key [%s:%s:%s] already exists
Key [%s:%s] already exists
Found expired key [%s:%s] Expiration date %s
Downloading %s [%s Bytes]
Error while downloading file %s [%s]
Expand Down
6 changes: 4 additions & 2 deletions worker/core/langpacks/ru.lng
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ Web каталог без доступа на запись. Проверьте
Файл локализации [%s.lng] не существует!
Файл локализации [%s] повреждён!
Создана жесткая ссылка для %s
Создана символическая ссылка для %s
Скопирован файл %s
С %s загружено %s [%s] [%s/s]
Ошибка загрузки файла %s
Expand All @@ -45,7 +46,7 @@ Web каталог без доступа на запись. Проверьте
Ссылка не найдена [%s]
Найдена ссылка [%s]
Найдено ключей: %s
Найден действующий ключ [%s:%s] Срок действия %s
Найден действующий ключ [%s:%s]
Найден не действующий ключ [%s:%s]
Найдено ссылок: %s
Начат поиск в %s
Expand Down Expand Up @@ -81,7 +82,8 @@ Web каталог без доступа на запись. Проверьте
Скрипт будет остановлен!
Проверка зеркала %s с ключом [%s:%s]
Распаковка файла %s в %s
Ключ [%s:%s:%s:%s] уже существует
Ключ [%s:%s:%s] уже существует
Ключ [%s:%s] уже существует
Найден просроченный ключ [%s:%s] Срок действия %s
Загрузка %s [%s Байт]
Ошибка при загрузке файла %s [%s]
Expand Down
6 changes: 4 additions & 2 deletions worker/core/langpacks/ukr.lng
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ Web каталог без доступу на запис. Перевірте в
Файл локалізації [%s.lng] не існує!
Файл локалізації [%s] ушкоджений!
Створено жорстке посилання для %s
Створено символічне посилання для %s
Скопійовано файл %s
З %s завантажено %s [%s] [%s/s]
Помилка завантаження файлу %s
Expand All @@ -45,7 +46,7 @@ Web каталог без доступу на запис. Перевірте в
Посилання не знайдено [%s]
Знайдено посилання [%s]
Знайдені ключі: %s
Знайдено діючий ключ [%s:%s] Термін дії %s
Знайдено діючий ключ [%s:%s]
Знайдено не діючий ключ [%s:%s]
Знайдено посилання: %s
Почато пошук у %s
Expand Down Expand Up @@ -81,7 +82,8 @@ ESET NOD32 сервер оновлення
Скрипт буде зупинен!
Перевірка дзеркала %s з ключом [%s:%s]
Розпаковка файлу %s в %s
Ключ [%s:%s:%s:%s] вже існує
Ключ [%s:%s:%s] вже існує
Ключ [%s:%s] вже існує
Знайдено прострочений ключ [%s:%s] Термін дії %s
Завантаження %s [%s Байт]
Помилкака при завантаженні файлу %s [%s]
Expand Down
2 changes: 1 addition & 1 deletion worker/entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ if [ -z "${UPDATE_INTERVAL}" ]; then
UPDATE_INTERVAL=3600
fi

watch -n $UPDATE_INTERVAL "php /app/update.php"
watch -tn $UPDATE_INTERVAL "php /app/update.php"

0 comments on commit 015f3b7

Please sign in to comment.