MTES-MCT / vigieau-api

1 stars 0 forks source link

Impossibilité de récupérer le contenu de l'API sur un serveur distant #43

Open thib66 opened 3 days ago

thib66 commented 3 days ago

Bonjour, J'arrive bien à lancer l'URL suivante dans un navigateur internet sur mon PC : https://api.vigieau.beta.gouv.fr/api/zones?commune=66120

Par contre en lançant cette URL dans un script PHP via la commande curl sur un serveur distant, je n'obtiens pas de réponse et ai un timeout. Le script se trouve sur un serveur de l'hébergeur OVH. Y a t-il une probabilité que le serveur soit blacklisté ? Pour contourner le problème, proposez-vous un accès à l'API via authentification / token ? En vous remerciant par avance pour votre retour,

vincentlaine commented 4 hours ago

Bonjour,

L'API est totalement ouverte il n'y a donc pas de système de auth / token. La seule restriction qu'il y ai côté API est la présence de helmet (https://docs.nestjs.com/security/helmet) mais cela ne devrait pas renvoyer un timeout. J'ai déjà de mon côté fait des scripts qui s'exécutaient sur des serveurs distants et je n'ai jamais eu de problèmes.

Est-ce que en lançant le script en local cela fonctionne ? Si oui, il faudrait vérifier sur le serveur OVH si en faisant un curl sur une autre URL cela timeout également. Si cela timeout sur d'autres URLs ce doit sûrement être des réglages côté ouverture de port sur le serveur OVH.

thib66 commented 3 hours ago

Bonjour, Merci pour votre retour. Sur le serveur OVH au niveau de la fonction curl j'ai paramétré un timeout de 10000 ms. Voici le message que je reçois : URL Error (): Failed to connect to api.vigieau.beta.gouv.fr port 443: Connection timed out. L'appel du curl se fait de manière asynchrone dans le sens où l'appel de l'API se fait par cron de nuit et le résultat de l'appel est stocké dans un fichier texte. Une page de mon site appelle ensuite le contenu du fichier texte stocké. En cas d'attaque du serveur OVH, par de multiples requêtes, l'appel de l'API est protégé. Ce n'est pas un problème d'ouverture de port car je fais appel à d'autres API REST via curl et PHP sans problème en mode HTTP ou HTTPS. Le serveur web Linux hébergé chez OVH ne me permet pas d'avoir un terminal pour lancer un curl. Cependant j'ai un autre serveur Windows hébergé également chez OVH et pas de souci pour lancer un curl sur l'URL. Je reste à votre disposition pour de plus amples renseignements.

thib66 commented 2 hours ago

Je viens de tester en remplaçant curl par file_get_contents($url) j'ai le même problème sur le serveur distant en HTTP et HTTPS (donc ce n'est pas un souci de certificat)