feat(eltex): add ai-eltex launcher for corporate LLM proxy
ai-eltex runs Claude Code through the Eltex LiteLLM proxy (http://llm.eltex.loc:4000, team GLM subscription). The personal key from admins is checked via /v1/models and stored in ~/.config/ai-setup/eltex_key; the model is taken from the key's allowed list (ELTEX_MODEL / ELTEX_BASE_URL override). The proxy ignores effort/thinking, so no effort forcing. /logout-eltex and /logout in ai-eltex drop the key; setup.sh status shows it. ru-bypass: hosts block now has an end marker and only that block is rewritten, manual entries outside it survive; llm.eltex.loc/llm2 added since the VPN DNS does not resolve it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright (c) 2026 Виталий Никитенко. MIT License.
|
||||
# UserPromptSubmit hook: перехватывает /logout, /logout-glm, /logout-deepseek, /logout-kimi.
|
||||
# UserPromptSubmit hook: перехватывает /logout, /logout-glm, /logout-eltex, /logout-deepseek, /logout-kimi.
|
||||
# Удаляет сохранённый API-ключ провайдера, чтобы при следующем запуске лаунчер
|
||||
# запросил новый.
|
||||
# /logout-glm | /logout-deepseek | /logout-kimi — явно указанный провайдер.
|
||||
# /logout (без суффикса) — провайдер по AI_LAUNCHER (glm/deepseek/kimi).
|
||||
# /logout-glm | /logout-eltex | /logout-deepseek | /logout-kimi — явно указанный провайдер.
|
||||
# /logout (без суффикса) — провайдер по AI_LAUNCHER (glm/eltex/deepseek/kimi).
|
||||
# Для ai-claude и прочих лаунчеров /logout отступает (exit 0) — пусть работает
|
||||
# нативный oauth-logout. exit 2 после удаления: LLM не нужна, и нативная
|
||||
# /logout не пытается сделать бессмысленный oauth-logout для api-key провайдеров.
|
||||
@@ -17,11 +17,12 @@ cmd=$(echo "$normalized" | awk '{print $1}')
|
||||
target=""
|
||||
case "$cmd" in
|
||||
logout-glm) target=glm ;;
|
||||
logout-eltex) target=eltex ;;
|
||||
logout-deepseek) target=deepseek ;;
|
||||
logout-kimi) target=kimi ;;
|
||||
logout)
|
||||
case "${AI_LAUNCHER:-claude}" in
|
||||
glm|deepseek|kimi) target="$AI_LAUNCHER" ;;
|
||||
glm|eltex|deepseek|kimi) target="$AI_LAUNCHER" ;;
|
||||
*) exit 0 ;;
|
||||
esac
|
||||
;;
|
||||
@@ -35,6 +36,10 @@ case "$target" in
|
||||
rm -f "$CFG/glm_key"
|
||||
echo "✓ GLM ключ удалён. Перезапусти ai-glm, чтобы ввести новый." >&2
|
||||
;;
|
||||
eltex)
|
||||
rm -f "$CFG/eltex_key"
|
||||
echo "✓ Eltex ключ удалён. Перезапусти ai-eltex, чтобы ввести новый." >&2
|
||||
;;
|
||||
deepseek)
|
||||
rm -f "$CFG/deepseek_key"
|
||||
echo "✓ DeepSeek ключ удалён. Перезапусти ai-deepseek, чтобы ввести новый." >&2
|
||||
|
||||
@@ -56,7 +56,7 @@ before.rules: 10/8, 172.16/12,
|
||||
5. Добавляет маршруты для RFC1918 диапазонов (`10/8`, `172.16/12`, `192.168/16`) - нужно для `*.loc`
|
||||
6. Добавляет встроенные исключения kill switch (`mattermost.eltex-co.ru`, `elph.eltex-co.ru`, `10.80.0.15`)
|
||||
7. Добавляет пользовательские исключения из `AMNEZIA_SERVER` и `KILL_SWITCH_EXCEPTIONS`
|
||||
8. Обновляет блок локальных Eltex-хостов в `/etc/hosts`
|
||||
8. Обновляет блок локальных Eltex-хостов в `/etc/hosts` (только между маркерами `# ru-bypass: local hosts` / `# ru-bypass: end`, ручные записи сохраняются)
|
||||
9. Если задан `LOCAL_DNS`, настраивает `resolvectl` для `~loc` на интерфейсе `DEV`
|
||||
10. Обновляет `/etc/ufw/before.rules`, прямые iptables-правила и отключает IPv6 при активном kill switch
|
||||
11. При первом запуске: устанавливает systemd service/timer и NetworkManager dispatcher
|
||||
|
||||
Reference in New Issue
Block a user