Aller au contenu

Jojo (BE)

Membres
  • Compteur de contenus

    419
  • Inscription

  • Dernière visite

  • Jours gagnés

    2

Tout ce qui a été posté par Jojo (BE)

  1. en effet, le plus safe est d'avoir un nom de domaine (il ne faut pas casser son PEL : 8€/an) et de configurer le reverse proxy, le tout en https (certificats gratuits Letsencrypt)
  2. pour activer l'accès extérieu,le mieux serait de configurer le reverse proxy du syno (si tu as un nom de domaine). Comme dit précédemment, tout ouvrir dans le FW est dangereux, mais tu peux le configurer pour qu'il n'ouvre que certains ports (= ceux de ton DSM-par défaut 5000 ou 5001) pour une région de provenance (= France ?) donnée.
  3. voici donc une mise à jour du post/script basée sur : le fait que ça ne fonctionnait pas du tout chez moi je ne recevais pas les mails Pour régler le premier souci : - dans Notepad ++ mes fins de ligne affichaient CRLF au lieu de LF (si on affiche les caractères spéciaux) - en fait il faut LF, et pour cela (dans Notepad++) il faut Edition -> Convertir les sauts de ligne -> Convertir en format UNIX (LF) Ensuite les mails ne partaient pas, et là j'ai du changer dans le code du script. J'en ai profité pour faire d'autres adaptation (log : 1 ligne au lien de> 5 lignes à chaque changement de WAN, ...) voici donc le code qui va bien (chez moi) pour DSM 7.2 #!/bin/bash # NotifWanChange.sh # https://www.nas-forum.com/forum/topic/63653-tuto-envoi-de-mail-de-changement-de-ip-pour-dsm-et-srm/ # 25/03/2025 by Jojo (BE) : compatibility with DSM 7.2 # & various optimisations (v0.1.0) # 25/07/2019 by PPJP, Supertxt & unPixel : original numbering (v0.0.2) ##################### ### CONFIGURATION ### ##################### # Mail MAIL_TO="destinataire@ndd.tld" MAIL_FROM="${HOSTNAME} <expediteur@ndd.tld>" MAIL_SUBJECT="[${HOSTNAME}] Votre adresse IP publique (WAN) a changé !" # fichiers de memo de l'IP et des logs MEMOIPFILE="/volume1/ScriptsUnix/ip.txt" LOGFILE="/volume1/ScriptsUnix/ip.log" # listes de sites retournant l'IP WAN SITES=("http://checkip.amazonaws.com" "https://api.ipify.org/" "http://ipecho.net/plain" "http://icanhazip.com/" "http://ipinfo.io/ip" "https://wtfismyip.com/text" "http://whatismyip.akamai.com/" "https://ipv4bot.whatismyipaddress.com" "https://www.dsfc.net/ipinfo.php" "http://api.ipaddress.com/myip") ################# ### FONCTIONS ### ################# memoriser_IP() { echo $new_ip > $MEMOIPFILE } lire_old_ip() { if test -f "$MEMOIPFILE"; then old_ip=`cat $MEMOIPFILE` #lecture ancienne IP si fichier ip.txt existe fi } lire_ip_wan() { nbTest=0 ip_lue_valide=1 # boucle sur les sites pour en trouver un retournant une IP valide until [[ $ip_lue_valide -eq 0 || $nbTest -eq $nbSites ]];do ip_lue=`curl -s -L ${SITES[($[($1 + $nbTest) % $nbSites])]}` if [[ $ip_lue =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then # test si reponse est une IP ip_lue_valide=0 else ((nbTest++)) sleep 1 #utile? fi # repositine pointeur sur le suivant du dernier consulté idSite=($[($1 + $nbTest) % $nbSites + 1]) done } envoi_mail() { MAIL_BODY=`printf "Bonjour,\nVotre adresse IP publique (WAN) a changé !\n\nAncienne IP : $old_ip\nNouvelle IP : $new_ip\n\nSynology DiskStation\n\nFrom ${HOSTNAME}"` /usr/bin/php -r "mail('${MAIL_TO}', '${MAIL_SUBJECT}', '${MAIL_BODY}', 'From: ${MAIL_FROM}');" } inscription_log() { echo "$(date +'%d/%m/%Y-%H:%M:%S') : WAN $old_ip -> $new_ip" >> $LOGFILE } ############### ### SCRIPT ### ############### nbSites=${#SITES[@]} idSite=$(( $RANDOM % $nbSites )) lire_old_ip lire_ip_wan $idSite if [ $ip_lue_valide -eq 0 ]; then # si IP lue valide if [ "${old_ip}" != "${ip_lue}" ]; then # si IP changée new_ip=$ip_lue # IP à confirmer ip_lue_valide=1 bcl=0 # recherche autre site fournissant une IP valide until [[ $ip_lue_valide -eq 0 || $bcl -eq $nbSites ]];do ((bcl++)) lire_ip_wan $idSite done if [ "${ip_lue}" == "${new_ip}" ]; then # si nouvelle IP confirmée memoriser_IP inscription_log envoi_mail fi fi fi #for testing rm $MEMOIPFILE exit 0
  4. j'ai trouvé la solution pour mes CRLF : Dans Notepad++ : Edition -> Convertir les sauts de ligne -> Convertir en format UNIX (LF) et je n'ai plus l'erreur 🙂 => merci @PiwiLAbruti de m'avoir mis sur la piste. Maintenant, je dois regarder pourquoi rien ne se passe ... (on y arrivera ...)
  5. j'ai continué d'investigué suivant tes instructions, et TOUS les scripts qui fonctionnent, ont à la fin de chaque ligne des LF et pas des CR LF comme ce script MAIS je ne sais pas détruire uniquement le CR : un del détruit le CR LF, comme si ce n'était qu'un seul charactère. Une piste ?
  6. Merci de ta réponse rapide En effet, j'édite avec Notepad++ L'encodage était UTF-8, et je j'ai changé, mais ça ne change rien. J'affiche tous les caractères spéciaux, et voici ce que vois
  7. ni connaissant rien en scripts batch, j'exécute votre script sur mon DSM 7.2, et il me retourne l'erreur suivante que je ne sais pas interpréter /bin/bash: /volume1/ScriptsUnix/NotifWanChange.sh: /bin/bash^M: bad interpreter: No such file or directory une piste ? => Merci
  8. faut 😄, je suis également intéressé au superlatif, c'ailleurs merci qu passage à tous les 2/3 pour vos contributions et partages
  9. OK, merci pour l'info. Le jour où j'ai un soucis, je saurai où aller
  10. question qui peut paraitre innocente : Quel avantage y a-t-il d'avoir un nid chez Gandy plutôt que chez OVH, qui gère automatiquement les changement d'IP de to n FAI (vu-ia ton NAS) ?
  11. MERCI pour toutes tes explications détaillées. Grâce à elles c'est bon maintenant !
  12. mais non, sauf que maintenant le lot m'indique "Interrompu (126)" (au lieu de 127 ;-(
  13. zut alors, là, on nage en plein mystère. Ma config : MAC et SublimeText. J'ai download ton fichier sur mon MAC et mis sur le NAS => erreur 127 je l'ai ouvert avec Notepad++ (via //Desktop) => erreur 127 Idem avec TextEdit (MAC) ou Notepad (PC)
  14. merci pour le retour. Quand je fais un "copier/coller" du code, il ne veut pas s'exécuter, j'ai dans le lot de l'exécution de la tâche du synode une erreur 127. Je me demande s'il n'y a pas ça et là des caractères cachés ... Pourrais-tu mettre ton code en pièce jointe d'un post sous forme d'un fichier .txt ou .sh, ainsi on est sûr. Merci
  15. Je vois que ceci est barré. Tu confirmes qu'il n'est plus obligatoire ?
  16. @PPJP, merci pour cette analyse très instructive. Je vais mettre en place ton script avec une curée de rétention courte
  17. merci pour le retour : je n'ai aucune entrée expirée (et les options "Activer le blocage auto" et "Activer l'expiration des blocages" sont bien cochées) les deux lignes de code sont celles qui sont dans mon script ...
  18. le23/7, j'avais environ 30000 entrées, je suis maintenant à 84000. Cela pourrait)il être un problème docteur ? Ou le Syno "peut là contre" ? Sinon, si je mets le blocage à 5 jours, il travaillera plus lors de la mise à jour, mais la DB serait plus petite ? Que pensez)vous qui soit le mieux ?
  19. merci encore à @Fenrir pour ce tutoriel, que je m'étais empressé d'appliquer dès que j'en ai pris connaissance. Du coup, en lisant cet article https://www.synology.com/en-global/company/news/article/2019JulyRansomware Je me suis dit "ok, ce n'est pas pour nous qui avons appliqué ces règles de sécurité. => cool"
  20. si je me souviens bien, Photo Station ne fonctionne PAS en https
  21. Merci pour tes explications très claires, tu m'as convaincu !
  22. non, je n'ai pas mes entrées en double, alors quel serait le problème de bloquer indéfiniment ? en fait je devais délirer, j'étais sûr d'avoir lu quelque part un problème d'explosion de la DB. Pourquoi bloquer les IP pendant 30j seulement pas de manière permanente ?
  23. @Zeus, ma table était bien vide ;-) @Superthx j'ai implémenté ta correction suggérée par @PPJP, et ça fonctionne du feu de dieu ;-) J'ai quand-même une question : tu dis que tu ne fais pas tourner le script avec une date de validité permanente, car la DB grossirait indéfiniment. Je n'y connais rien au stripping unix que tu as fait, mais tu dois ajouter les IP d'une liste avec la date de fin. Et si tous les jours tu réimportes la liste complète des IP, c'est l'enfer. Or il y a une option prévue lors de l'importation manuelle pour écraser les IP existantes par la nouvelle importée. On évite ainsi d'exploser la taille de la DB. Dans ton script, ne pourrais-tu pas vérifier si l'IP est déjà présente, et donc l'écraser également (ce qui pourrait être un paramètre également) ? La taille de la DB serait ainsi maitrisée. J'y pense, je vais faire un test : je tourne 1 fois ton script et je le retourne une seconde fois dans la foulée, j'aurais le double d'entrées ? Car 30000 entrées pendant 30 jours, cela fera 30000*30 = 900000 entrées au bout de 30 jours, avant que les premières ne disparaissent, ou on réduit la durée de blocage à 1 jour si on fait tourner l script toutes les 24h?
  24. merci, mais je préfère travailler avec l'interfae standard , plutôt que d'aller modifier une table dans la DB (défaut professionnel, on ne sait jamais les autres liens). Donc, j'ai juste exporté la liste et réimportée en choisissant d'écraser les IP existantes, et mettant une durée de bannissement de 1 jour. => demain tout devrait être vide. (proprement)
  25. Je vais essayer exporter le fichier le modifier pour la durée de bannissement des IP (mettre le moins possible) le réimporter et après la durée de bânissement, ça devrait être vide ?
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.