Skip to content
View in the app

A better way to browse. Learn more.

IPBMafia.ru - поддержка Invision Community, релизы, темы, плагины и приложения

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Zero108

Актив
  • Регистрация

  • В сети

Everything posted by Zero108

  1. Так время должно без перезагрузки страницы обновляться?
  2. Братан, мы тебя будем помнить.
  3. Немного неправильно написал. Нужно так: указав в команде правильный путь к файлу скрипта от корня сервера.
  4. Поместить скрипт в корневую директорию сайта в виде файла: #!/bin/bash # Получаем директорию, где находится сам скрипт SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" # Файл для записи даты и времени (будет создан в той же директории, что и скрипт) LOG_FILE="$SCRIPT_DIR/last_run.txt" # Записываем текущую дату и время в нужном формате date '+%Y-%m-%d %H:%M:%S' > "$LOG_FILE"Дать права на выполнение - выполнить в консоли команду, указав в команде правильный путь к файлу скрипта от корня сайта: chmod +x /путь/к/скрипту/last_run.shДобавить в крон задачу на выполнение каждую минуту: * * * * * /путь/к/скрипту/last_run.shПроверить, что скрипт запускается по крону - открыть файл last_run.txt. Вы должны увидеть что-то вроде: 2026-06-14 15:30:00 В IPS 5 можно определить права по умолчанию через файл constants.php: <?php define( 'IPS_FOLDER_PERMISSION', 0777 ); define( 'FOLDER_PERMISSION_NO_WRITE', 0755 ); define( 'IPS_FILE_PERMISSION', 0666 ); define( 'FILE_PERMISSION_NO_WRITE', 0644 ); Скрипт для проверки прав на папки и файлы: Создайте файл check_permissions.php в корневой директории вашего сайта (там же, где лежит conf_global.php). <?php /** * Скрипт проверки прав на файлы и папки IPS5 * Разместите этот файл в корневой директории сайта и запустите через браузер * После проверки УДАЛИТЕ файл с сервера! */ // Отключаем ограничение времени выполнения set_time_limit(0); // Включаем вывод всех ошибок для диагностики error_reporting(E_ALL); ini_set('display_errors', 1); echo "<!DOCTYPE html>"; echo "<html><head><meta charset='UTF-8'><title>IPS5 - Проверка прав на файлы и папки</title>"; echo "<style> body { font-family: monospace; background: #f5f5f5; padding: 20px; } .container { max-width: 1200px; margin: 0 auto; background: white; padding: 20px; border-radius: 8px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); } h1 { color: #333; border-bottom: 2px solid #eee; padding-bottom: 10px; } h2 { color: #555; margin-top: 20px; font-size: 18px; } table { width: 100%; border-collapse: collapse; margin-top: 10px; } th, td { padding: 8px 12px; text-align: left; border-bottom: 1px solid #ddd; } th { background: #f0f0f0; font-weight: bold; } .success { color: green; font-weight: bold; } .warning { color: orange; font-weight: bold; } .error { color: red; font-weight: bold; } .info { color: blue; } .summary { margin: 20px 0; padding: 15px; border-radius: 5px; } .summary.good { background: #d4edda; border: 1px solid #c3e6cb; color: #155724; } .summary.bad { background: #f8d7da; border: 1px solid #f5c6cb; color: #721c24; } .summary.warning { background: #fff3cd; border: 1px solid #ffeeba; color: #856404; } </style></head><body>"; echo "<div class='container'>"; echo "<h1> Invision Community 5 - Проверка прав на файлы и папки</h1>"; echo "<p><strong>Время проверки:</strong> " . date('Y-m-d H:i:s') . "</p>"; echo "<p><strong>Директория проверки:</strong> " . __DIR__ . "</p>"; // Определяем необходимые права для разных типов $requiredPermissions = [ // Папки, требующие права на запись 'writable_dirs' => [ 'uploads', 'datastore', 'applications', 'plugins', ], // Файлы, требующие права на запись 'writable_files' => [ 'conf_global.php', ], // Папки, которые должны быть доступны для чтения (755) 'readable_dirs' => [ 'applications', 'plugins', 'uploads', 'datastore', 'system', 'themes', ], ]; $results = [ 'total' => 0, 'success' => 0, 'warning' => 0, 'error' => 0, 'details' => [], ]; // Функция для получения прав в читаемом виде function getPermString($perms) { if (($perms & 0xC000) == 0xC000) { // Socket $info = 's'; } elseif (($perms & 0xA000) == 0xA000) { // Symbolic Link $info = 'l'; } elseif (($perms & 0x8000) == 0x8000) { // Regular $info = '-'; } elseif (($perms & 0x6000) == 0x6000) { // Block special $info = 'b'; } elseif (($perms & 0x4000) == 0x4000) { // Directory $info = 'd'; } elseif (($perms & 0x2000) == 0x2000) { // Character special $info = 'c'; } elseif (($perms & 0x1000) == 0x1000) { // FIFO pipe $info = 'p'; } else { // Unknown $info = 'u'; } // Владелец $info .= (($perms & 0x0100) ? 'r' : '-'); $info .= (($perms & 0x0080) ? 'w' : '-'); $info .= (($perms & 0x0040) ? (($perms & 0x0800) ? 's' : 'x') : (($perms & 0x0800) ? 'S' : '-')); // Группа $info .= (($perms & 0x0020) ? 'r' : '-'); $info .= (($perms & 0x0010) ? 'w' : '-'); $info .= (($perms & 0x0008) ? (($perms & 0x0400) ? 's' : 'x') : (($perms & 0x0400) ? 'S' : '-')); // Остальные $info .= (($perms & 0x0004) ? 'r' : '-'); $info .= (($perms & 0x0002) ? 'w' : '-'); $info .= (($perms & 0x0001) ? (($perms & 0x0200) ? 't' : 'x') : (($perms & 0x0200) ? 'T' : '-')); return $info; } // Функция проверки прав на папку function checkDirectory($path, $required, $results, $isWritable = true) { if (!file_exists($path)) { $results['details'][] = [ 'path' => $path, 'type' => 'directory', 'status' => 'warning', 'current' => 'не существует', 'required' => $required, 'message' => ' Папка не найдена!' ]; $results['warning']++; return $results; } $perms = fileperms($path); $permString = getPermString($perms); $permOctal = substr(sprintf('%o', $perms), -4); $isWritableActual = is_writable($path); $isReadableActual = is_readable($path); if ($isWritable) { $isOk = $isWritableActual; $requiredDesc = "должна быть записываемой (writable)"; } else { $isOk = $isReadableActual; $requiredDesc = "должна быть читаемой (readable)"; } $status = $isOk ? 'success' : 'error'; $statusText = $isOk ? ' OK' : ' ОШИБКА'; $statusClass = $isOk ? 'success' : 'error'; $results['details'][] = [ 'path' => $path, 'type' => 'directory', 'status' => $status, 'current' => "$permOctal ($permString)", 'required' => $requiredDesc, 'message' => $statusText ]; if ($isOk) { $results['success']++; } else { $results['error']++; } $results['total']++; return $results; } // Функция проверки прав на файл function checkFile($path, $requiredPerm, $results) { if (!file_exists($path)) { $results['details'][] = [ 'path' => $path, 'type' => 'file', 'status' => 'warning', 'current' => 'не существует', 'required' => $requiredPerm, 'message' => ' Файл не найден (возможно, это нормально)' ]; $results['warning']++; return $results; } $perms = fileperms($path); $permString = getPermString($perms); $permOctal = substr(sprintf('%o', $perms), -4); $isOk = false; if ($requiredPerm === 'writable') { $isOk = is_writable($path); $requiredDesc = "должен быть записываемым (writable, обычно 666)"; } elseif ($requiredPerm === 'readable') { $isOk = is_readable($path); $requiredDesc = "должен быть читаемым (readable, обычно 644)"; } elseif ($requiredPerm === 'executable') { $isOk = is_executable($path); $requiredDesc = "должен быть исполняемым (executable, обычно 755)"; } $status = $isOk ? 'success' : 'error'; $statusText = $isOk ? ' OK' : ' ОШИБКА'; $statusClass = $isOk ? 'success' : 'error'; // Для conf_global.php особая проверка if (basename($path) === 'conf_global.php') { if ($isOk) { $statusText = ' OK (файл существует и доступен для записи)'; } else { $statusText = ' ОШИБКА (файл должен быть доступен для записи, chmod 666)'; } } $results['details'][] = [ 'path' => $path, 'type' => 'file', 'status' => $status, 'current' => "$permOctal ($permString)", 'required' => $requiredDesc, 'message' => $statusText ]; if ($isOk) { $results['success']++; } else { $results['error']++; } $results['total']++; return $results; } // Функция рекурсивной проверки папки function checkDirectoryRecursive($dir, $results, $depth = 0) { if ($depth > 3) return $results; // Ограничиваем глубину if (!is_dir($dir)) return $results; $files = scandir($dir); if (!$files) return $results; foreach ($files as $file) { if ($file === '.' || $file === '..') continue; $path = $dir . DIRECTORY_SEPARATOR . $file; if (is_dir($path)) { // Проверяем папку $perms = fileperms($path); $permOctal = substr(sprintf('%o', $perms), -4); $expectedReadable = '755'; $isReadable = is_readable($path); $isWritable = is_writable($path); // Для uploads проверяем особо if (basename($path) === 'uploads' || strpos($path, '/uploads/') !== false) { $isOk = ($isWritable && $isReadable); } else { $isOk = $isReadable; } $results['details'][] = [ 'path' => $path, 'type' => 'directory', 'status' => $isOk ? 'success' : ($isReadable ? 'warning' : 'error'), 'current' => $permOctal, 'required' => (basename($path) === 'uploads' ? '777 (writable)' : '755 (readable)'), 'message' => $isOk ? ' OK' : (is_writable($path) ? ' Нет прав на чтение' : ' Нет прав') ]; if ($isOk) { $results['success']++; } elseif ($isReadable) { $results['warning']++; } else { $results['error']++; } $results['total']++; // Рекурсивно проверяем вложенные папки $results = checkDirectoryRecursive($path, $results, $depth + 1); } } return $results; } echo "<h2> Проверка основных папок и файлов IPS5</h2>"; echo "<table>"; echo "<tr><th>Путь</th><th>Тип</th><th>Текущие права</th><th>Требуется</th><th>Статус</th></tr>"; $baseDir = __DIR__; // Проверяем основные папки $writableDirs = ['uploads', 'datastore', 'applications', 'plugins']; foreach ($writableDirs as $dir) { $path = $baseDir . '/' . $dir; $results = checkDirectory($path, 'записываемая (writable, 777 для uploads, 755 для остальных)', $results, true); } // Проверяем conf_global.php $results = checkFile($baseDir . '/conf_global.php', 'writable', $results); // Проверяем дополнительные важные папки $importantDirs = ['system', 'themes']; foreach ($importantDirs as $dir) { $path = $baseDir . '/' . $dir; if (file_exists($path)) { $results = checkDirectory($path, 'читаемая (readable, 755)', $results, false); } } // Проверяем папку uploads рекурсивно if (file_exists($baseDir . '/uploads')) { echo "</table>"; echo "<h2> Глубокая проверка папки uploads (рекурсивно)</h2>"; echo "<table>"; echo "<tr><th>Путь</th><th>Тип</th><th>Права</th><th>Требуется</th><th>Статус</th></tr>"; $results = checkDirectoryRecursive($baseDir . '/uploads', $results); } echo "</table>"; // Вывод результатов echo "<h2> Итог проверки</h2>"; $summaryClass = 'good'; if ($results['error'] > 0) { $summaryClass = 'bad'; } elseif ($results['warning'] > 0) { $summaryClass = 'warning'; } echo "<div class='summary $summaryClass'>"; echo "<strong>Результаты:</strong><br>"; echo " Успешно: {$results['success']}<br>"; echo " Предупреждений: {$results['warning']}<br>"; echo " Ошибок: {$results['error']}<br>"; echo " Всего проверено: {$results['total']}<br>"; echo "</div>"; // Команды для исправления прав if ($results['error'] > 0 || $results['warning'] > 0) { echo "<h2> Команды для исправления прав</h2>"; echo "<div style='background: #f8f9fa; padding: 15px; border-radius: 5px; font-family: monospace;'>"; echo "<p><strong>Выполните следующие команды через SSH:</strong></p>"; echo "<code>"; echo "# Установка прав на папки (755) и файлы (644)<br>"; echo "find " . $baseDir . " -type d -exec chmod 755 {} \;<br>"; echo "find " . $baseDir . " -type f -exec chmod 644 {} \;<br><br>"; echo "# Папка uploads и все вложенные (777)<br>"; echo "chmod -R 777 " . $baseDir . "/uploads<br><br>"; echo "# Папка datastore (777)<br>"; echo "chmod 777 " . $baseDir . "/datastore<br><br>"; echo "# Папки applications и plugins (755)<br>"; echo "chmod 755 " . $baseDir . "/applications " . $baseDir . "/plugins<br><br>"; echo "# Файл conf_global.php (666)<br>"; echo "chmod 666 " . $baseDir . "/conf_global.php<br><br>"; echo "# Если проблемы сохраняются, проверьте владельца файлов:<br>"; echo "chown -R www-data:www-data " . $baseDir . "<br>"; echo "(замените www-data на пользователя вашего веб-сервера)"; echo "</code>"; echo "</div>"; } // Проверка PHP расширений echo "<h2> Проверка PHP расширений</h2>"; echo "<table>"; echo "<tr><th>Расширение</th><th>Статус</th></tr>"; $extensions = [ 'curl' => 'cURL', 'gd' => 'GD', 'mysqli' => 'MySQLi', 'json' => 'JSON', 'mbstring' => 'Multibyte String', 'zip' => 'Zip', 'xml' => 'XML', 'dom' => 'DOM', 'simplexml' => 'SimpleXML', 'openssl' => 'OpenSSL', 'session' => 'Session', 'pdo' => 'PDO', ]; foreach ($extensions as $ext => $name) { $loaded = extension_loaded($ext); $status = $loaded ? ' Загружено' : ' Не загружено'; $class = $loaded ? 'success' : 'error'; echo "<tr><td>$name ($ext)</td><td class='$class'>$status</td></tr>"; } echo "</table>"; // Информация о PHP echo "<h2> Информация о PHP</h2>"; echo "<table>"; echo "<tr><th>Параметр</th><th>Значение</th></tr>"; echo "<tr><td>PHP версия</td><td>" . PHP_VERSION . "</td></tr>"; echo "<tr><td>memory_limit</td><td>" . ini_get('memory_limit') . "</td></tr>"; echo "<tr><td>upload_max_filesize</td><td>" . ini_get('upload_max_filesize') . "</td></tr>"; echo "<tr><td>post_max_size</td><td>" . ini_get('post_max_size') . "</td></tr>"; echo "<tr><td>max_execution_time</td><td>" . ini_get('max_execution_time') . " сек</td></tr>"; echo "</table>"; echo "<p style='margin-top: 30px; padding: 10px; background: #fff3cd; border-radius: 5px;'>"; echo " <strong>Важно:</strong> После проверки удалите этот файл с сервера!<br>"; echo "Он может представлять угрозу безопасности, так как раскрывает информацию о вашей системе."; echo "</p>"; echo "</div></body></html>";Запустите через браузер http://ваш-сайт.ru/check_permissions.phpСкрипт покажет: ✅ Зелёным — правильные права ⚠️ Жёлтым — предупреждения ❌ Красным — ошибки Если скрипт нашёл ошибки, он покажет готовые команды для SSH внизу страницы. Скопируйте и выполните их. Обязательно удалите файл check_permissions.php с сервера после проверки! Он содержит информацию о структуре вашего сайта и может быть использован злоумышленниками.
  5. Это как раз то, что нужно. Перевод, выполненный с использование правильных паттернов для перевода, с учетом особенностей IC5 и ручной корректировкой. А также проверкой другим ИИ после перевода соблюдений норм грамматики и орфографии выбранного языка. Но это уже тонкости и некоторые секреты работы. Вы зря собрались покидать нас. Всё самое интересное только начинается. Тем более это для вас хобби.
  6. Уже есть перевод на любой язык.
  7. Вот из последнего: https://invisioncommunity.ru/file/28-security-scanner/ https://invisioncommunity.ru/file/27-site-statistics/ Собрано буквально за 24 часа - 2 приложения. Планирую издавать книгу "Как стать властелином мира с помощью ИИ и чтобы тебе за это ничего не было". 😏
  8. Попробуй создать простой sh скрипт, который пишет в текстовой файл последнее время запуска. И запускать его по крону. Если работает, значит проблема в движке (может файлы поломались или отсутствуют права на чтение папки или файлов). Если не пишет, значит пора менять хостера. Вообще, после переезда нужно проверять права на папки, файлы, что везде правильный пользователь. И когда переносишь файлы, лучше делать это одним архивом и распаковывать уже на сервере - так сразу поймешь, что все файлы не битые, если архив распаковался.
  9. Я просто очень талантливый. Впитал в себя много знаний. Научил DeepSeek писать приложения. Мы с ним нашли друг друга. За месяц уже 28 приложений. Мне нравится заниматься творчеством. Заходи посмотри - не успеваю выкладывать новое. Хорошо, что настали новые времена, и не нужно обращаться к программистам с маргинальным образом мышления и воспаленным ЧСВ, замкнутым в своей временное петле.
  10. Вроде было уже. Чем отличается? Авторизацию через Discord можно делать на сайте?
  11. Нашел где скачать за 15 USDT. Если Respected сделает 10-15 баксов за скачивание релизов, вообще не проблема. В месяц будет собирать 100-200 долл. @Respected , напишите мне, могу поделиться проверенным Crypoverse шлюзом для приема крипты.
  12. Что там со временем на сервере, точно установлено?
  13. Я сделал авторизацию через VK в публичную часть. Авторизацию в ACP настроить пока не получилось. Если можешь доделать авторизацию в ACP, могу скинуть beta. Тоже планирую это делать. Если есть наработки, пришли для теста. Посмотрю у себя как работает. Подправлю если что.
  14. Ну, а я только вошел во вкус. Клепаю приложения для IPS5 (так почему-то его называет DeepSeek, хотя правильно было бы IC5). Не подскажете, где еще можно скачивать качественные нуллы пятерки?
  15. Zero108 replied to cmertqq's тема in Файлы IC5
    Кто пользуется 5, как гостям разрешить пользоваться поиском? При клике на строку поиска ничего не происходит у гостей.
  16. Что-то никак ума не приложу, вроде везде активировал, а кнопки социальных сетей не появились. Что я упускаю? Кто-нибудь включал кнопки Sharing в IC5?
  17. Сам спросил, - сам ответил. Вот все бы так! https://www.youtube.com/watch?v=AQtdj1Xgwx8
  18. Как в Invision Community 5 работает система виджетов? В публичной части сайта слева отсутствует выдвигающаяся панель, где в версии 4 были виджеты. Теперь этого вообще нет или где-то нужно настроить?
  19. Все стало очень странно в Invnision Community в версии 5. Как установить логотип для темы оформления? Как установить изображение для логотипа сайта?
  20. А как там обстоят дела с блокировкой Телеграм?
  21. Ну, странно, конечно. А ты продавать хотел или бесплатно выложить?
  22. Я пока видел только платный языковой пакет на другом форуме для русского языка. Я так понял, никто пока не поделился бесплатно? Тем оформления тоже нет бесплатных, кроме 2-3 на этом сайте. Загибается invision?
  23. Выгрузить дефолтный языковой пакет нельзя со всеми строками?! Зачем так сделали, вообще непонятно. Кто-то смог выгрузить?
  24. Пример работы защиты и анализ DeepSeek Лог: 45.164.211.89 - [12/May/2026:19:14:09 +0400] - 444 "filter_bypass" - "GET /catalog/index.php?PAGEN_3=2&q=seascape&s=search_results%C2%A7ion_id%3D133%C2%A7ion_id%3D149&set_filter=y&type=catalog HTTP/2.0" 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.58 Safari/537.36" "45.164.211.89" По этому логу сработало правило filter_bypass - защита от обфускации атак через спецсимволы. Что именно сработало: В запросе есть параметр: %C2%A7ion_id%3D133%C2%A7ion_id%3D149 После декодирования URL это превращается в: §ion_id=133§ion_id=149 Какое правило в blockinj.conf: map $args $filter_bypass { default 0; "~*%C2%A7" 1; # § (section sign) - из логов атак Bitrix "~*%c2%a7" 1; # § (lowercase) - обход регистра "~*§" 1; # raw section sign }Почему это сработало: Злоумышленник пытался обойти фильтры SQL-инъекций, используя символ § (раздел) вместо обычных символов. Это классический метод обфускации атак на 1С-Битрикс (в логах часто встречается ion_id - это параметр Битрикс). Что было заблокировано: IP: 45.164.211.89 URL: /catalog/index.php с параметрами поиска Блокировка: 444 (без ответа клиенту) Причина: filter_bypass - попытка обхода фильтров через спецсимвол § Вердикт: Правило сработало правильно - защитило сайт от потенциальной SQL-инъекции через обфусцированные параметры. Блокировка легитимная. Цель такой атаки: Злоумышленник пытался выполнить SQL-инъекцию через обфускацию (сокрытие) вредоносного кода. Что он хотел сделать: Параметр ion_id в Битрикс обычно используется для фильтрации элементов инфоблока. Атака строится так: Обычный запрос: ?ion_id=133 Атака (без обфускации): ?ion_id=133 UNION SELECT password FROM users Обфусцированная атака (через §): ?§ion_id=133§ion_id=149 ... (скрытый SQL-код) Конкретные цели: Извлечение данных из базы: - Логины и пароли пользователей - Email-адреса - Персональные данные - Данные кредитных карт (если есть) Обход авторизации: - Вход в админку без пароля - Повышение привилегий Модификация данных: - Изменение цен на товары - Добавление администраторов - Удаление информации Выполнение команд на сервере: - Загрузка веб-шеллов (backdoor) - Установка вредоносного ПО - Использование сервера для DDoS-атак Почему использовали символ §: Это обход фильтров безопасности: - Стандартные WAF блокируют SELECT, UNION, -- и т.д. - Символ § не распознается как опасный - После декодирования запрос становится вредоносным Что спасло ваш сайт: Ваше правило filter_bypass распознало этот трюк и заблокировало запрос до того, как он попал на обработку в PHP/Битрикс. Дополнительные индикаторы атаки: # В логе видно множественные параметры: &q=seascape&s=search_results§ion_id=133§ion_id=149 # Злоумышленник пытался внедрить код несколько раз (два §ion_id) Вердикт: Это была автоматизированная сканирующая атака (вероятно, через SQLmap или аналогичный инструмент) с целью найти уязвимость для последующего взлома. Ваша защита сработала корректно. Таких и других запросов за сутки приходит сотни тысяч. Напоминаю, что в текущих реализях 99% посетителей сайтов - боты, а не люди. Вот статистика по одному из доменов по данным Cloudflare - на изображении количество уникальных запросов в сутки:

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.