Forum Freedom-IP

Forum d'entraide de la communauté Freedom-IP

Vous n'êtes pas identifié(e).

#1 2015-03-10 21:59:13

Th0m@s
Membre
Lieu : Quelque part ;)
Inscription : 2014-03-09
Messages : 171

Amélioration de l'API

Bonsoir à tous,

Je créé ce topic afin que toutes les personnes utilisant l'API puissent émettre des idées afin d'aider xamzab à améliorer cet outil. Et comme il faut un début, je commence cool

L'idée suivante est en fait un approfondissement d'un post de Polizei vis à vis du "HARD RESET" des connexions VPN.
Comme il l'avait dit, les connexions UDP mettent un certain temps avant que la déconnexion soit prise en compte par FIP. Alors, mon cher xamzab, voilà ce qu'il nous faut :

  • Pouvoir accéder au connexions VPN actives, avec leurs adresse IP de connexion, le serveur, le port, et le protocole

  • Pouvoir récupérer son adresse IP afin de ne pas dépendre d'un site externe (en 1 ligne de PHP c'est fait, c'est pas le plus long pour l'instant devil )

Comme ça, à une déconnexion depuis le logiciel, on vérifie si la connexion est toujours en cours pour le site en utilisant l'adresse IP du client, et on force la déconnexion. Le problème ? Si j'utilise plusieurs appareils derrière la même box, alors ils auront tous la même IP d'origine, et on ne saura pas quel appareil déconnecter. Cependant, j'ai peut être une idée pour ce cas là. Il faudrait que à chaque lancement de openvpn depuis un de nos logiciels, on envoie une info à une nouvelle méthode de l'API qui dit "une nouvelle connexion". À ce moment là, la dernière connexion sur le site se voit attribuer un attribut (ex : fip_ovpn00...) que la méthode renvoie au logiciel également. Comme ça, à la déconnexion, on vérifie si le site possède toujours la connexion en cours avec cet attribut, et on déconnecte. Là encore un problème se pose si l'utilisateur connecte deux appareils "en même temps". Il se peut que l'attribut soit attribuer à la mauvaise connexion. Mais c'est un début wink

Th0m@s


EDIT :
Ajout des idées :

  • Accès aux infos de connexion tel que sur la page du site VPN FAIT (GetSessions --> vpn.fip)

  • Ajout d'une commande via l'API pour fermer une connexion, ou toutes d'un coup


Mise à jour :

28/05/2015 --> Méthode GetSessions dans vpn.fip : récupère les sessions VPN en cours
25/05/2015 ---> Ajout de la variable remoteIP dans la méthode isLogged de vpn.fip : permet de récupérer l'adresse IP actuelle de l'utilisateur.

Dernière modification par Th0m@s (2015-05-30 16:35:32)

Hors ligne

#2 2015-03-10 22:24:07

David
Bof !!!
Inscription : 2012-01-30
Messages : 6 119

Re : Amélioration de l'API

Bonsoir ...

Pourquoi s'ennuyer avec une pseudo numérotation des connexions car fatalement sur chacun des serveurs vous n'aurez qu'une seule connexion VPN ... donc en connaissant le serveur sur lequel le logiciel s'est connecté (il vaut mieux qu'il le sache pour pouvoir établir la connexion), accessoirement le port, le protocol, ... il est simple de savoir quelle connexion spécifique arrêter ... en lui envoyant simplement un (ou des) paramètre(s) (IP Serveur ou son Identifiant ou Nom comme FR1 ou UK ou ... et s'il y a besoin, le Port et le protocol TCP / UDP ... ou ALL si l'on souhaite arrêter toutes les connexions actives du compte).

Cordialement, David.


C.G.U.                Règles

Hors ligne

#3 2015-03-10 22:31:22

Th0m@s
Membre
Lieu : Quelque part ;)
Inscription : 2014-03-09
Messages : 171

Re : Amélioration de l'API

Bonsoir David,
Deux appareils différents ne peuvent pas se connecter au même serveur avec le même compte ? Si c'est le cas, je l'ignorais, et effectivement la numérotation devient inutile et juste l'accès au connexions actives est utiles.

