Skip to content

Commit

Permalink
fix(news): Make curl fail on http server errors responses when checki…
Browse files Browse the repository at this point in the history
…ng for recent news (#220)

This commit makes curl fail on HTTP server error responses (e.g. archlinux.org is down or under huge loads, responding http error code 504, 502, etc...).  
This is to prevent getting wrongly formatted news list in such scenarios, resulting in an unexpected error and incorrectly formatted news display.
  • Loading branch information
Antiz96 authored Jul 20, 2024
1 parent 4a0b4df commit 384b6bc
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 15 deletions.
8 changes: 4 additions & 4 deletions po/arch-update.pot
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ msgstr ""
#: src/script/arch-update.sh:362
#, sh-format
msgid ""
"Unable to retrieve recent Arch News within a reasonable time (request "
"Unable to retrieve recent Arch News (HTTP error response or request "
"timeout)\\nPlease, look for any recent news at https://archlinux.org before "
"updating your system"
msgstr ""
Expand Down Expand Up @@ -278,9 +278,9 @@ msgstr ""
#: src/script/arch-update.sh:425
#, sh-format
msgid ""
"Unable to retrieve the selected Arch News within a reasonable time (possibly "
"because of a slow or faulty network connection)\\nPlease, read the selected "
"Arch News at ${news_url} before updating your system"
"Unable to retrieve the selected Arch News (HTTP error response or request "
"timeout)\\nPlease, read the selected Arch News at ${news_url} before "
"updating your system"
msgstr ""

#: src/script/arch-update.sh:430
Expand Down
14 changes: 7 additions & 7 deletions po/fr.po
Original file line number Diff line number Diff line change
Expand Up @@ -269,11 +269,11 @@ msgstr "Recherche des Arch News récentes..."
#: src/script/arch-update.sh:362
#, sh-format
msgid ""
"Unable to retrieve recent Arch News within a reasonable time (request "
"Unable to retrieve recent Arch News (HTTP error response or request "
"timeout)\\nPlease, look for any recent news at https://archlinux.org before "
"updating your system"
msgstr ""
"Impossible de récupérer les Arch News récentes dans un délai raisonnable (délai "
"Impossible de récupérer les Arch News récentes (réponse HTTP en erreur ou délai "
"d'attente de la demande dépassé)\\nVeuillez consultez les dernières "
"news à l'adresse suivante avant de mettre à jour votre système : https://archlinux.org"

Expand Down Expand Up @@ -313,12 +313,12 @@ msgstr ""
#: src/script/arch-update.sh:425
#, sh-format
msgid ""
"Unable to retrieve the selected Arch News within a reasonable time (possibly "
"because of a slow or faulty network connection)\\nPlease, read the selected "
"Arch News at ${news_url} before updating your system"
"Unable to retrieve the selected Arch News (HTTP error response or request "
"timeout)\\nPlease, read the selected Arch News at ${news_url} before "
"updating your system"
msgstr ""
"Impossible de récupérer la news sélectionnée dans un délai raisonnable (possiblement "
"à cause d'une connexion réseau lente ou défectueuse)\\nVeuillez consultez la news sélectionnée "
"Impossible de récupérer la news sélectionnée (réponse HTTP en erreur ou délai d'attente "
"de la demande dépassé)\\nVeuillez consultez la news sélectionnée "
"à l'adresse suivante avant de mettre à jour votre système : ${news_url}"

#: src/script/arch-update.sh:430
Expand Down
8 changes: 4 additions & 4 deletions src/script/arch-update.sh
Original file line number Diff line number Diff line change
Expand Up @@ -355,11 +355,11 @@ list_packages() {
# Definition of the list_news function: Display the latest Arch news and offers to read them
list_news() {
info_msg "$(eval_gettext "Looking for recent Arch News...")"
news=$(curl -m 30 -Ls https://www.archlinux.org/news || echo "timeout")
news=$(curl -m 30 -Lfs https://www.archlinux.org/news || echo "timeout")

if [ "${news}" == "timeout" ]; then
echo
warning_msg "$(eval_gettext "Unable to retrieve recent Arch News within a reasonable time (request timeout)\nPlease, look for any recent news at https://archlinux.org before updating your system")"
warning_msg "$(eval_gettext "Unable to retrieve recent Arch News (HTTP error response or request timeout)\nPlease, look for any recent news at https://archlinux.org before updating your system")"
else
if [ -z "${show_news}" ]; then
echo "${news}" | htmlq -a title a | grep ^"View:" | sed "s/View:\ //g" | head -1 > "${statedir}/current_news_check"
Expand Down Expand Up @@ -418,11 +418,11 @@ list_news() {
news_selected=$(sed -n "${num}"p <<< "${news_titles}")
news_path=$(echo "${news_selected}" | sed s/\ -//g | sed s/\ /-/g | sed s/[.]//g | sed s/=//g | sed s/\>//g | sed s/\<//g | sed s/\`//g | sed s/://g | sed s/+//g | sed s/[[]//g | sed s/]//g | sed s/,//g | sed s/\(//g | sed s/\)//g | sed s/[/]//g | sed s/@//g | sed s/\'//g | sed s/--/-/g | awk '{print tolower($0)}')
news_url="https://www.archlinux.org/news/${news_path}"
news_content=$(curl -m 30 -Ls "${news_url}" || echo "timeout")
news_content=$(curl -m 30 -Lfs "${news_url}" || echo "timeout")

if [ "${news_content}" == "timeout" ]; then
echo
warning_msg "$(eval_gettext "Unable to retrieve the selected Arch News within a reasonable time (possibly because of a slow or faulty network connection)\nPlease, read the selected Arch News at \${news_url} before updating your system")"
warning_msg "$(eval_gettext "Unable to retrieve the selected Arch News (HTTP error response or request timeout)\nPlease, read the selected Arch News at \${news_url} before updating your system")"
else
news_author=$(echo "${news_content}" | htmlq -t .article-info | cut -f3- -d " ")
news_date=$(echo "${news_content}" | htmlq -t .article-info | cut -f1 -d " ")
Expand Down

0 comments on commit 384b6bc

Please sign in to comment.