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

Получение сетевых интерфейсов без рестарта всех подключений #220

Open
AltGrF13 opened this issue Nov 18, 2024 · 2 comments

Comments

@AltGrF13
Copy link
Contributor

AltGrF13 commented Nov 18, 2024

  1. Сейчас ради получения имени сетевого интерфейса (в терминах Linux) используется хук с рестартами. Это вызывает как проблемы ожидания (Нет нужного VPN/WireGuard #183), так и некоторые сетевые интерфейсы не успевают отключиться перед командой на включение (есть случаи в чате, у меня одно из соединений регулярно остаётся выключенным после установки). Хотя из API доступны все диапазоны IP, перевести их в имена сетевых интерфейсов можно поиском их в ip a. Даже функция get_inface_by_ip уже есть.
  2. Также get_router_ip содержит насильно пробитый br0, это надо переписать на случай изменений.
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Nov 18, 2024
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Nov 18, 2024
@AltGrF13
Copy link
Contributor Author

AltGrF13 commented Nov 18, 2024

Не решение этого вопроса, просто один из связанных моментов. Сейчас эта пара функций в opt/bin/libs/main

get_router_ip() {
	/opt/sbin/ip a | grep ": br0:" -A4 | grep 'inet ' | tr -s ' ' | cut -d' ' -f3 | cut -d'/' -f1
}

get_local_inface() {
	local_ip="$(get_router_ip)"
	/opt/sbin/ip a | grep -E "${local_ip}/[0-9]{1,2}" | sed 's/^ *//g' | grep -E -o '[^ ]+$'
}
  1. Всё равно имеет введённый насильно br0.
  2. При вызове get_local_inface происходит два вызова ip a, чтобы получить захордкоженный br0. Эдакая полупетля.

Гораздо прямее было бы

get_router_ip() {
	/opt/sbin/ip a | grep ": $(get_local_inface):" -A4 | grep 'inet ' | tr -s ' ' | cut -d' ' -f3 | cut -d'/' -f1
}

get_local_inface() {
	echo 'br0'
}

Тот же самый br0 в коде один раз, но цепочка зависимостей в обратную сторону и нет двойного вызова поиска константы.

@qzeleza
Copy link
Owner

qzeleza commented Nov 20, 2024

Добавил в код

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