Thomas

Dernière modification par Th0m@s (2015-03-10 22:32:11)

Hors ligne

#4 2015-03-11 00:16:14

Polizei
Membres de confiance
Inscription : 2013-12-27
Messages : 403

Re : Amélioration de l'API

En effet, Th0m@s,
Il est impossible pour le même compte de se connecter plusieurs fois sur le même serveur.
En conséquence, L’identité du serveur + le port + le protocol sont suffisants pour identifier un appareil de façon unique et donc forcer la déconnexion sur cette appareil uniquement.

Pouvoir accéder au connexions VPN actives, avec leurs adresse IP de connexion, le serveur, le port, et le protocole
Pouvoir récupérer son adresse IP afin de ne pas dépendre d'un site externe (en 1 ligne de PHP c'est fait, c'est pas le plus long pour l'instant devil )

On vient d’avoir une amélioration avec la version 0.2 c’est dans vpn.fip : l’option IsLogged (Retourne 'true' si la requête API est faite depuis une IP "FIP" sinon 'false')

Ce système permet de savoir si on est connecté à FIP ou non.

Maintenant d’après ta demande ce que tu aimerais (je crois comprendre) c’est une option qui retourne en version API exactement ce que mon compte retourne en version GUI :
1426027627-fip.png

Tu voudrais donc que l’option IsLogged de l’API soit plus complète et retourne un truc dans le genre :

Format JSON (XML possible aussi) en suivant l’exemple en image ci-dessus :

[
    {"connection_id","0","server_prot":"0","server_id":"FR2","server_ipv4":"5.196.248.208","server_mode":"0","server_port":"443",}
    ,
    {"connection_id","1","server_prot":"0","server_id":"FR2","server_ipv4":"5.196.248.208","server_mode":"0","server_port":"53",}
]

  Avec "connection_id" = identifiant de la connection
  Avec "server_prot"   = 0 pour OpenVPN, 1 pour PPTP et 2 pour Proxy
  Avec "server_mode"   = 0 pour UDP, 1 pour TCP

Mais les variables pourrait être aussi de type texte avec :
  "server_prot" = "OVPN" ou "PPTP" ou "PROX"
  "server_mode"   = "UDP" ou "TCP"

La variable "connection_id" pourrait être un identifiant unique pour "killer" la connexion comme on le ferait en cliquant le bouton orange "Déconnexion" ce que fait le code JavaScript suivant : {  $('#logout_modal_fr2').modal();  } toujours avec l’API avec un commande genre :

Kill_ID avec l’identifiant de la connexion ou comme les connexions sont uniques on peut utiliser la méthode de David avec un Kill_ID

(IP Serveur ou son Identifiant ou Nom comme FR1 ou UK ou ... et s'il y a besoin, le Port et le protocol TCP / UDP ... ou ALL si l'on souhaite arrêter toutes les connexions actives du compte).

Je ne sais pas si je suis très clair, mais soyons honnête : Hamza ne va pas se faire chier à passer 5 jours pour faire une API aux oignons si personne ou presque ne l’utilise... Didier-T pourrait être d’un grand soutient car il porte la version Linux à lui tout seul sur les épaules et donc s’il manifestait un intérêt pour cette (ces) amélioration(s) tu (on) aurais un allié de poids.

Mais je pense qu’il faut être réglo et déjà voir ce qu’on peut faire nous même et si vraiment TOUTE la communauté pourrait y gagner et si vraiment on va utiliser pleinement ses améliorations avant de réclamer tout et n’importe quoi à Hamza !

Dernière modification par Polizei (2015-03-11 00:18:28)

Hors ligne

#5 2015-03-11 09:32:40

Didier-T
Contributeurs Confirmés
Lieu : Argenteuil
Inscription : 2014-02-01
Messages : 323

Re : Amélioration de l'API

Bonjour à tous,
ça va vite devenir le bazar cette discussion.
@ Th0m@s, en tant que son créateur, pourrais-tu modifier ton premier message et y lister les différentes idées proposées ?

