Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Обновление: приборка за собой #234

Open
AltGrF13 opened this issue Dec 6, 2024 · 3 comments
Open

Обновление: приборка за собой #234

AltGrF13 opened this issue Dec 6, 2024 · 3 comments

Comments

@AltGrF13
Copy link
Contributor

AltGrF13 commented Dec 6, 2024

(задача, которую может выполнить любой желающий)
Продолжение #201 и #210.

Очистка

По сути, эпохально сейчас 4 версии КВАСа:

  • 1.1.8r2, которую ставят по умолчанию сейчас;
  • 1.1.9b3, долгое время была лучшей новой стабильной;
  • переходный вариант в районе b7;
  • b10+

Каждая из них оставляла какие-нибудь да хвосты. Заставлять пользователя что-то чистить или перезагружаться — не подходит к концепции "дружелюбия" к технически неподготовленным пользователям.

В идеале проверить, чтобы будущий релиз перед своей установкой мог "прибраться" за любой из них (т.е. прогнать ниже указанные тесты не для одной, а для четырёх). На примере файла /opt/etc/cron.5mins/ipset.kvas, вычистка которого (на всякий случай) остаётся в коде надолго. В iptables тоже прибираться теперь легко. Фактически, установив и удалив новую версию, можно будет прибраться за старой. При этом никаких требований перезагрузки. Это уменьшит количество проблем у людей.

1. iptables

Переустанавливаем Entware с нуля. Сделать в файл iptables-save > /opt/tmp/0iptables_clear.txt. Установить КВАС, минимально настроить (соединение, гостевые), снять второй файл 1iptables_VERSION_setup.txt. Удалить без full, ещё раз 2iptables_VERSION_remove.txt. Сравнить любым file diff 1 и 2 файл, 1 и 3. Оставить комментарий, где подписать версию и основное соединение/тоннель (VPN или SS); 2 отчёта: что создал КВАС и что оставил после себя.

В конце скомпоновать 4(версии)*2(тоннеля)=8 отчётов, выкинуть все повторы.

2. Файлы

Вроде бы уже боролись, но мало ли чего осталось. Тестовая функция

#!/bin/sh

rm_dir()(  [ -d "${1}" ] && rm -rf "${1}" || true)
rm_file()( [ -f "${1}" ] && rm  -f "${1}" || true)

rm_previous_version_files(){
	rm_file /opt/etc/ndm/netfilter.d/100-vpn-mark
	rm_file /opt/etc/ndm/fs.d/100-vpn
	rm_file /opt/etc/ndm/fs.d/100-ipset
	rm_file /opt/etc/ndm/ifcreated.d/kvas-iface-add
	rm_file /opt/etc/ndm/ifdestroyed.d/kvas-iface-del
	rm_file /opt/etc/ndm/iflayerchanged.d/100-kvas-vpn
	rm_file /opt/etc/ndm/iflayerchanged.d/kvas-ips-reset
	rm_file /opt/etc/ndm/wan.d/internet-up
	rm_file /opt/etc/cron.5mins/check_vpn
	rm_file /opt/etc/cron.5mins/ipset.kvas

	rm_dir /opt/etc/.kvas
}

rm_previous_version_files

Переустанавливаем Entware с нуля. Снять список всех файлов find /opt/ ! -type d > /opt/tmp/0files_clear.txt в файл на чистом Entware. Установить и настроить КВАС. Удалить без full, снять второй список всех файлов 1files_VERSION_remove.txt. Прогнать вышеозначенную функцию, снять третий список 2files_VERSION_clear.txt. Сравнить любым file diff 1 и 2 файл, 1 и 3. В 2–3 точно будут не только хвосты КВАС, но и пакетов Entware. Это нормально. Разработчики пакетов сами решают, что оставлять, не надо прибираться за ними. Только за собой. Если видите явные хвосты, то дополните функцию, и снимите третий файл уже после вашей обновлённой. Т.е. по каждой версии будет отчёт; что выжило после удаления (сравнение файлов 1 и 2); обновлённая функция и сравнение 1 и 3, что не осталось ничего лишнего.

3. Очистка перед установкой

Из-за переходящих со старых версий мы сейчас чистим не только за собой, но и перед. Если что-то внедрено после пунктов 1–2, то надо и сюда. Также надо попытаться расчистить и правила, старые ipset, роут и рулес. Все обёртки в новом ndm уже есть.

