John9110
-
Posts
11 -
Joined
-
Last visited
Content Type
Profiles
Forums
Gallery
Downloads
Blogs
Events
Posts posted by John9110
-
-
раньше у меня работала регистрация сертификата с NAS на доменном имени *.mykeenetic.com
Попробую Ваш метод.
-
Здравствуйте, прошу помощи.
Имеется:
- Keenetic Giga 3 (c установленным Entware);
- NAS под операционной системой DSM от Synology.
На роутере получено доменное имя XXXX.keenetic.link, доступ на роутер осуществляется по HTTPS по стандартным портам.
Для доступа к веб интерфейсу NAS проброшены порты 5080(http) и 5443(https), на NAS настроен автоматический редирект с HTTP на HTTPS, однако при настройке с веб-интерфейса роутера происходит редирект с nas.XXXX.keenetic.link на 192.168.1.10:5443, при настройке с CLI (ip http proxy nas upstream http nas.XXXX.keenetic.link 5080) редирект происходит относительно правильно (ст.
Для подключения к NAS по HTTPS по доменному имени nas.XXXX.keenetic.link требуется сертификат. Имеется возможность получения сертификата от Lets Encrypt на NAS, однако, насколько я понял, при создании доменного имени nas.XXXX.keenetic.link сертификат был уже создан, и получения сертификата на самом NAS не работает.
Как возможно решить данные проблемы?
-
допилил бота, теперь при получении серого ip отправляет клавиатурку с возможностью перезапустить интерфейс.
Скрытый текст#!/opt/bin/bash
TOKEN=''
URL='https://api.telegram.org/bot'$TOKEN
MSG_URL=$URL'/sendMessage?chat_id='
UPD_URL=$URL'/getUpdates?offset='
update_id=0
TARGET= #chat_id
KMSG_URL=$URL'/sendMessage'
proxy='--socks5 127.0.0.1:9055' # TOR
send_fw_avalible=0send_message() {
if [[ -z $3 ]]
then
res1=$(curl $proxy -s -X POST -H "Charset: UTF-8" $URL/sendMessage -d chat_id=$1 -d "text=$2")
else
if [[ $3 == 'inline_keyboard' ]]
then
inline_keyboard='{"inline_keyboard":[
[{"text":"'$4'","callback_data":"'$5'"},
{"text":"'$6'","callback_data":"'$7'"}]
]}'
res=$(curl $proxy -s -X POST -H "Charset: UTF-8" $URL/sendMessage -d chat_id=$1 -d "reply_markup=${inline_keyboard}" -d "text=$2")
fi
fi
}
edit_message () {
res=$(curl $proxy -s -X POST -H "Charset: UTF-8" $URL/editMessageText -d chat_id=$callback_query_message_chat_id -d message_id=$callback_query_message_message_id -d "text=$1")
}while true; do {
res=''
until [[ -n $res ]]; do {
res=$(curl $proxy $UPD_URL$update_id)
} done
update_id=$(echo $res | JSON.sh | egrep '\["result",0,"update_id"\]' | cut -f 2)
callback_query=$(echo -e $res | JSON.sh | egrep '\["result",0,"callback_query"\]' | cut -f 2)
callback_query_data=$(echo -e $res | JSON.sh | egrep '\["result",0,"callback_query","data"\]' | cut -f 2 | cut -d '"' -f 2)
callback_query_id=$(echo $res|JSON.sh|egrep '\["result",0,"callback_query","id"\]' | cut -f 2)
callback_query_message_chat_id=$(echo $res|JSON.sh|egrep '\["result",0,"callback_query","message","chat","id"\]' | cut -f 2)
callback_query_message_message_id=$(echo $res|JSON.sh|egrep '\["result",0,"callback_query","message","message_id"\]' | cut -f 2)
callback_query_message_text=$(echo -e $res|JSON.sh|egrep '\["result",0,"callback_query","message","text"\]' | cut -f 2 | cut -d '"' -f 2)message_from_id=$(echo $res|JSON.sh|egrep '\["result",0,"message","from","id"\]' | cut -f 2)
message_text=$(echo -e $res|JSON.sh|egrep '\["result",0,"message","text"\]' | cut -f 2 | cut -d '"' -f 2)
message=$(echo -e $res|JSON.sh|egrep '\["result",0,"message"\]' | cut -f 2)
update_id=$((update_id+1))
# # # commands
if [ $update_id != 1 ]
then
if [[ $message_from_id == $TARGET || $callback_query_message_chat_id == $TARGET ]]
then
if [[ -n $callback_query ]]
then
curl $proxy -s $URL/answerCallbackQuery?callback_query_id=$callback_query_id
case $callback_query_data in
'Breboot')
edit_message "Сейчас будет произведен перезапуск интерфейса."
ndmq -p 'interface PPPoE0 down' -P MESSAGE
sleep 1
ndmq -p 'interface PPPoE0 up' -P MESSAGE
sleep 10
ndmq -p 'ndns get-update auto' -P MESSAGE
/opt/etc/init.d/S35tor restart
;;
'Bnoreboot')
edit_message "Перезапуск интерфейса не произведен. Вы можете выполнить перезапуск вручную."
;;
*) ;;
esac
fi
if [[ -n $message ]]
then
case $message_text in
'/start')
send_message "$message_from_id" "Старт"
;;
'/info')
;;
'/reboot')
send_message "$message_from_id" "Сейчас будет произведен перезапуск интерфейса."
ndmq -p 'interface PPPoE0 down' -P MESSAGE
sleep 1
ndmq -p 'interface PPPoE0 up' -P MESSAGE
sleep 10
ndmq -p 'ndns get-update auto' -P MESSAGE
;;
*) send_message "$message_from_id" "$message_text" "inline_keyboard" "Yes" "BYes" "No" "bNo";;
esac
fi
else
echo "[$(date +%Y.%m.%d_%H:%M:%S)][$message_from_id][$message_text]" >> /opt/var/log/bashbot.log
send_message "$message_from_id" "Это приватный бот, доступ запрещен!"
fi
else
fw_installed=$(ndmq -p 'components list beta' -x | egrep -m 1 '\<installed>'|cut -d ">" -f 2|cut -d "<" -f 1)
fw_avalible=$(ndmq -p 'components list beta' -x | egrep -m 1 '\<version>'|cut -d ">" -f 2|cut -d "<" -f 1)if [[ "$fw_installed" != "$fw_avalible" && "$send_fw_avalible" == 0 ]]
then
send_message "$TARGET" "Возможно доступно обновление прошивки роутера."
send_fw_avalible=1
fi
ip_web=$(curl https://wtfismyip.com/text) #curl'ом с сайта вытаскиваем ip-адрес
ip_local=$(ndmq -p 'show interface PPPoE0' -x|grep address|cut -d ">" -f 2|cut -d "<" -f 1)
ip_temp=$(tail -n 1 /opt/root/TempIP)
if [[ -n "$ip_web" && -n "$ip_local" ]]
then
if [[ "$ip_web" == "$ip_local" ]]
then
if [[ "$ip_local" != "$ip_temp" ]]
then
echo $ip_local> /opt/root/TempIP
send_message "$TARGET" "Ваш новый белый IP-адрес $ip_local"
fi
else
if [[ "$ip_local" != "$ip_temp" ]]
then
echo $ip_local> /opt/root/TempIP
send_message "$TARGET" "Обнаружен серый IP-адрес. Перезапустить интерфейс?" "inline_keyboard" "Yes" "Breboot" "No" "Bnoreboot"
fi
fi
else
send_message "$TARGET" "Не удалось получить IP-адрес:
IP_Web=$ip_web
IP_Local=$ip_local"
fi
fi} &>/dev/null; done
- 4
-
Крайне некрасиво выглядит журнал во всплывающем окне. хотелось бы иметь возможность открыть его на весь экран, либо в новой вкладке.
-
В 10.01.2018 в 00:12, exared сказал:Скрытый текст
Добавьте в скрипт приведенную ниже функцию, предварительно задав новую переменную KMSG_URL:
KMSG_URL=$URL'/sendMessage'
function send_keyboard { local text="$1"; shift 1; local keyboard=init OLDIFS=$IFS; IFS=$(echo -en "\"") for f in $*;do [ "$f" != " " ] && local keyboard="$keyboard, [\"$f\"]";done IFS=$OLDIFS; local keyboard=${keyboard/init, /} res=$(curl -s "$KMSG_URL" --header "content-type: multipart/form-data" -F "chat_id=$TARGET" -F "text=$text" -F "reply_markup={\"keyboard\": [$keyboard],\"one_time_keyboard\": false}") }
Аргументы функции: первый - сообщение в чате, последующие - надписи на кнопках. При нажатии на кнопку соответствующая надпись может быть использована как команда. Поэтому кириллица в аргументах функции (кроме первого) нежелательна.
Поле one_time_keyboard указывает клиенту скрыть или нет клавиатуру после использования (после нажатия на кнопку). Её по-прежнему можно будет открыть через иконку в поле ввода сообщения. По умолчаниюFalse
Пример использования:send_keyboard "I can help you find and share classical music" "Get random music" "Send music to friends"
Может поможете, как использовать Inline keyboard?
-
блин, бьюсь как пробросить NAS. а тут вон чего) буду ждать 2.12
-
Имеется Keenetic Giga III с KeenDNS с доступом извне по HTTPS xxx.mykeenetic.com, также имеется в локалке NAS Synology.
Имеется ли возможность выделить доменное имя nas.xxx.mykeenetic.com для доступа к NAS по HTTPS?
-
немного не по теме, но схоже - как убрать сервисы которые пишет syslog?
мне так же мешают transmission и dlna.
сейчас логи пишутся как тут.
-
Пока сделал(подглядел) разделение лога на год\месяц\день. пример внизу. Завтра увижу, делит ли лог на день.
Скрытый текстoptions { chain_hostnames(off); sync(0); # The default action of syslog-ng 1.6.0 is to log a STATS line # to the file every 10 minutes. That's pretty ugly after a while. # Change it to every 12 hours so you get a nice daily update of # how many messages syslog-ng missed (0). stats(43200); }; source src { udp(ip(192.168.1.1) port(514)); }; #destination messages { file("/opt/My_Files/log/messages.txt"); }; destination messages { file("/opt/My_Files/log/$YEAR/$MONTH/$DAY/messages.txt" owner("root") group("root") perm(0640) dir_perm(0750) create_dirs(yes));}; log { source(src); destination(messages); };
- 1
-
Здравствуйте, а как бы еще ограничить файлы логов по объему? или например по дате? ибо многометровый текстовый файл как то не круто)))
KeenDNS и Synology
in Обмен опытом
Posted
пришлось реализовать все более костыльно:
сертификаты получаются отдельно на кинетик и отдельно на NAS.
с доменного имени 4го уровня происходит перенаправление на http порт NAS, а уже там происходит редирект с http на https.
дополнительно настроил:
А также в настройках NAS - Панель управления - Внешний доступ - дополнительно - Указал полный внешний адрес вида domain4.domain3.keenetic.link в поле имени хоста.
Минусы:
для получения сертификата на NAS (и обновления оного) прийдется каждый раз изменять правила переадресации 80го порта на NAS.