bloc_note
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| bloc_note [2025/07/19 10:29] – [Avantage CB] admin | bloc_note [2026/01/08 13:54] (Version actuelle) – admin | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| Bloc Note rapide | Bloc Note rapide | ||
| + | < | ||
| + | #!/bin/bash | ||
| + | # -------------------------------------------------- | ||
| + | # Cron API – rate‑limit (30 req/min) → 429 Too Many Requests | ||
| + | # -------------------------------------------------- | ||
| + | # ---------- Configuration ---------- | ||
| + | MAX_PER_MIN=30 | ||
| + | RATEFILE="/ | ||
| - | Memo avion : | + | # ---------- Fonctions ---------- |
| + | # Retourne le timestamp (epoch) actuel | ||
| + | now() { date +%s; } | ||
| + | # Nettoie les anciennes entrées du fichier rate‑limit | ||
| + | cleanup_ratefile() { | ||
| + | local now_ts=$(now) | ||
| + | # Si le fichier existe, on garde uniquement les lignes < 60s d' | ||
| + | if [[ -f " | ||
| + | # On lit chaque ligne : epoch|count | ||
| + | while IFS=' | ||
| + | # Si l' | ||
| + | (( now_ts - ts > 60 )) && continue | ||
| + | echo " | ||
| + | done < " | ||
| + | mv " | ||
| + | fi | ||
| + | } | ||
| - | | + | # Retourne le nombre d’appels valides dans la fenêtre courante |
| - | ^Numéro de vol ^Avion ^Destination ^Cabine Premium rénovée ?^ | + | get_current_count() { |
| - | |AF6 / AF7 |Boeing 777-300ER (rénové) |CDG ⇄ JFK |✅ Oui| | + | local cnt=0 |
| - | |AF8 / AF9 |Airbus A350-900 |CDG ⇄ JFK |✅ Oui (mais un peu moins spacieux que le 777)| | + | if [[ -f " |
| - | |AF16 / AF17 |Airbus A350-900 |CDG ⇄ JFK |✅ Oui| | + | while IFS='|' read -r ts cnt; do |
| - | |AF62 / AF63 |Boeing 777-200ER |CDG ⇄ JFK |❌ Non (ancienne cabine Premium Economy)| | + | |
| + | done < " | ||
| + | fi | ||
| + | echo " | ||
| + | } | ||
| - | | + | # Incrémente le compteur et réécrit le fichier (appelé après validation) |
| - | ^Vol ^Avion ^Pitch ^Confort ^Note ^ | + | increment_and_store() { |
| - | |AF007 (AF7) |777-300ER rénové |96 cm |Excellent |⭐⭐⭐⭐⭐| | + | local new_ts=$(now) |
| - | |AF015 (AF15) |A350-900 |96 cm |Très bon |⭐⭐⭐⭐| | + | # Si le fichier est vide ou la fenêtre a expiré, on recommence à 1 |
| - | |AF023 | + | if [[ ! -s " |
| + | echo " | ||
| + | else | ||
| + | # On incrémente le compteur de la première entrée | ||
| + | local first_ts=$(cut | ||
| + | | ||
| + | # Nouvelle fenêtre : on repart à 1 | ||
| + | echo " | ||
| + | else | ||
| + | # On incrémente le compteur existant | ||
| + | local new_cnt=$(( $(cut -d'|' -f2 " | ||
| + | echo " | ||
| + | fi | ||
| + | fi | ||
| + | } | ||
| + | # ---------- Middleware de rate‑limit ---------- | ||
| + | cleanup_ratefile | ||
| + | current_count=$(get_current_count) | ||
| + | if (( current_count >= MAX_PER_MIN )); then | ||
| + | # Trop de requêtes -> renvoyer 429 + JSON d’erreur | ||
| + | printf " | ||
| + | printf " | ||
| + | cat <<EOF | ||
| + | { | ||
| + | " | ||
| + | } | ||
| + | EOF | ||
| + | exit 0 # arrêt du script CGI (apache ne lit rien d’autre) | ||
| + | fi | ||
| + | # Si on arrive ici, on peut continuer le traitement habituel | ||
| + | increment_and_store | ||
| - | | + | # -------------------------------------------------- |
| - | ^ Avion ^Siège idéal | + | # Votre logique métier habituelle (exemple) |
| - | |777-300ER | 10A / 10L / 10C / 10J | Plus d' | + | # -------------------------------------------------- |
| - | |A350 | + | |
| - | ✅ Meilleures places Premium Economy | + | # Exemple |
| - | * 10A / 10L : fenêtre + rangée avant | + | # (remplacez par votre logique réelle) |
| - | * 10C / 10J : allée, devant, plus d’espace | + | |
| - | * 10B / 10K : au milieu de la rangée avant, bon compromis | + | |
| - | * Ces sièges sont à l’avant | + | # 1) Récupérer la dernière ligne du log de cron (ou syslog) |
| - | * Aucun siège devant → plus d’espace pour les jambes | + | # Ici on suppose que le fichier de log est /var/log/cron.log |
| - | * Service plus rapide | + | CRON_LOG=" |
| - | * Débarquement plus rapide | + | if [[ -r " |
| - | * Cabine plus calme | + | # Extraire la dernière ligne qui contient notre job (exemple |
| - | * | + | LAST_RUN=$(grep |
| - | * [[https://seatguru.com/ | site pour info sur les espace cabine ]] | + | # Si aucune ligne trouvée → état "not run" |
| - | * [[https://www.skyscanner.fr/ |Recherche de billets ]] | + | if [[ -z " |
| - | | + | STATUS=" |
| - | * [[https:// | + | else |
| + | # Exemple d' | ||
| + | # Supposons que le format soit: "Jun 12 08:34:56 server CRON[12345]: | ||
| + | # Vous pouvez adapter l' | ||
| + | LAST_TIME=$(echo " | ||
| + | EXIT_CODE=$(( RANDOM % 4 )) # placeholder | ||
| + | STATUS=" | ||
| + | fi | ||
| + | else | ||
| + | STATUS=' | ||
| + | fi | ||
| + | # ---------- Envoi de la réponse JSON ---------- | ||
| + | printf " | ||
| + | printf " | ||
| + | printf " | ||
| - | + | exit 0 | |
| - | + | ||
| - | ====== Avantage CB ====== | + | |
| - | 🧾 Résumé de tes cartes et de leurs avantages aux États-Unis | + | |
| - | + | ||
| - | ^Carte ^Paiements $ ^Retraits $ ^Taux de change ^Notes clés^ | + | |
| - | |Revolut Metal |✅ Gratuits |✅ Gratuits jusqu’à env. 800 €/ | + | |
| - | |Meilleur taux de change| | + | |
| - | |Hello Prime |✅ Gratuits |✅ Gratuits (chez Bank of America) |🟢 Taux Visa (bon) |Top pour retraits| | + | |
| - | |N26 Standard |✅ Gratuits |❌ 1,7% de frais |🟢 Taux Mastercard |Pas idéale pour retraits| | + | |
| - | |Boursorama Welcome |❌ 1,94% de frais |❌ 1,94% de frais |🔴 Frais élevés |À éviter à l’étranger| | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | < | + | |
| </ | </ | ||
bloc_note.1752913773.txt.gz · Dernière modification : de admin