Bon, pour le moment nous avons quoi ?

  1. accès aux infos de connexion tel que sur la page du site VPN

  2. ajout d'une commande via l'API pour fermer une connexion, ou toutes d'un coup

Pour ma part je trouverais utile d'avoir des infos en plus sur le retour de IsLogged :

  1. IP publique fourni par le VPN utilisé

  2. Nom du serveur utilisé

  3. ID de connexion (pour ne pas fermer par accident ça connexion active)

Polizei a écrit :

Je ne sais pas si je suis très clair, mais soyons honnête : Hamza ne va pas se faire chier à passer 5 jours pour faire une API aux oignons si personne ou presque ne l’utilise... Didier-T pourrait être d’un grand soutient car il porte la version Linux à lui tout seul sur les épaules et donc s’il manifestait un intérêt pour cette (ces) amélioration(s) tu (on) aurais un allié de poids.

un allié de poids... d'abord je ne suis pas gros, juste un peut enveloppé, à la rigueur bien en chair  big_smile   lol

Plus sérieusement, je pense que Hamza est un peu comme moi, il fait ça pour la communauté, mais aussi parce que ça lui fait plaisir, ensuite si ça sert tant mieux, sinon bah c'est dommage.
Maintenant gage à nous qui somment demandeurs de faire des outils facilitant l'accès à ces données, et si possible sous forme de Bibliothèques, ou de module pour en facilité au maximum l'utilisation par de futurs développeurs.

A+,
Didier.

P.S. : si l'on pouvait éviter les 0 sa veux dire un truc, 1 un autre, etc..., et avoir directement l'information ce serait vraiment gentil pour mes petits neurones.

Hors ligne

#6 2015-03-11 18:35:25

Th0m@s
Membre
Lieu : Quelque part ;)
Inscription : 2014-03-09
Messages : 171

Re : Amélioration de l'API

Polizei a écrit :

Tu voudrais donc que l’option IsLogged de l’API soit plus complète et retourne un truc dans le genre :

Format JSON (XML possible aussi) en suivant l’exemple en image ci-dessus :

[
    {"connection_id","0","server_prot":"0","server_id":"FR2","server_ipv4":"5.196.248.208","server_mode":"0","server_port":"443",}
    ,
    {"connection_id","1","server_prot":"0","server_id":"FR2","server_ipv4":"5.196.248.208","server_mode":"0","server_port":"53",}
]

  Avec "connection_id" = identifiant de la connection
  Avec "server_prot"   = 0 pour OpenVPN, 1 pour PPTP et 2 pour Proxy
  Avec "server_mode"   = 0 pour UDP, 1 pour TCP

Mais les variables pourrait être aussi de type texte avec :
  "server_prot" = "OVPN" ou "PPTP" ou "PROX"
  "server_mode"   = "UDP" ou "TCP"

Oui un truc comme ça, mais ne venant pas de isLogged, cela serait illogique. Plutôt d'une méthode comme "getConnections" (par exemple).
Mais il vaut mieux mettre des textes (OVPN, PPTP, PROXY, à la place de chiffres wink )

Cependant, comme l'a dit David, le "connection_id" n'est pas obligatoire car on sait déjà à quel serveur on s'est connecté donc on sait quelle connexion couper. Mais à xamzab de voir ce qui est plus simple pour lui, au final ça ne change pas grand chose pour nous. Juste quelques paramètres à mettre en plus dans la commande qui kill les connexions cool .
Mais si on garde l'idée du "connection_id", il faut alors pouvoir le récupérer. Pourquoi pas depuis la méthode "isLogged" comme l'a proposé Didier.

Didier-T a écrit :

Pour ma part je trouverais utile d'avoir des infos en plus sur le retour de IsLogged :

  1. IP publique fourni par le VPN utilisé

  2. Nom du serveur utilisé

  3. ID de connexion (pour ne pas fermer par accident sa connexion active)

