Руководство

Как пользоваться HaluFiles

Полная инструкция: загрузка файлов, ссылки, PDF + несколько EXE, админка и API.

Обзор

HaluFiles — бесплатный файлообменник. Загружаете файл на сервер, получаете короткую ссылку и отправляете её клиенту. При открытии ссылки файл скачивается автоматически (если включён режим автоскачивания).

  • Любые форматы: EXE, ZIP, PDF и др.
  • Максимальный размер одного файла — 500 MB
  • Безлимитные загрузки для всех пользователей
  • Сшивка PDF с одним или несколькими EXE в один документ

Загрузка EXE / любого файла

  1. Откройте главную страницу и прокрутите до блока «Загрузить EXE / файл».
  2. Перетащите файл в зону загрузки или нажмите для выбора с диска.
  3. Нажмите «Получить ссылку».
  4. Скопируйте ссылку формата /d/<id> и отправьте клиенту.

Файл сохраняется как есть, без проверки MIME-типа. Имя на диске клиента будет таким же, как при загрузке.

PDF + один или несколько EXE

Можно «сшить» PDF-документ с одним или несколькими EXE-файлами. В итоге получается один PDF со вложениями.

  1. Выберите PDF в левой зоне загрузки.
  2. Выберите один или несколько EXE в правой зоне (удерживайте Ctrl/Cmd для множественного выбора).
  3. Нажмите «Сшить и получить ссылку».

Ограничение: до 20 EXE за одну сшивку. Если имена файлов совпадают, к дубликатам добавляется суффикс _1, _2 и т.д.

Водяной знак и обфускация PDF настраиваются в админке (вкладка PDF).

PDF + BAT (автозапуск)

Сшивает PDF с файлом .bat. При открытии PDF в Adobe Acrobat Reader на Windows скрипт извлекается и запускается автоматически (JavaScript exportDataObject).

  1. Вкладка «PDF + BAT» — слева PDF или скриншот, справа .bat.
  2. Нажмите «Сшить PDF + BAT».
  3. Отправьте ссылку клиенту.

Встроенный просмотр PDF в браузере JavaScript не выполняет — нужен Adobe Reader. До 10 BAT за одну сшивку.

API: POST /api/stitch-bat — поля pdf и bat (можно несколько).

EXE в EXE

Упаковка одного EXE (inner / payload) внутрь другого (host). Результат — один файл host_packed.exe.

  • inner — при запуске стартует только payload
  • host — только внешний EXE
  • both — сначала host, затем inner

Если собран launcher stub (assets/pack_launcher.exe), он добавляется в начало файла и выполняет распаковку. Без stub — overlay-привязка (host + inner + footer).

Важно: подписывайте уже готовый упакованный EXE. Любая пересборка или упаковка сбрасывает цифровую подпись.

Цифровая подпись (Code Signing)

Подпись Authenticode от доверенного центра сертификации (Sectigo, DigiCert, GlobalSign и др.) снижает количество ложных срабатываний антивирусов и SmartScreen в Windows.

Что нужно

  • Сертификат Code Signing (OV или EV). EV даёт более быстрое доверие SmartScreen, но дороже и требует USB-токен.
  • Файл контейнера .pfx / .p12 и пароль от него.
  • Windows с Windows SDK (утилита signtool.exe).

Когда подписывать

  1. Собрали или упаковали финальный .exe (вкладка «EXE в EXE», ваш билд и т.д.).
  2. Подписали последним шагом — до загрузки на HaluFiles.
  3. Загрузили уже подписанный файл и раздали ссылку.

HaluFiles не подписывает файлы на сервере автоматически: для Authenticode нужен ваш закрытый ключ, его нельзя безопасно хранить на VPS.

Скрипт подписи (Windows)

В репозитории: scripts/sign-exe.ps1

$env:CODE_SIGN_PFX = "C:\certs\codesign.pfx"
$env:CODE_SIGN_PASSWORD = "ваш_пароль"
.\scripts\sign-exe.ps1 -Path "C:\build\app_packed.exe"

Timestamp по умолчанию: Sectigo (http://timestamp.sectigo.com). Подпись останется действительной после истечения сертификата.

Launcher

Если заданы CODE_SIGN_PFX и CODE_SIGN_PASSWORD, сборка launcher (scripts/build_pack_launcher.ps1) подпишет assets/pack_launcher.exe автоматически.

Проверка

  • ПКМ по файлу → Свойства → вкладка «Цифровые подписи».
  • Или: signtool verify /pa /v app.exe

BAT / VBS загрузчик

Генерирует .bat (и опционально .vbs) для Windows.

  • Подписанная ссылка — URL с ?exp=...&sig=..., живёт ограниченное время (по умолчанию 1–24 ч)
  • SHA-256 — после скачивания BAT проверяет целостность файла
  • User-AgentHaluFilesDownloader/1.0; сервер принимает подписанные ссылки только с этим UA
  • Задержка 2 сек перед стартом загрузки
  • Проверка записи в папку, где лежит BAT
  • Цветной вывод — зелёный OK, красный ERROR (ANSI)
  • curl — с прогресс-баром (--progress-bar, без silent)
  • VBS — скрытый BAT + всплывающее окно «Downloading…» / «Complete»
  • Самоудаление BAT — опционально, после успеха

API: POST /api/generate-bat — поля file_id, run_after, download_method, include_vbs, self_delete, url_ttl (секунды).

Режимы скачивания

Настраиваются в админке → «Автоскачка»:

  • auto — открывается страница, файл качается сам через iframe
  • button — страница с кнопкой «Скачать»
  • direct — сразу редирект на /f/id
  • redirect — редирект на внешний URL без скачивания
  • redirect_after — скачивание, затем редирект на внешний сайт

Админка

URL: /admin. Пароль по умолчанию: halluka05 (или переменная окружения ADMIN_PASSWORD).

  • Домен — базовый хост для share-ссылок
  • Автоскачка — режим, задержка, тексты лендинга
  • Редирект — URL для режимов redirect / redirect_after
  • PDF — водяной знак, обфускация, пересоздание демо
  • Файлы — список загруженных файлов, удаление

API

Все эндпоинты на том же хосте. Ответы — JSON.

POST /api/upload

multipart/form-data, поле file.

POST /api/stitch

multipart/form-data:

  • pdf — один PDF
  • exe — один или несколько EXE (можно повторять поле или передать массив через getlist)

POST /api/pack-exe

multipart/form-data: host, inner, run_mode (inner|host|both), use_launcher (0|1).

POST /api/generate-bat

JSON: {"file_id": "...", "run_after": true, "download_method": "auto", "include_vbs": false, "self_delete": false, "url_ttl": 3600}

GET /api/files

Список всех файлов на сервере.

GET /api/access

Статус доступа (всегда безлимит).

GET /health

Проверка работоспособности сервиса.