diff options
| author | Maria Lisina <sekoohaka.sarisan@gmail.com> | 2025-06-22 01:28:58 +0500 |
|---|---|---|
| committer | Maria Lisina <sekoohaka.sarisan@gmail.com> | 2025-06-22 01:28:58 +0500 |
| commit | ac2576b5af83f68f1d5f83a6b8d38ef463185c59 (patch) | |
| tree | afe6a0a026bc736cca874912c287465916b7a339 | |
| parent | 3fd621be134f71a4638b0aea2070116e9c5caf1e (diff) | |
bot: Workaround TLS/SSL timeout error
Signed-off-by: Maria Lisina <sekoohaka.sarisan@gmail.com>
| -rw-r--r-- | README.md | 1 | ||||
| -rw-r--r-- | auth/donmai.zsh | 6 | ||||
| -rw-r--r-- | auth/idolcomplex.zsh | 18 | ||||
| -rw-r--r-- | auth/moebooru.zsh | 6 | ||||
| -rw-r--r-- | auth/sankakuchannel.zsh | 6 | ||||
| -rwxr-xr-x | bot.zsh | 47 | ||||
| -rw-r--r-- | modules/callback.zsh | 12 | ||||
| -rw-r--r-- | modules/commands.zsh | 6 | ||||
| -rw-r--r-- | modules/inline.zsh | 6 | ||||
| -rw-r--r-- | submodules/callback_delete.zsh | 6 | ||||
| -rw-r--r-- | submodules/command_original.zsh | 12 | ||||
| -rw-r--r-- | submodules/command_ping.zsh | 12 | ||||
| -rw-r--r-- | units/ib_file.zsh | 6 | ||||
| -rw-r--r-- | units/ib_size.zsh | 6 | ||||
| -rw-r--r-- | units/sn_auth.zsh | 6 | ||||
| -rw-r--r-- | units/sn_get.zsh | 12 | ||||
| -rw-r--r-- | units/sn_search.zsh | 6 |
17 files changed, 148 insertions, 26 deletions
@@ -76,6 +76,7 @@ Options: -i <secs> Telegram Bot API connetion timeout, max: 10, default: 10 secs -e <secs> Image Boards API connetion timeout, max: 10, default: 5 secs -d <secs> Head request connetion timeout, max: 10, default: 2 secs + -f <secs> Connrefused timeout, max: 2, default: none -n <addr> Proxy server for Telegram Bot API -x <addr> Proxy server for Image Boards API diff --git a/auth/donmai.zsh b/auth/donmai.zsh index 8bc04a8..5be8255 100644 --- a/auth/donmai.zsh +++ b/auth/donmai.zsh @@ -5,10 +5,14 @@ ib_auth_file="${cache}/${update_id}_profile.json" dump+=(${ib_auth_file##*/}) -if ! curl --max-time ${external_timeout} \ +if ! curl --connect-timeout ${connrefused_timeout} \ + --max-time ${external_timeout} \ --output "${ib_auth_file}" \ --proxy "${external_proxy}" \ --request GET \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((external_timeout - connrefused_timeout)) \ --silent \ --user "${ib_login}:${ib_key}" \ --user-agent "${useragent}" \ diff --git a/auth/idolcomplex.zsh b/auth/idolcomplex.zsh index 3112514..c9a5986 100644 --- a/auth/idolcomplex.zsh +++ b/auth/idolcomplex.zsh @@ -6,11 +6,15 @@ ib_cookies="${cookies_file}" ib_auth_file="${cache}/${update_id}_login.html" dump+=(${ib_auth_file##*/}) -if ! curl --cookie-jar "${ib_cookies}" \ +if ! curl --connect-timeout ${connrefused_timeout} \ + --cookie-jar "${ib_cookies}" \ --max-time ${external_timeout} \ --output "${ib_auth_file}" \ --proxy "${external_proxy}" \ --request GET \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((external_timeout - connrefused_timeout)) \ --silent \ --user-agent "${useragent}" \ "${ib_auth}/users/login" @@ -41,7 +45,8 @@ fi ib_auth_file="${cache}/${update_id}_authenticate.html" dump+=(${ib_auth_file##*/}) -if ! curl --cookie "${ib_cookies}" \ +if ! curl --connect-timeout ${connrefused_timeout} \ + --cookie "${ib_cookies}" \ --cookie-jar "${ib_cookies}" \ --data-urlencode "authenticity_token=${ib_token}" \ --data-urlencode "user[name]=${ib_login}" \ @@ -52,6 +57,9 @@ if ! curl --cookie "${ib_cookies}" \ --output "${ib_auth_file}" \ --proxy "${external_proxy}" \ --request POST \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((external_timeout - connrefused_timeout)) \ --silent \ --user-agent "${useragent}" \ "${ib_auth}${ib_action}" @@ -79,11 +87,15 @@ fi ib_auth_file="${cache}/${update_id}_home.html" dump+=(${ib_auth_file##*/}) -if ! curl --cookie "${ib_cookies}" \ +if ! curl --connect-timeout ${connrefused_timeout} \ + --cookie "${ib_cookies}" \ --max-time ${external_timeout} \ --output "${ib_auth_file}" \ --proxy "${external_proxy}" \ --request GET \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((external_timeout - connrefused_timeout)) \ --silent \ --user-agent "${useragent}" \ "${ib_auth}/users/home" diff --git a/auth/moebooru.zsh b/auth/moebooru.zsh index c3a893d..c67fddc 100644 --- a/auth/moebooru.zsh +++ b/auth/moebooru.zsh @@ -5,12 +5,16 @@ ib_auth_file="${cache}/${update_id}_user.json" dump+=(${ib_auth_file##*/}) -if ! curl --data-urlencode "username=${ib_login}" \ +if ! curl --connect-timeout ${connrefused_timeout} \ + --data-urlencode "username=${ib_login}" \ --data-urlencode "api_key=${ib_key}" \ --get \ --max-time ${external_timeout} \ --output "${ib_auth_file}" \ --proxy "${external_proxy}" \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((external_timeout - connrefused_timeout)) \ --silent \ --user-agent "${useragent}" \ "${ib_auth}/user.json" diff --git a/auth/sankakuchannel.zsh b/auth/sankakuchannel.zsh index 86f076a..8425cc7 100644 --- a/auth/sankakuchannel.zsh +++ b/auth/sankakuchannel.zsh @@ -10,12 +10,16 @@ ib_login_data="$(jq --null-input --compact-output \ ib_auth_file="${cache}/${update_id}_token.json" dump+=(${ib_auth_file##*/}) -if ! curl --data "${ib_login_data}" \ +if ! curl --connect-timeout ${connrefused_timeout} \ + --data "${ib_login_data}" \ --header "Content-Type: application/json" \ --max-time ${external_timeout} \ --output "${ib_auth_file}" \ --proxy "${external_proxy}" \ --request POST \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((external_timeout - connrefused_timeout)) \ --silent \ --user-agent "${useragent}" \ "${ib_auth}/auth/token" @@ -63,7 +63,7 @@ busybox=( if [[ -n "${1}" ]] then - while getopts ha:lg:r:m:t:s:cjqui:e:d:n:x: opts + while getopts ha:lg:r:m:t:s:cjqui:e:d:f:n:x: opts do case "${opts}" in (h) @@ -111,6 +111,9 @@ then (d) head_timeout=${OPTARG} ;; + (f) + connrefused_timeout=${OPTARG} + ;; (n) internal_proxy="${OPTARG}" ;; @@ -150,6 +153,7 @@ then "\n -i <secs>\tTelegram Bot API connetion timeout, max: 10, default: 10 secs" \ "\n -e <secs>\tImage Boards API connetion timeout, max: 10, default: 5 secs" \ "\n -d <secs>\tHead request connetion timeout, max: 10, default: 2 secs" \ + "\n -f <secs>\tConnrefused timeout, max: 2, default: none" \ "\n -n <addr>\tProxy server for Telegram Bot API" \ "\n -x <addr>\tProxy server for Image Boards API" \ "\n\nCache modes:" \ @@ -353,6 +357,23 @@ else head_timeout=2 fi +if [[ -n "${connrefused_timeout}" ]] +then + if ! test ${connrefused_timeout} -gt 0 + then + echo "Illegal connrefused timeout" \ + "\nSee '${0} -h'" + exit 1 + fi + + if [[ ${connrefused_timeout} -gt 2 ]] + then + connrefused_timeout=2 + fi +else + connrefused_timeout=0 +fi + if [[ -n "${1}" ]] then api_token="${1}" @@ -413,11 +434,15 @@ then . "${units}/log.zsh" elif [[ "${api_address}" = "${local_address}" ]] then - if ! curl --data "user_id=${api_token%:*}" \ + if ! curl --connect-timeout ${connrefused_timeout} \ + --data "user_id=${api_token%:*}" \ --get \ --max-time ${internal_timeout} \ --output "${cache}/getUserProfilePhotos.json" \ --proxy "${internal_proxy}" \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((internal_timeout - connrefused_timeout)) \ --silent \ --user-agent "${useragent}" \ "${api_address}/bot${api_token}/getUserProfilePhotos" @@ -461,11 +486,15 @@ then exit 1 fi - if ! curl --data-urlencode "file_id=${profilephoto}" \ + if ! curl --connect-timeout ${connrefused_timeout} \ + --data-urlencode "file_id=${profilephoto}" \ --get \ --max-time ${internal_timeout} \ --output "${cache}/getFile.json" \ --proxy "${internal_proxy}" \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((internal_timeout - connrefused_timeout)) \ --silent \ --user-agent "${useragent}" \ "${api_address}/bot${api_token}/getFile" @@ -514,10 +543,14 @@ fi log_text="PID: ${$}" . "${units}/log.zsh" -if ! curl --get \ +if ! curl --connect-timeout ${connrefused_timeout} \ + --get \ --max-time ${internal_timeout} \ --output "${cache}/getMe.json" \ --proxy "${internal_proxy}" \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((internal_timeout - connrefused_timeout)) \ --silent \ --user-agent "${useragent}" \ "${api_address}/bot${api_token}/getMe" @@ -557,10 +590,14 @@ log_text="Bot: ${username}" while trap 'wait && exit 0' INT TERM do - if ! curl --data "offset=${offset}" \ + if ! curl --connect-timeout ${connrefused_timeout} \ + --data "offset=${offset}" \ --get \ --output "${cache}/getUpdates.json" \ --proxy "${internal_proxy}" \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((internal_timeout - connrefused_timeout)) \ --silent \ --user-agent "${useragent}" \ "${api_address}/bot${api_token}/getUpdates" diff --git a/modules/callback.zsh b/modules/callback.zsh index 1fc18fc..15d7f60 100644 --- a/modules/callback.zsh +++ b/modules/callback.zsh @@ -57,7 +57,8 @@ then output_file="${cache}/${update_id}_editMessageText.json" dump+=(${output_file##*/}) - if ! curl --data-urlencode "chat_id=${chat_id}" \ + if ! curl --connect-timeout ${connrefused_timeout} \ + --data-urlencode "chat_id=${chat_id}" \ --data-urlencode "message_id=${message_id}" \ --data-urlencode "inline_message_id=${inline_message_id}" \ --data-urlencode "text=${output_text}" \ @@ -68,6 +69,9 @@ then --max-time ${internal_timeout} \ --output "${output_file}" \ --proxy "${internal_proxy}" \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((internal_timeout - connrefused_timeout)) \ --silent \ --user-agent "${useragent}" \ "${api_address}/bot${api_token}/editMessageText" @@ -108,13 +112,17 @@ fi output_file="${cache}/${update_id}_answerCallbackQuery.json" dump+=(${output_file##*/}) -if ! curl --data-urlencode "callback_query_id=${query_id}" \ +if ! curl --connect-timeout ${connrefused_timeout} \ + --data-urlencode "callback_query_id=${query_id}" \ --data-urlencode "text=${notification_text}" \ --data-urlencode "cache_time=0" \ --get \ --max-time ${internal_timeout} \ --output "${output_file}" \ --proxy "${internal_proxy}" \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((internal_timeout - connrefused_timeout)) \ --silent \ --user-agent "${useragent}" \ "${api_address}/bot${api_token}/answerCallbackQuery" diff --git a/modules/commands.zsh b/modules/commands.zsh index e945298..3e553d2 100644 --- a/modules/commands.zsh +++ b/modules/commands.zsh @@ -81,7 +81,8 @@ esac output_file="${cache}/${update_id}_sendMessage.json" dump+=(${output_file##*/}) -if ! curl --data-urlencode "chat_id=${chat_id}" \ +if ! curl --connect-timeout ${connrefused_timeout} \ + --data-urlencode "chat_id=${chat_id}" \ --data-urlencode "message_thread_id=${message_thread_id}" \ --data-urlencode "text=${output_text}" \ --data-urlencode "parse_mode=HTML" \ @@ -92,6 +93,9 @@ if ! curl --data-urlencode "chat_id=${chat_id}" \ --max-time ${internal_timeout} \ --output "${output_file}" \ --proxy "${internal_proxy}" \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((internal_timeout - connrefused_timeout)) \ --silent \ --user-agent "${useragent}" \ "${api_address}/bot${api_token}/sendMessage" diff --git a/modules/inline.zsh b/modules/inline.zsh index 11d4b3b..63e9666 100644 --- a/modules/inline.zsh +++ b/modules/inline.zsh @@ -53,7 +53,8 @@ esac output_file="${cache}/${update_id}_answerInlineQuery.json" dump+=(${output_file##*/}) -if ! curl --data-urlencode "inline_query_id=${query_id}" \ +if ! curl --connect-timeout ${connrefused_timeout} \ + --data-urlencode "inline_query_id=${query_id}" \ --data-urlencode "results=${results}" \ --data-urlencode "cache_time=0" \ --data-urlencode "next_offset=${next_offset}" \ @@ -61,6 +62,9 @@ if ! curl --data-urlencode "inline_query_id=${query_id}" \ --max-time ${internal_timeout} \ --output "${output_file}" \ --proxy "${internal_proxy}" \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((internal_timeout - connrefused_timeout)) \ --silent \ --user-agent "${useragent}" \ "${api_address}/bot${api_token}/answerInlineQuery" diff --git a/submodules/callback_delete.zsh b/submodules/callback_delete.zsh index ca5e356..99a77c6 100644 --- a/submodules/callback_delete.zsh +++ b/submodules/callback_delete.zsh @@ -8,12 +8,16 @@ message_id="$(jq -r '.callback_query.message.message_id' "${update}")" output_file="${cache}/${update_id}_deleteMessage.json" dump+=(${output_file##*/}) -if ! curl --data-urlencode "chat_id=${chat_id}" \ +if ! curl --connect-timeout ${connrefused_timeout} \ + --data-urlencode "chat_id=${chat_id}" \ --data-urlencode "message_id=${message_id}" \ --get \ --max-time ${internal_timeout} \ --output "${output_file}" \ --proxy "${internal_proxy}" \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((internal_timeout - connrefused_timeout)) \ --silent \ --user-agent "${useragent}" \ "${api_address}/bot${api_token}/deleteMessage" diff --git a/submodules/command_original.zsh b/submodules/command_original.zsh index 59e2077..652199a 100644 --- a/submodules/command_original.zsh +++ b/submodules/command_original.zsh @@ -37,13 +37,17 @@ fi output_file="${cache}/${update_id}_sendChatAction.json" dump+=(${output_file##*/}) -if ! curl --data-urlencode "chat_id=${chat_id}" \ +if ! curl --connect-timeout ${connrefused_timeout} \ + --data-urlencode "chat_id=${chat_id}" \ --data-urlencode "message_thread_id=${message_thread_id}" \ --data-urlencode "action=upload_document" \ --get \ --max-time ${internal_timeout} \ --output "${output_file}" \ --proxy "${internal_proxy}" \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((internal_timeout - connrefused_timeout)) \ --silent \ --user-agent "${useragent}" \ "${api_address}/bot${api_token}/sendChatAction" @@ -80,7 +84,8 @@ fi output_file="${cache}/${update_id}_sendDocument.json" dump+=(${output_file##*/}) -if ! curl --data-urlencode "chat_id=${chat_id}" \ +if ! curl --connect-timeout ${connrefused_timeout} \ + --data-urlencode "chat_id=${chat_id}" \ --data-urlencode "message_thread_id=${message_thread_id}" \ --data-urlencode "document=${ib_file_url}" \ --data-urlencode "thumbnail=${ib_preview_url}" \ @@ -90,6 +95,9 @@ if ! curl --data-urlencode "chat_id=${chat_id}" \ --max-time ${internal_timeout} \ --output "${output_file}" \ --proxy "${internal_proxy}" \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((internal_timeout - connrefused_timeout)) \ --silent \ --user-agent "${useragent}" \ "${api_address}/bot${api_token}/sendDocument" diff --git a/submodules/command_ping.zsh b/submodules/command_ping.zsh index 0ebb2b6..adcff25 100644 --- a/submodules/command_ping.zsh +++ b/submodules/command_ping.zsh @@ -8,7 +8,8 @@ dump+=(${output_file##*/}) latency_init=$(strftime %s%N) -if ! curl --data-urlencode "chat_id=${chat_id}" \ +if ! curl --connect-timeout ${connrefused_timeout} \ + --data-urlencode "chat_id=${chat_id}" \ --data-urlencode "message_thread_id=${message_thread_id}" \ --data-urlencode "text=${output_text}" \ --data-urlencode "reply_parameters=${reply_parameters}" \ @@ -16,6 +17,9 @@ if ! curl --data-urlencode "chat_id=${chat_id}" \ --max-time ${internal_timeout} \ --output "${output_file}" \ --proxy "${internal_proxy}" \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((internal_timeout - connrefused_timeout)) \ --silent \ --user-agent "${useragent}" \ "${api_address}/bot${api_token}/sendMessage" @@ -69,7 +73,8 @@ output_text="$(printf "<b>Latency:</b> %ums" "${latency}")" output_file="${cache}/${update_id}_editMessageText.json" dump+=(${output_file##*/}) -if ! curl --data-urlencode "chat_id=${chat_id}" \ +if ! curl --connect-timeout ${connrefused_timeout} \ + --data-urlencode "chat_id=${chat_id}" \ --data-urlencode "message_id=${message_id}" \ --data-urlencode "text=${output_text}" \ --data-urlencode "parse_mode=HTML" \ @@ -77,6 +82,9 @@ if ! curl --data-urlencode "chat_id=${chat_id}" \ --max-time ${internal_timeout} \ --output "${output_file}" \ --proxy "${internal_proxy}" \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((internal_timeout - connrefused_timeout)) \ --silent \ --user-agent "${useragent}" \ "${api_address}/bot${api_token}/editMessageText" diff --git a/units/ib_file.zsh b/units/ib_file.zsh index ecdc545..cb526b8 100644 --- a/units/ib_file.zsh +++ b/units/ib_file.zsh @@ -50,7 +50,8 @@ fi rm -f "${ib_file}" -if ! curl --cookie "${ib_cookies}" \ +if ! curl --connect-timeout ${connrefused_timeout} \ + --cookie "${ib_cookies}" \ --data-urlencode "${ib_dfield1}" \ --data-urlencode "${ib_dfield2}" \ --data-urlencode "${ib_dfield3}" \ @@ -65,6 +66,9 @@ if ! curl --cookie "${ib_cookies}" \ --max-time ${external_timeout} \ --output "${ib_file}" \ --proxy "${external_proxy}" \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((external_timeout - connrefused_timeout)) \ --silent \ --user-agent "${useragent}" \ "${ib_data_url}" diff --git a/units/ib_size.zsh b/units/ib_size.zsh index 5e1506f..762c801 100644 --- a/units/ib_size.zsh +++ b/units/ib_size.zsh @@ -12,9 +12,13 @@ then return 0 fi -ib_file_size="$(curl --head \ +ib_file_size="$(curl --connect-timeout ${connrefused_timeout} \ + --head \ --max-time ${head_timeout} \ --proxy "${external_proxy}" \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((external_timeout - connrefused_timeout)) \ --silent \ --user-agent "${useragent}" \ "${ib_file_url}" | diff --git a/units/sn_auth.zsh b/units/sn_auth.zsh index 1315208..ab75ddd 100644 --- a/units/sn_auth.zsh +++ b/units/sn_auth.zsh @@ -17,12 +17,16 @@ fi sn_file="${cache}/${update_id}_search.json" dump+=(${sn_file##*/}) -if ! curl --data-urlencode "output_type=2" \ +if ! curl --connect-timeout ${connrefused_timeout} \ + --data-urlencode "output_type=2" \ --data-urlencode "api_key=${sn_key}" \ --get \ --max-time ${external_timeout} \ --output "${sn_file}" \ --proxy "${external_proxy}" \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((external_timeout - connrefused_timeout)) \ --silent \ --user-agent "${useragent}" \ "https://saucenao.com/search.php" diff --git a/units/sn_get.zsh b/units/sn_get.zsh index 4d55351..9e99e9c 100644 --- a/units/sn_get.zsh +++ b/units/sn_get.zsh @@ -20,11 +20,15 @@ fi output_file="${cache}/${update_id}_getFile.json" dump+=(${output_file##*/}) -if ! curl --data-urlencode "file_id=${file_id}" \ +if ! curl --connect-timeout ${connrefused_timeout} \ + --data-urlencode "file_id=${file_id}" \ --get \ --max-time ${internal_timeout} \ --output "${output_file}" \ --proxy "${internal_proxy}" \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((external_timeout - connrefused_timeout)) \ --silent \ --user-agent "${useragent}" \ "${api_address}/bot${api_token}/getFile" @@ -74,9 +78,13 @@ then output_file="${cache}/${update_id}_file.jpg" dump+=(${output_file##*/}) - if ! curl --max-time ${internal_timeout} \ + if ! curl --connect-timeout ${connrefused_timeout} \ + --max-time ${internal_timeout} \ --output "${output_file}" \ --proxy "${internal_proxy}" \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((external_timeout - connrefused_timeout)) \ --silent \ --user-agent "${useragent}" \ "${api_address}/file/bot${api_token}/${file_path}" diff --git a/units/sn_search.zsh b/units/sn_search.zsh index 4f1e64c..77af268 100644 --- a/units/sn_search.zsh +++ b/units/sn_search.zsh @@ -5,7 +5,8 @@ sn_file="${cache}/${update_id}_search.json" dump+=(${sn_file##*/}) -if ! curl --form "output_type=2" \ +if ! curl --connect-timeout ${connrefused_timeout} \ + --form "output_type=2" \ --form "api_key=${sn_key}" \ --form "dbs[]=9" \ --form "dbs[]=12" \ @@ -19,6 +20,9 @@ if ! curl --form "output_type=2" \ --max-time ${external_timeout} \ --output "${sn_file}" \ --proxy "${external_proxy}" \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((external_timeout - connrefused_timeout)) \ --silent \ --user-agent "${useragent}" \ "https://saucenao.com/search.php" |