Comme je l'ai dit dans le début de ce message, je suis d'accord avec le point 3 si on utilise la méthode des "connection_id". Mais les points 1 et 2 ne sont pas très utiles. En effet, si isLogged renvoie true, c'est que tu es connecté à FIP, donc que tu sais à quel serveur tu t'es connecté car c'est toi qui as lancé la commande depuis ton logiciel. Cependant, en y réfléchissant, dans un seul cas cela peut être utile. SI l’utilisateur quitte le logiciel, et que openvpn.exe reste actif et la connexion également, alors au prochain démarrage du logiciel, isLogged renverra true malgré le fait que tu n'es rien lancé. Donc finalement cela peut-être utile, mais seulement dans certains rares cas (mais il faudra alors aussi le port et le protocole). (Je me suis contredit dans un paragraphe, je sais, mais c'est pas grave, j'aime bien me faire des débats avec moi-même devil )


Autre chose, j'ai modifié mon premier post et j’essaierai de le maintenir à jour dans le futur.
Et serait-il possible d'avoir un suivi des mises à jour de l'API ? Cela serait utile  smile

Hors ligne

#7 2015-05-27 16:36:31

Didier-T
Contributeurs Confirmés
Lieu : Argenteuil
Inscription : 2014-02-01
Messages : 323

Re : Amélioration de l'API

Bonjour a tous,
aujourd'hui en modifiant mon interface de connexion j'ai eu la très bonne surprise de découvrir que Hamza nous avait ajouté le retour de l'adresse IP dans IsLogged, maintenant son retour est de la forme suivante.

{u'isLogged': True, u'remoteIP': u'5.196.202.64'}

Les premiers tests sont très encourageants. big_smile  cool

Hors ligne

#8 2015-05-27 19:32:50

Polizei
Membres de confiance
Inscription : 2013-12-27
Messages : 403

Re : Amélioration de l'API

J’abuserais si je te demandais de mettre à jour en passant : https://freedom-ip.com/forum/viewtopic.php?id=4240
Donc je le demande pas car tu sembles être un peu over-booké en ce moment mais je surveille quand même ses bibliothèques wink

Hors ligne

#9 2015-05-27 23:11:53

xamzab
SysOps
Inscription : 2013-03-21
Messages : 2 138

Re : Amélioration de l'API

Nouvelle méthode dans vpn.fip.


If privacy is outlawed, only outlaws will have privacy.

Hors ligne

#10 2015-05-28 05:36:04

Didier-T
Contributeurs Confirmés
Lieu : Argenteuil
Inscription : 2014-02-01
Messages : 323

Re : Amélioration de l'API

Bonjour Hamza,
c'est quoi cette nouvelle méthode ?

Au fait, merci pour l'IP  big_smile

A+,
Didier.

Hors ligne

#11 2015-05-30 16:36:15

Th0m@s
Membre
Lieu : Quelque part ;)
Inscription : 2014-03-09
Messages : 171

Re : Amélioration de l'API

J'ai mis à jour le premier post, mais faudrait peut-être retirer le proxy.fip ? big_smile

EDIT : D'accord je me tais, xamzab a marqué en gros : [DEPRECATED]
---> https://freedom-ip.com/api/

Dernière modification par Th0m@s (2015-05-30 16:36:56)

Hors ligne

#12 2015-10-28 05:17:19

Polizei
Membres de confiance
Inscription : 2013-12-27
Messages : 403

Re : Amélioration de l'API

Salut !

Bon Ok, mon post tombe un peu comme un cheveux dans la soupe, mais je voulais pas ouvrir un nouveau thread juste pour une question technique qui n’intéresse personne en théorie.

1446004547-897.png

Je travaille sur un petit bout de code pour récupérer l'état des serveurs de FIP.

Comme l'API n'existe plus (et que de toute façon elle n'était que peu ou prou pas utilisée) je fais un grep sur le code source de la page des statistiques serveurs.
En théorie je pourrais faire sans, mais c'est pour pouvoir sélectionner dynamiquement le serveur le moins chargé lors d'une connexion au VPN.

le petit soucis c'est que si je sais à quoi ressemble un bloc pour un serveur fonctionnel :

<tr class="success">
            <td style="width:70%;padding:15px;"><img src="/images/lu-48.png" style="max-width:100%;padding-right:10px;"><br class="visible-xs"><div>Luxembourg</div></td>
            <td style="width:10%;padding:15px;font-size:25px;" class="center"><strong>1</strong></td>
            <td style="width:20%;padding:15px;">
            <div class="progress" style="height: 25px;margin-top: 15px;background:#eee;">
                  <div class="progress-bar  progress-bar-success" role="progressbar" aria-valuenow="7.7333333333333" aria-valuemin="0" aria-valuemax="100" style="width: 7.7333333333333%;">
                    <span class="sr-only"></span>
                  </div>
                </div>
            </td>
        </tr>

Je ne sais pas à quoi ressemble un serveur en panne... Idéalement, il me faudrait aussi la version du bloc non fonctionnel pour le cas du(es) serveur(s) en rade(s). (pour gérer le cas échéant)

J'ai donc 2 possibilités :

1/ Soit j'attends de tomber sur un serveur offline et je me dépêche de copier le code source de la page des statistiques dans cette situation. (C'est con, j'ai raté la panne Suisse ! cry )

2/ Soit je fais chier Hamza comme s'il n'avait que ça à foutre... angel (Et comme si ptit_poulet ne suffisait pas déjà tongue )

Nota sans importance : j'ai remarqué un code ISO Anglais en UK. C'est pas GB normalement ?

Hors ligne

#13 2015-10-28 12:30:53

xamzab
SysOps
Inscription : 2013-03-21
Messages : 2 138

Re : Amélioration de l'API

Une API publique est en cours de préparation.


If privacy is outlawed, only outlaws will have privacy.

Hors ligne

#14 2015-10-28 13:00:44

Polizei
Membres de confiance
Inscription : 2013-12-27
Messages : 403

Re : Amélioration de l'API

C'est quand même cool un xamzab qui cède à tout les caprices de la communauté !
Merci mon lapin !  kiss

Hors ligne

#15 2015-10-28 16:57:50

xamzab
SysOps
Inscription : 2013-03-21
Messages : 2 138

Re : Amélioration de l'API

Le lapin va te couper tes petits pattes  devil


If privacy is outlawed, only outlaws will have privacy.

Hors ligne

#16 2015-11-07 21:36:44

xamzab
SysOps
Inscription : 2013-03-21
Messages : 2 138

Re : Amélioration de l'API

Béta-testeurs needed. MP.


If privacy is outlawed, only outlaws will have privacy.

Hors ligne

#17 2015-11-08 19:37:29

Se7en512
Membre
Inscription : 2012-02-02
Messages : 295

Re : Amélioration de l'API

Polizei je sais pas si c'est voulu pour les tests d'API, mais actuellement dans les stats le serveur de Suède est HS  wink

Hors ligne

#18 2015-11-09 02:02:08

Polizei
Membres de confiance
Inscription : 2013-12-27
Messages : 403

Re : Amélioration de l'API

Salut Se7en512 !

Merci beaucoup pour ton message mais FIP est tellement efficace que le serveur est déjà réparé ! wink

Cependant la méthode d'un grep sur la source de la page était très empirique et de toute façon inutile puisqu'il semblerait que l'API Phénix est entrain de renaître de ses cendres ! thumb_up.gif

Le problème c'est que je ne suis ni flic, ni informaticien contrairement au apparence et que les xamzab, les david, les chico et même notre poulet sont des cracks ou presque en programmation alors que moi je bidouille...
Du coup je n'ose pas écrire à Hamza pour le bêta-test car j'ai trop peur qu'on me demande des résultats rapide et efficace en échange d'avoir découvert Jean Grey en avance sur les autres : la résurrection de l'API ! cry

Dernière modification par Polizei (2015-11-09 02:04:03)

Hors ligne

#19 2015-11-09 08:10:51

Patrick1969
Membre
Inscription : 2015-01-23
Messages : 283

Re : Amélioration de l'API

Bonjour à tous .

Polizei a écrit :

Du coup je n'ose pas écrire à Hamza pour le bêta-test

.
Moi j'ai pris mon courage à deux mains , une grande inspiration et me suis permis
de lui écrire ... Et comme je ne suis qu'un piètre bidouilleur , je me suis très vite
aperçue qu'en fait au final , je ne servais à rien en tant que " béta-testeur ". cry  cry  cry
Un jour peut-être ....
Cordialement , Patrick1969 .

Dernière modification par Patrick1969 (2015-11-09 08:28:39)


L'accès à ce forum reste un privilège et non un droit , n'oubliez pas que nous sommes une communauté et non pas un dû .

Hors ligne

#20 2015-11-09 08:36:06

Didier-T
Contributeurs Confirmés
Lieu : Argenteuil
Inscription : 2014-02-01
Messages : 323

Re : Amélioration de l'API

Bonjour à tous,
Je me suis proposé pour la phase de test.

Pour pouvoir avancer de manière efficace j'aurai besoin d'une sorte de groupe de réflexion.
Le client sera comme son prédécesseur écrit en python et multiplateforme.
Tout le monde ne développent pas en python j'aurais besoin de savoir sous quel forme les retours d'information seraient pour vous le plus pertinent.

Et si vous avez des idées vous permettant une intégration plus simple pour vos projets.
Tous les avis sont les bienvenus, même si vous n'êtes pas développeur ou développeur débutant :-)

A+,
Didier.

Hors ligne

#21 2015-11-09 15:00:55

Polizei
Membres de confiance
Inscription : 2013-12-27
Messages : 403

Re : Amélioration de l'API

Salut Didier-T !

[Mode égocentrique]
Je ne connais pas Python personnellement. J'utilise AutoHotKey car j'automatisais des tâches pour les sourds, les syndicats, le club de Judo, et divers détails pour des amis. Le but c'était à la base juste une formule dans eXcel par ici ou un raccourcis clavier par là pour tel ou tel action qui facilitait la vie de mon entourage pas Informaticien pour un sous...

Du coup je sais lire et je me débrouille vaguement en Visual Basic et AutoHotKey une sorte de Basic également, mais tout en autodidacte...

Ça parlera à ptit_poulet (comme j'ai découvert qu'il a mon âge) mais en réalité j'ai commencé à 12 ans sur un CPC 6128. J'avais programmé un logiciel de retouche d'images en Basic 1.1 : 2000 lignes, 50Ko, une forêt de iF grosse comme l'Amazonie mais j'ai tout abandonné quand mon pote a acheté OCP Art Studio qui était même vendu avec... Une souris !

[/Mode égocentrique]

Bref ! Pour un utilisateur Windows© l'idéal serait une sorte de Didier Soft un peu comme NirSoft ( http://www.nirsoft.net/utils/nircmd.html )
Une éxécutable en ligne de command dans le genre :

C:\Windows>Didier.exe --GetToken --Login FIP_s5f9y6a2x5 --Pass 9d6eR60249oEc [color=#BFBDB5][i]PS : C'est un compte bidon les bots & trolls ![/i][/color]
C:\Windows>E6F974A6B4C35E98CACA0AF97C06
   ou
C:\Windows>Allready
   ou
C:\Windows>Not Connected


C:\Windows>Didier.exe --DonsMontant
C:\Windows>14


C:\Windows>Didier.exe --FairUseLeftFairUse
C:\Windows>543826


C:\Windows>Didier.exe -HTTPS binaire
C:\Windows>True


C:\Windows>Didier.exe --DNSConfigPrimaryDns
C:\Windows>127.0.0.1


C:\Windows>Didier.exe -help
C:\Windows>[color=#BFBDB5]Blablabla [/color]API FIP [color=#BFBDB5]Blablabla [/color]
C:\Windows>Switch -K ou --GetToken  :  [color=#BFBDB5]Blablabla [/color]
C:\Windows>Switch -FL ou --FairUseLeftFairUse  :  [color=#BFBDB5]Blablabla [/color]
C:\Windows>Switch -HTTPS  ou --IsHTTPSEveryWhereEnabled  :  [color=#BFBDB5]Blablabla [/color]

L'avantage de la line de commande c'est que la sortie est exploitable directement en BAT et PS mais aussi n'importe ou sous Windows© sans besoin de logiciel tiers (Visual Basic, Python, etc.)

Mais c'est un travail titanesque et je pense que tu devrais plutôt consacrer ton énergie sur le logiciel version Linux que tu supportes un peu tout seul...

J'ai presque envie de dire : chacun sa merde, chacun son langage !
Hamza fabrique une API et chacun se débrouille avec.

Ensuite seulement et seulement si des développeurs te réclame une bibliothèque (Lezarking pas exemple) on avisera pour te manger tout ton temps et toutes ton énergie ! Mais si on est 2 à l'utiliser c'est horrible de te faire passer 2 semaines dessus ! Pense à tes gosses et ta femme (ou tes poissons si tu es un vieux gay célibataire) !

Dernière modification par Polizei (2015-11-09 15:08:23)

Hors ligne

#22 2015-11-09 16:25:30

xamzab
SysOps
Inscription : 2013-03-21
Messages : 2 138

Re : Amélioration de l'API

Je trouve que je reviens souvent dans tes messages ! Tu ne comploterai pas contre moi à tout hasard ??  monkey


If privacy is outlawed, only outlaws will have privacy.

Hors ligne

#23 2015-11-09 16:52:00

Polizei
Membres de confiance
Inscription : 2013-12-27
Messages : 403

Re : Amélioration de l'API

Salut xamzab !

Le problème c'est que mes messages tournent toujours dans la sémantique suivante : VPN, Anonymat, Technique, Freedom-IP... C'est un peu normal que tu reviennes dans mes messages !

Si mes messages contenait la sémantique suivante : Bettencourt, Kadhafi, Bygmalion, Kärcher... A ton avis, qui dans ce cas serait sans arrêt cité dans mes messages ?  wink

Mais j'en prends note ! Je voudrais pas que Cerbère casse mon compte !  wink

Hors ligne

#24 2015-11-09 19:12:35

Didier-T
Contributeurs Confirmés
Lieu : Argenteuil
Inscription : 2014-02-01
Messages : 323

Re : Amélioration de l'API

Salut polizei,
Je ne suis pas fan des .exe car on peut y cacher n'importe quoi.
Mais je prend note de tes idées pour l'utilisation de l'API. :-)

A+,
Didier.

Hors ligne

#25 2015-11-25 14:31:11

Didier-T
Contributeurs Confirmés
Lieu : Argenteuil
Inscription : 2014-02-01
Messages : 323

Re : Amélioration de l'API

Bonjour à tous,
Hamza a déjà bien avancé sur l'API, on peut même considérer que c'est terminé  smile

j'ai profiter d'avoir un peut de temps libre aujourd'hui pour écrire la bibliothèque en python 2 permettant d'aller chercher les infos.

je vous livre le premier jet
API_lib.py

#! /usr/bin/python
# -*- coding: utf-8 -*-
# Par Didier-T pour les utilisateurs de Freedom-IP
# Version 3

########################################################################
#                                                                      #
#                            UTILISATION                               #
#                                                                      #
########################################################################
#                                                                      #
# from API_lib import api                                              #
#                                                                      #
# user="Identifiant VPN"                                               #
# password="Mot de passe VPN"                                          #
#                                                                      #
# IsLogged=api.Server()                                                #
# FairUse=api.userInfo()                                               #
# DNSConfig=api.livestats()                                            #
#                                                                      #
########################################################################

########################################################################
#                                                                      #
#                   UTILISATION FONCTION TEST API                      #
#                                                                      #
########################################################################
#                                                                      #
# python API_lib.py user password                            #
#                                                                      #
########################################################################

import urllib, urllib2, time, platform, json, base64
try:
    import ssl
except:
    pass

class api():
    def __init__(self, user, password):
        self.user=user
        self.password=base64.encodestring(password)

    def _past(self, url, args):
        params = urllib.urlencode(args)
        req = urllib2.Request(url, headers=args)
        if platform.system() != 'Linux':
            gcontext = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
            try:
                response = urllib2.urlopen(req, context=gcontext, timeout = 5)
            except Exception, e:
                print("[\033[31mFAIL\033[0m] %s" % e)
                if e.code==401:
                    print("[\033[33mINFO\033[0m] Veuillez vérifier vos identifiants ")
                response = ""
                pass
        else:
            try:
                response = urllib2.urlopen(req, timeout = 5)
            except Exception, e:
                print("[\033[31mFAIL\033[0m] %s" % e)
                if e.code==401:
                    print("[\033[33mINFO\033[0m] Veuillez vérifier vos identifiants ")
                response = ""
                pass
        if response != "":
            r=response.read()
            print(r)
            data=json.loads(r)
        else:
            data = ""
        return data

    def _info(self, recherche):
        print("[\033[33mINFO\033[0m] Demande "+recherche)

        if recherche=="Server":
            url='https://api.freedom-ip.com/Server/all'
        elif recherche=="userInfo":
            url='https://api.freedom-ip.com/Account/userInfo'
        elif recherche=="livestats":
            url='https://api.freedom-ip.com/Account/livestats'

        return self._past(url, {'X-FIP-USER':self.user, 'X-FIP-PASSWORD':self.password})


    def _verif(self, informations, recherche):
        try:
            status=informations["status"]
        except:
            status="success"
        if status=="success":
            print("[\033[32m OK \033[0m] "+recherche)
            return informations
        else:
            print("[\033[31mFAIL\033[0m] Erreur "+status)
            exit(1)


    def Server(self):
        response=self._info("Server")
        return self._verif(response, "Server")

    def userInfo(self):
        response=self._info("userInfo")
        return self._verif(response, "userInfo")

    def livestats(self):
        response=self._info("livestats")
        return self._verif(response, "livestats")

def arbres(jstr):
    tableau=[]

    def decoupage(nom, valeur):
        if type(valeur)==list:
            nb=0
            for x in valeur:
                decoupage(nom+"["+str(nb)+"]", x)
                nb+=1
        elif type(valeur)==dict:
            for x in valeur:
                decoupage(nom+"["+x+"]", valeur[x])
        else:
            try:
                tableau.append(nom+"="+valeur)
            except:
                tableau.append(nom+"="+str(valeur))

    if type(jstr)==list:
        nb=0
        for x in jstr:
            decoupage("["+str(nb)+"]", x)
            nb+=1
    elif type(jstr)==dict:
        for x in jstr:
            decoupage("["+x+"]", jstr[x])
    else:
        tableau.append(str(jstr))

    return tableau




def _test():
    import sys

    class Timer(object):
        def start(self):
            if hasattr(self, 'interval'):
                del self.interval
            self.start_time = time.time()
        def inter(self):
            if hasattr(self, 'start_time'):
                self.interval = time.time() - self.start_time
        def stop(self):
            if hasattr(self, 'start_time'):
                self.interval = time.time() - self.start_time
                del self.start_time

    timer = Timer()
    user=str(sys.argv[1])
    password=str(sys.argv[2])

    timer.start()
    api_ret=[]
    fip=api(user, password)
    list_api=['Server','userInfo','livestats']
    api_ret.append(fip.Server())
    api_ret.append(fip.userInfo())
    api_ret.append(fip.livestats())

    timer.inter()
    t1=timer.interval

    for x in range(0,len(api_ret)):
        print("\033[41mArbre retour fonction \033[1m{}()\033[0;41m :\033[0m".format(list_api[x]))
        print('\n'.join(arbres(api_ret[x])))
        print('\n')

    print("\033[41mChronomètre :\033[0m")
    timer.stop()
    print 'Temp consultation API :', t1
    print 'Temp exploration arbres :', timer.interval-t1
    print 'Temp consultation API + exploration arbres :', timer.interval


if __name__ == '__main__':
    _test()

ce code devrait fonctionner sous linux et windows, si certains veulent tester  tongue

l'utilisation est simple (du moins pour le test  tongue )
python API_lib.py id_fip password
ou
python2 API_lib.py id_fip password

id_fip = fip_**********
password = mot de passe VPN

et encore un grand merci a Hamza pour tout le temps qu'il nous consacre angel

A+,
Didier.

Dernière modification par Didier-T (2015-11-25 14:32:30)

Hors ligne

Pied de page des forums