diff options
| author | Maria Lisina <sekoohaka.sarisan@gmail.com> | 2026-03-02 20:55:12 +0300 |
|---|---|---|
| committer | Maria Lisina <sekoohaka.sarisan@gmail.com> | 2026-03-02 20:55:12 +0300 |
| commit | 637f7ce651a45a217f31c9dbcc5878963a6f9d38 (patch) | |
| tree | 3fe2ae422acd0cc3490b42f1a08327f88d63ac15 | |
| parent | c438df5cfa64dcabbb3d173c30ded316b300a7b3 (diff) | |
*/*: Switch to single lock per single user directory
Signed-off-by: Maria Lisina <sekoohaka.sarisan@gmail.com>
| -rwxr-xr-x | bot.zsh | 7 | ||||
| -rw-r--r-- | operators/callback_short.zsh | 8 | ||||
| -rw-r--r-- | operators/callback_stop.zsh | 13 | ||||
| -rw-r--r-- | operators/command_export.zsh | 128 | ||||
| -rw-r--r-- | operators/command_shorts.zsh | 6 | ||||
| -rw-r--r-- | operators/command_source.zsh | 4 | ||||
| -rw-r--r-- | operators/command_stop.zsh | 12 | ||||
| -rw-r--r-- | operators/inline_none.zsh | 4 | ||||
| -rw-r--r-- | operators/inline_shorts.zsh | 6 | ||||
| -rw-r--r-- | units/export.zsh | 116 | ||||
| -rw-r--r-- | units/ib_lock.zsh | 4 | ||||
| -rw-r--r-- | units/ib_token.zsh | 4 |
12 files changed, 142 insertions, 170 deletions
@@ -45,13 +45,6 @@ data_table=( shorts "Shortcuts" ) -user_locks=( - data - auth - source - shorts -) - zmodules=( zsh/datetime zsh/files diff --git a/operators/callback_short.zsh b/operators/callback_short.zsh index 120668f..41d8ea2 100644 --- a/operators/callback_short.zsh +++ b/operators/callback_short.zsh @@ -2,7 +2,7 @@ # Copyright (C) 2024-2026 Danil Lisin # SPDX-License-Identifier: Apache-2.0 -until mkdir "${user_config}_shorts.lock" +until mkdir "${user_config}.lock" do sleep 1 done @@ -14,7 +14,7 @@ then else notification_text="You must specify query" - rmdir "${user_config}_shorts.lock" + rmdir "${user_config}.lock" return fi @@ -27,7 +27,7 @@ then log_text="callback_short (${update_id}): ${notification_text}" source "${units}/log.zsh" - rmdir "${user_config}_shorts.lock" + rmdir "${user_config}.lock" return fi @@ -54,4 +54,4 @@ then rmdir "${shorts_config}" fi -rmdir "${user_config}_shorts.lock" +rmdir "${user_config}.lock" diff --git a/operators/callback_stop.zsh b/operators/callback_stop.zsh index d2eab2c..d0dc441 100644 --- a/operators/callback_stop.zsh +++ b/operators/callback_stop.zsh @@ -29,12 +29,9 @@ then return fi -for lock in ${user_locks[@]} +until mkdir "${user_config}.lock" do - until mkdir "${user_config}_${lock}.lock" - do - sleep 1 - done + sleep 1 done if [[ -n "${data_name}" ]] @@ -62,9 +59,5 @@ fi source "${units}/stop.zsh" -for lock in ${user_locks[@]} -do - rmdir "${user_config}_${lock}.lock" -done - +rmdir "${user_config}.lock" rmdir "${user_config}_stop.lock" diff --git a/operators/command_export.zsh b/operators/command_export.zsh index 370aea0..2f019d1 100644 --- a/operators/command_export.zsh +++ b/operators/command_export.zsh @@ -8,22 +8,130 @@ then return fi -for lock in ${user_locks[@]} +until mkdir "${user_config}.lock" do - until mkdir "${user_config}_${lock}.lock" - do - sleep 1 - done + sleep 1 done -source "${units}/export.zsh" +if ! [[ -d "${user_config}" ]] +then + output_text="No user data found" -for lock in ${user_locks[@]} + rmdir "${user_config}.lock" + return +fi + +until mkdir "${cache}/${user_id}.lock" do - rmdir "${user_config}_${lock}.lock" + sleep 1 done -if [[ -z "${output_text}" ]] +rm -f "${cache}/${user_id}.tar" + +if ! tar c -hf "${cache}/${user_id}.tar" -C "${users}" "${user_id}" +then + output_text="Something went wrong, try again later" + + rmdir "${cache}/${user_id}.lock" + return +fi + +if ! output_data="$( + curl --connect-timeout ${connrefused_timeout} \ + --data-urlencode "chat_id=${chat_id}" \ + --data-urlencode "action=upload_document" \ + --get \ + --max-time ${internal_timeout} \ + --proxy "${internal_proxy}" \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((internal_timeout - connrefused_timeout)) \ + --silent \ + --user-agent "${useragent}" \ + "${api_address}/bot${api_token}/sendChatAction" +)" +then + log_text="sendChatAction (${update_id}): Failed to access Telegram Bot API" + source "${units}/log.zsh" +fi + +if [[ -z "${log_text}" ]] && ! jq -e '.' <<< "${output_data}" > /dev/null +then + log_text="sendChatAction (${update_id}): An unknown error occurred" + source "${units}/log.zsh" +fi + +if [[ -z "${log_text}" && "$(jq -r '.ok' <<< "${output_data}")" != "true" ]] +then + error_description="$(jq -r '.description' <<< "${output_data}")" + + if [[ "${error_description}" != "null" ]] + then + log_text="sendChatAction (${update_id}): ${error_description}" + else + log_text="sendChatAction (${update_id}): An unknown error occurred" + fi + + source "${units}/log.zsh" +fi + +if ! output_data="$( + curl --connect-timeout ${connrefused_timeout} \ + --form "chat_id=${chat_id}" \ + --form "document=@${cache}/${user_id}.tar" \ + --form "reply_parameters=${reply_parameters}" \ + --get \ + --max-time ${internal_timeout} \ + --proxy "${internal_proxy}" \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((internal_timeout - connrefused_timeout)) \ + --silent \ + --user-agent "${useragent}" \ + "${api_address}/bot${api_token}/sendDocument" +)" then - exit + output_text="Failed to send user data" + + log_text="sendDocument (${update_id}): Failed to access Telegram Bot API" + source "${units}/log.zsh" + + rmdir "${cache}/${user_id}.lock" + rmdir "${user_config}.lock" + return fi + +if ! jq -e '.' <<< "${output_data}" > /dev/null +then + output_text="An unknown error occurred" + + log_text="sendDocument (${update_id}): An unknown error occurred" + source "${units}/log.zsh" + + rmdir "${cache}/${user_id}.lock" + rmdir "${user_config}.lock" + return +fi + +if [[ "$(jq -r '.ok' <<< "${output_data}")" != "true" ]] +then + output_text="Failed to send user data" + error_description="$(jq -r '.description' <<< "${output_data}")" + + if [[ "${error_description}" != "null" ]] + then + log_text="sendDocument (${update_id}): ${error_description}" + else + log_text="sendDocument (${update_id}): An unknown error occurred" + fi + + source "${units}/log.zsh" + + rmdir "${cache}/${user_id}.lock" + rmdir "${user_config}.lock" + return +fi + +rmdir "${cache}/${user_id}.lock" +rmdir "${user_config}.lock" +exit diff --git a/operators/command_shorts.zsh b/operators/command_shorts.zsh index f52b531..bdc3b26 100644 --- a/operators/command_shorts.zsh +++ b/operators/command_shorts.zsh @@ -2,7 +2,7 @@ # Copyright (C) 2024-2026 Danil Lisin # SPDX-License-Identifier: Apache-2.0 -until mkdir "${user_config}_shorts.lock" +until mkdir "${user_config}.lock" do sleep 1 done @@ -18,7 +18,7 @@ if [[ ${#shorts} -eq 0 ]] then output_text="You have no saved shortcuts yet" - rmdir "${user_config}_shorts.lock" + rmdir "${user_config}.lock" return fi @@ -50,4 +50,4 @@ then )" fi -rmdir "${user_config}_shorts.lock" +rmdir "${user_config}.lock" diff --git a/operators/command_source.zsh b/operators/command_source.zsh index 8c4d7b1..f7b0cdc 100644 --- a/operators/command_source.zsh +++ b/operators/command_source.zsh @@ -7,7 +7,7 @@ then exit fi -until mkdir "${user_config}_source.lock" +until mkdir "${user_config}.lock" do sleep 1 done @@ -21,7 +21,7 @@ then rmdir "${user_config}" fi -rmdir "${user_config}_source.lock" +rmdir "${user_config}.lock" if [[ -n "${output_text}" ]] then diff --git a/operators/command_stop.zsh b/operators/command_stop.zsh index 1ddf10c..25405aa 100644 --- a/operators/command_stop.zsh +++ b/operators/command_stop.zsh @@ -8,17 +8,11 @@ then return fi -for lock in ${user_locks[@]} +until mkdir "${user_config}.lock" do - until mkdir "${user_config}_${lock}.lock" - do - sleep 1 - done + sleep 1 done source "${units}/stop.zsh" -for lock in ${user_locks[@]} -do - rmdir "${user_config}_${lock}.lock" -done +rmdir "${user_config}.lock" diff --git a/operators/inline_none.zsh b/operators/inline_none.zsh index c6b0a2e..f6ac372 100644 --- a/operators/inline_none.zsh +++ b/operators/inline_none.zsh @@ -2,7 +2,7 @@ # Copyright (C) 2024-2026 Danil Lisin # SPDX-License-Identifier: Apache-2.0 -until mkdir "${user_config}_shorts.lock" +until mkdir "${user_config}.lock" do sleep 1 done @@ -21,4 +21,4 @@ else command="help" fi -rmdir "${user_config}_shorts.lock" +rmdir "${user_config}.lock" diff --git a/operators/inline_shorts.zsh b/operators/inline_shorts.zsh index ea40e95..7a287c2 100644 --- a/operators/inline_shorts.zsh +++ b/operators/inline_shorts.zsh @@ -2,7 +2,7 @@ # Copyright (C) 2024-2026 Danil Lisin # SPDX-License-Identifier: Apache-2.0 -until mkdir "${user_config}_shorts.lock" +until mkdir "${user_config}.lock" do sleep 1 done @@ -40,7 +40,7 @@ then )" fi - rmdir "${user_config}_shorts.lock" + rmdir "${user_config}.lock" return fi @@ -109,4 +109,4 @@ then next_offset=$((inline_page + 1)) fi -rmdir "${user_config}_shorts.lock" +rmdir "${user_config}.lock" diff --git a/units/export.zsh b/units/export.zsh deleted file mode 100644 index e92f612..0000000 --- a/units/export.zsh +++ /dev/null @@ -1,116 +0,0 @@ -# Copyright (C) 2024-2026 Maria Lisina -# Copyright (C) 2024-2026 Danil Lisin -# SPDX-License-Identifier: Apache-2.0 - -if ! [[ -d "${user_config}" ]] -then - output_text="No user data found" - return -fi - -until mkdir "${cache}/${user_id}.lock" -do - sleep 1 -done - -rm -f "${cache}/${user_id}.tar" - -if ! tar c -hf "${cache}/${user_id}.tar" -C "${users}" "${user_id}" -then - output_text="Something went wrong, try again later" - - rmdir "${cache}/${user_id}.lock" - return -fi - -if ! output_data="$( - curl --connect-timeout ${connrefused_timeout} \ - --data-urlencode "chat_id=${chat_id}" \ - --data-urlencode "action=upload_document" \ - --get \ - --max-time ${internal_timeout} \ - --proxy "${internal_proxy}" \ - --retry 1 \ - --retry-connrefused \ - --retry-max-time $((internal_timeout - connrefused_timeout)) \ - --silent \ - --user-agent "${useragent}" \ - "${api_address}/bot${api_token}/sendChatAction" -)" -then - log_text="sendChatAction (${update_id}): Failed to access Telegram Bot API" - source "${units}/log.zsh" -fi - -if [[ -z "${log_text}" ]] && ! jq -e '.' <<< "${output_data}" > /dev/null -then - log_text="sendChatAction (${update_id}): An unknown error occurred" - source "${units}/log.zsh" -fi - -if [[ -z "${log_text}" && "$(jq -r '.ok' <<< "${output_data}")" != "true" ]] -then - error_description="$(jq -r '.description' <<< "${output_data}")" - - if [[ "${error_description}" != "null" ]] - then - log_text="sendChatAction (${update_id}): ${error_description}" - else - log_text="sendChatAction (${update_id}): An unknown error occurred" - fi - - source "${units}/log.zsh" -fi - -if ! output_data="$( - curl --connect-timeout ${connrefused_timeout} \ - --form "chat_id=${chat_id}" \ - --form "document=@${cache}/${user_id}.tar" \ - --form "reply_parameters=${reply_parameters}" \ - --get \ - --max-time ${internal_timeout} \ - --proxy "${internal_proxy}" \ - --retry 1 \ - --retry-connrefused \ - --retry-max-time $((internal_timeout - connrefused_timeout)) \ - --silent \ - --user-agent "${useragent}" \ - "${api_address}/bot${api_token}/sendDocument" -)" -then - output_text="Failed to send user data" - - log_text="sendDocument (${update_id}): Failed to access Telegram Bot API" - source "${units}/log.zsh" - - rmdir "${cache}/${user_id}.lock" - return -fi - -if ! jq -e '.' <<< "${output_data}" > /dev/null -then - output_text="An unknown error occurred" - - log_text="sendDocument (${update_id}): An unknown error occurred" - source "${units}/log.zsh" - - rmdir "${cache}/${user_id}.lock" - return -fi - -if [[ "$(jq -r '.ok' <<< "${output_data}")" != "true" ]] -then - output_text="Failed to send user data" - error_description="$(jq -r '.description' <<< "${output_data}")" - - if [[ "${error_description}" != "null" ]] - then - log_text="sendDocument (${update_id}): ${error_description}" - else - log_text="sendDocument (${update_id}): An unknown error occurred" - fi - - source "${units}/log.zsh" -fi - -rmdir "${cache}/${user_id}.lock" diff --git a/units/ib_lock.zsh b/units/ib_lock.zsh index 16bb2d3..b2c8c49 100644 --- a/units/ib_lock.zsh +++ b/units/ib_lock.zsh @@ -2,11 +2,11 @@ # Copyright (C) 2024-2026 Danil Lisin # SPDX-License-Identifier: Apache-2.0 -until mkdir "${user_config}_auth.lock" +until mkdir "${user_config}.lock" do sleep 1 done source "${units}/ib_auth.zsh" -rmdir "${user_config}_auth.lock" +rmdir "${user_config}.lock" diff --git a/units/ib_token.zsh b/units/ib_token.zsh index 617d91e..7ff05e1 100644 --- a/units/ib_token.zsh +++ b/units/ib_token.zsh @@ -2,7 +2,7 @@ # Copyright (C) 2024-2026 Danil Lisin # SPDX-License-Identifier: Apache-2.0 -until mkdir "${user_config}_auth.lock" +until mkdir "${user_config}.lock" do sleep 1 done @@ -38,4 +38,4 @@ then ib_headers="${ib_header} $(< "${token_file}")" fi -rmdir "${user_config}_auth.lock" +rmdir "${user_config}.lock" |