@qzeleza
Copy link
Owner

qzeleza commented Dec 6, 2024

Кроме правильности подхода; это ещё уберёт предупреждение, пугающее пользователей

К сожалению не уберет, необходимо для этого использовать опцию в opkg:
--force-maintainer Overwrite preexisting config files

@AltGrF13
Copy link
Contributor Author

AltGrF13 commented Dec 6, 2024

Кроме правильности подхода; это ещё уберёт предупреждение, пугающее пользователей

К сожалению не уберет, необходимо для этого использовать опцию в opkg: --force-maintainer Overwrite preexisting config files

Интересные опции, не знал о них.

Но исходил из того, как на это реагируют пакеты при обновлении в "больших" менеджерах. Они именно ругаются на то, если файл отличается от того, что предлагается пакетом.

И в моей схеме после удаления новых КВАСов в конфигах должны оставаться/восстанавливаться исходные файлы. И они не будут "different", т.е. предупреждения быть не должно (из-за совпадения файла).

@AltGrF13 AltGrF13 changed the title Приборка за собой Обновление: Приборка за собой Dec 8, 2024
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Dec 20, 2024
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Dec 20, 2024
@AltGrF13 AltGrF13 changed the title Обновление: Приборка за собой Обновление: приборка за собой Dec 21, 2024
@AltGrF13
Copy link
Contributor Author

(расширенные пункты по задаче для реализации самому)

А. ipset.kvas

В механизме предочистки пытаться удалить ipset.kvas из всех крон-директорий из-за оптимизации пользователями.

Б. Конфиги исходные

В рамках этой же задачи надо сделать это

Исходные конфиги dnsmasq и dnscrypt и, скорее всего, adguard и adblock надо сохранять перед первой заменой/правкой там же, где находятся исходные файлы. Как это делает любой пакетный менеджер при конфликтах. Например, рядом с /opt/etc/dnsmasq.conf появится /opt/etc/dnsmasq.default.conf И никогда эти бекапные файлы не удалять и не модифицировать! Не перезаписывать в них изменения от КВАСа, они всегда должны соответствовать тому, что поставил opkg. При полном удалении КВАСа перед удалением пакетов надо будет их восстановить move'ом.

Кроме правильности подхода; это ещё уберёт (при переходе с новых версий на новые) предупреждение, пугающее пользователей
IMG_20241206_160639_308

В. Сохранение списка

С одной стороны, при обновлении со старых версий от пользователей мы требуем самостоятельно позаботиться о списке и его преобразовании (избавиться от звёзд). С другой — это не дружелюбно, нужно исходить из простоты использования малоподкованными пользователями.

В #210 перед установкой, как уже упоминал, добавлен механизм приборки. При очистке /opt/etc/.kvas/backup/ он удалит бекап списка. Также он приберёт или заменит /opt/etc/kvas.list из-за изменения формата. Чтобы помочь это не потерять, предлагаю до кода по удалению kvas.list и .kvas

  • если есть файл /opt/etc/kvas.list, то берём его
  • иначе /opt/etc/.kvas/backup/kvas.list

filename=list_$(date +"%y-%m-%d").txt

  • если нет звёздочек в файле, то mv "${list_old}" "$HOME/kvas2_${filename}"
  • иначе
    • mv "${list_old}" "$HOME/kvas1_${filename}"
    • sed 's/*.//g;s/*//g' "$HOME/kvas1_${filename}" >"$HOME/kvas2_${filename}"

Тогда если пользователь пишет, что забыл о старом списке и хотел бы именно его развернуть (у меня уже несколько таких было), то ему просто надо будет подсказать о домашней директории. Не надо будет ни заботиться о бекапе самому, ни чистить его от звёзд в редакторе.

AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Dec 27, 2024
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Dec 27, 2024
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Jan 4, 2025
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Jan 4, 2025
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Jan 4, 2025
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Jan 4, 2025
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Jan 4, 2025
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Jan 4, 2025
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Jan 4, 2025
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Jan 4, 2025
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Jan 4, 2025
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Jan 4, 2025
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Jan 4, 2025
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Jan 4, 2025
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Jan 4, 2025
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Jan 4, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants