8989
9090# Функция для аутентификации
9191authenticate () {
92- # 1. Получаем challenge и realm
92+ # Получаем актуальный challenge и realm
9393 curl -s -D " $HEADER_FILE " -o /dev/null -c " $COOKIE_JAR " " http://$ROUTER_IP /auth"
9494 TOKEN=$( awk -F' : ' ' /X-NDM-Challenge:/ {print $2}' " $HEADER_FILE " | tr -d ' \r' )
9595 REALM=$( awk -F' : ' ' /X-NDM-Realm:/ {print $2}' " $HEADER_FILE " | tr -d ' \r' )
96- if [ -z " $REALM " ]; then
97- REALM=" Keenetic"
98- echo " Realm не предоставлен, используем значение по умолчанию: $REALM "
99- fi
96+ [ -z " $REALM " ] && REALM=" Keenetic"
97+
98+ # Обновляем переменные из конфига (очищаем текущие значения)
99+ unset ROUTER_LOGIN MD5_HASH REALM_SAVED
100+ [ -f " $CONFIG_FILE " ] && source " $CONFIG_FILE "
100101
101- # 2. Проверяем, есть ли логин и хэш именно для этого REALM
102- . " $CONFIG_FILE "
102+ # Проверяем, что ВСЕ поля есть и md5 соответствует актуальному realm
103103 if [ -z " $ROUTER_LOGIN " ] || [ -z " $MD5_HASH " ] || [ -z " $REALM_SAVED " ] || [ " $REALM_SAVED " != " $REALM " ]; then
104- request_credentials
104+ echo " Введите логин для роутера (или нажмите Enter для выхода):"
105+ read -r -e ROUTER_LOGIN
106+ [ -z " $ROUTER_LOGIN " ] && exit 1
107+ echo " Введите пароль для роутера:"
108+ read -r -e ROUTER_PASSWORD
109+ echo
105110 MD5_HASH=$( echo -n " $ROUTER_LOGIN :$REALM :$ROUTER_PASSWORD " | openssl md5 | awk ' {print $2}' )
111+ # Обновляем только при полной информации
106112 sed -i ' /^MD5_HASH=/d' " $CONFIG_FILE "
107113 sed -i ' /^ROUTER_LOGIN=/d' " $CONFIG_FILE "
108114 sed -i ' /^REALM_SAVED=/d' " $CONFIG_FILE "
@@ -111,10 +117,8 @@ authenticate() {
111117 echo " REALM_SAVED=\" $REALM \" " >> " $CONFIG_FILE "
112118 fi
113119
114- # 3. Считаем sha256(token+md5)
115120 PASSWORD_HASH=$( echo -n " $TOKEN$MD5_HASH " | openssl sha256 | awk ' {print $2}' )
116121 AUTH_DATA=$( printf ' {"login":"%s","password":"%s"}' " $ROUTER_LOGIN " " $PASSWORD_HASH " )
117-
118122 response=$( curl -s -o /dev/null -w " %{http_code}" -b " $COOKIE_JAR " -c " $COOKIE_JAR " \
119123 -X POST " http://$ROUTER_IP /auth" \
120124 -H " Content-Type: application/json" \
@@ -132,6 +136,9 @@ authenticate() {
132136 fi
133137}
134138
139+
140+
141+
135142add_domain () {
136143 local domain=" $1 "
137144 local ip_address=" $2 "
0 commit comments