From 85890e12db242ad1444c4dae9bffcb8a1f7641f0 Mon Sep 17 00:00:00 2001 From: Dillard Blom Date: Fri, 11 Sep 2026 17:40:12 +0200 Subject: [PATCH] Update README to reflect active fork status, drop stale Russian translation Also backport OccController's getConfig() -> IConfig::class fix (deprecated internal API -> stable OCP interface), spotted while comparing against Git-Usr123/occweb. --- README.md | 23 ++++-- README.ru.md | 126 ------------------------------- lib/Controller/OccController.php | 2 +- 3 files changed, 17 insertions(+), 134 deletions(-) delete mode 100644 README.ru.md diff --git a/README.md b/README.md index 9dbbcb7..1bd64fe 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,24 @@ -# ⚠️ Deprecated ⚠️ OCCWeb terminal - -*Читать на [русском](README.ru.md).* +# OCCWeb terminal (maintained fork) ### A web terminal for admins to launch Nextcloud's occ commands ![occweb](https://github.com/Adphi/OCCWeb/raw/main/appinfo/screenshot.png) +## About this fork -## ⚠️ Deprecated ⚠️ -As nextcloudd has no native support for asynchronous operations, due to the use of php, this aplication is deprecated, and will no longer support the Nextcloud' future versions (19+). I did not find a way to implemement true support for interactive and long running occ tasks in a web terminal whitout introducing addtional dependencies (through websockets, for example), the lack of true asynchronous occ operations can lead to serious alterations of voluminous instances. -[This issue](https://github.com/nextcloud/server/issues/16726) may give some hints on why I decided to not support this application anymore. +The original [Adphi/occweb](https://github.com/Adphi/occweb) was marked deprecated by its +author and is unmaintained. This fork keeps it working on current Nextcloud versions and has +added SQL query mode, security hardening (admin checks, CSRF/confirmation flows, transactional +batches), and PHP 8.1+ compatibility fixes on top. + +**This tool is still not the right place for big/risky operations.** It has no support for +asynchronous or long-running tasks — every command runs synchronously inside a single PHP +web request, so anything that takes a while (`occ files:scan` on a large instance, a Nextcloud +major-version `occ upgrade`, `occ maintenance:mode --on` workflows) can time out mid-operation +with no way to recover cleanly. Use a real shell (SSH + `occ` directly, or the guest-agent/ +console) for major upgrades and other long-running or high-blast-radius operations; reserve +this terminal for routine day-to-day occ/SQL admin tasks. [This issue](https://github.com/nextcloud/server/issues/16726) +has background on why Nextcloud has no native async support for occ tasks. ## Install @@ -110,4 +119,4 @@ This does not apply on a fresh `occ app:enable` install — that command sets `installed_version` correctly on its own. ## TODOs: -See [open issues](https://github.com/Adphi/occweb/issues) +See [open issues](https://github.com/dillardblom/occweb/issues) diff --git a/README.ru.md b/README.ru.md deleted file mode 100644 index 06095cb..0000000 --- a/README.ru.md +++ /dev/null @@ -1,126 +0,0 @@ -# ⚠️ Устарело ⚠️ OCCWeb terminal - -*Read in [English](README.md).* - -### Веб-терминал для администраторов для запуска occ-команд Nextcloud - -![occweb](https://github.com/Adphi/OCCWeb/raw/main/appinfo/screenshot.png) - - -## ⚠️ Устарело ⚠️ - -Поскольку Nextcloud не имеет встроенной поддержки асинхронных операций -(из-за использования PHP), это приложение считается устаревшим и больше не -будет поддерживать будущие версии Nextcloud (19+). Автору не удалось найти -способ реализовать полноценную поддержку интерактивных и долгих occ-задач в -веб-терминале без введения дополнительных зависимостей (например, через -websockets), а отсутствие настоящей асинхронности может привести к серьёзным -проблемам на больших инсталляциях. -[Этот issue](https://github.com/nextcloud/server/issues/16726) объясняет, -почему разработчик решил больше не поддерживать это приложение. - - -## Установка - -Сборка не нужна (чистый PHP + vanilla JS). Клонируйте прямо в `apps/` -целевого сервера и запустите установочный скрипт: - -```bash -cd /var/www/nextcloud/apps -git clone https://github.com/fanategorius/occweb.git -bash occweb/install.sh -``` - -`install.sh` удаляет dev/CI-файлы, не нужные для работающей установки -(`tests/`, `.travis.yml`, `phpunit*.xml`, `composer.json`, `composer.lock`, -`Makefile`), выставляет `chown -R` на пользователя веб-сервера и выполняет -`occ app:enable`. По умолчанию считает, что Nextcloud лежит в -`/var/www/nextcloud`, а пользователь веб-сервера — `www-data`; если у вас -иначе, передайте своими аргументами: - -```bash -bash occweb/install.sh /path/to/nextcloud custom-web-user -``` - -`occ app:enable` сам корректно проставит версию приложения в базе, поэтому -оговорки из раздела «Обновление кода на сервере» ниже к свежей установке не -относятся — они актуальны только когда приложение уже включено и вы -обновляете его на месте. - -Перед установкой сверьте версию вашего Nextcloud с диапазоном в -`appinfo/info.xml` (`dependencies/nextcloud`, `min-version`/`max-version`) -— `occ app:enable` откажется включать приложение вне этого диапазона. - -Учтите: `install.sh` удаляет файлы, отслеживаемые в git. Если планируете -дальше обновлять эту установку через `git pull`, а не пере-клонированием — -имейте в виду, что будущее изменение одного из удалённых файлов в апстриме -может привести к отказу `git pull` смёржить изменения. Git сам сообщит об -этом, и файл можно вернуть командой `git checkout -- `. - -## Режим SQL-запросов - -Введите `sql` в терминале, чтобы переключиться в режим SQL-запросов и -выполнять произвольные SQL-запросы напрямую к базе данных Nextcloud (только -для администраторов). Запросы разделяются `;`. Используйте **Shift+Enter** -для перехода на новую строку и **Enter**, чтобы отправить весь блок одним -запросом — это важно для скриптов вида -`SET vars.x = 'value'; SELECT current_setting('vars.x');`, так как все -запросы, отправленные одним блоком, выполняются в рамках одного соединения -(сессии) с базой данных. Введите `occ`, чтобы вернуться в обычный режим -occ-команд. - -⚠️ Для `DELETE`/`UPDATE` нет отмены — внимательно проверяйте, что вы -собираетесь выполнить, желательно сначала на некритичной записи/пользователе. - -## ⚠️ Предупреждения ⚠️ - -- Это приложение не является настоящим интерактивным терминалом и не - поддерживает долгие задачи. - Поэтому на крупных инсталляциях команды вроде `occ files:scan` могут - завершаться по таймауту с ошибкой. -- Не используйте `occ maintenance:mode --on`, это очевидно... -- Шаблон `rename-user` — это **best-effort**, а не официально поддерживаемая - Nextcloud операция. Он обновляет только известные таблицы ядра - (`oc_users`, `oc_preferences`, `oc_group_user`, `oc_group_admin`, - `oc_ldap_user_mapping`, `oc_share`, `oc_mounts`, `oc_storages`), но **не** - трогает таблицы сторонних приложений (Talk, Calendar, Contacts, Mail, - двухфакторная аутентификация/WebAuthn и т.д.). Дополнительно нужно вручную - переименовать каталог данных пользователя на диске (`data/<старый> -> - data/<новый>`) при остановленном веб-сервере или в режиме обслуживания, а - затем выполнить `occ files:scan --all`. Сначала сделайте бэкап базы и - протестируйте на некритичном аккаунте. - -## Обновление кода на сервере - -После того как новый код скопирован/спуллен в `nextcloud/apps/occweb/`, -обязательно перезапустите PHP, иначе изменения не применятся. `occ -app:disable`/`app:enable` **не помогает** — эта команда не сбрасывает -opcode-кэш PHP, из-за чего может продолжать работать старая закэшированная -версия кода (характерный симптом — маршруты внезапно отвечают 404). -Перезапустите сам процесс PHP, например: - -```bash -sudo systemctl restart php8.3-fpm # укажите свою версию PHP -sudo systemctl restart apache2 # если PHP работает как модуль Apache -``` - -### Если меняете `` в `appinfo/info.xml` - -Nextcloud хранит установленную версию каждого приложения в базе -(`installed_version` в `oc_appconfig`) отдельно от `` в -`info.xml`. Если вы правите файлы на месте (копированием/`git pull`), а не -через App Store или `occ upgrade`, эти два значения расходятся — и -Nextcloud считает, что «инстансу нужен апгрейд», блокируя большинство -`occ`-команд за CLI-визардом обновления, хотя само ядро Nextcloud никак не -менялось. После бампа версии синхронизируйте её вручную: - -```bash -sudo -u www-data php /var/www/nextcloud/occ config:app:set occweb installed_version --value="X.Y.Z" -``` - -(то же значение `X.Y.Z`, что и в новом ``), затем перезапустите -PHP, как описано выше. На свежую установку через `occ app:enable` это не -распространяется — там версия проставляется корректно автоматически. - -## Планы (TODO): -См. [открытые issues](https://github.com/Adphi/occweb/issues) diff --git a/lib/Controller/OccController.php b/lib/Controller/OccController.php index 47b78c0..fe4c169 100644 --- a/lib/Controller/OccController.php +++ b/lib/Controller/OccController.php @@ -32,7 +32,7 @@ class OccController extends Controller $this->application = new Application( OC::$server->get(\OCP\ServerVersion::class), - OC::$server->getConfig(), + OC::$server->get(\OCP\IConfig::class), OC::$server->get(\OCP\EventDispatcher\IEventDispatcher::class), new FakeRequest(), $this->logger,