08:25 <cyp> plop
08:54 <anhj> bonjour ensoleillé !
09:06 <Neofungamer> Bonjour
09:29 <solevis> matin
09:45 <afpy_user> bonjour monsieur il a t-il une organisation belge pour python merci
09:54 <haypo> l'AFPY est internationnale !
09:55 <feth> haypo: une fois
09:55 <haypo> feth: toi le dissident à clochette, ça va hein
09:56 <feth> haypo: toi le capitaine crochet hein
09:56 <feth> (hack = crochet btw, je tiens à porter ceci à votre attention)
09:56 <tbk_> y'a #plone.be sinon ^^
09:56 <haypo> hey ! c'est intime ça
09:59 <feth> à propos de dissident, j'ai une molaire qui s'est dissidée à pousser, je sens que je vais prendre des rtt dentisterie
18:25 <yotaff> matin
20:13 <No`> salut l'afpy
20:31 <raca> Bonsoir tout le monde
20:38 <raca> j'ai une question à poser: je voulais savoir s'il existe une librairie ou un module apache que je peux utiliser pour faire du XML-RPC ?
20:40 <raca> j'ai testé mod_python mais le problème avec ça, c'est que je n'ai pas trouver comment faire pour utiliser des classe (héritage..) que j'appellerai depuis mon client par la suite
20:41 <raca> hem, apparemment ce chan est abandonné :(
20:54 <Didouche> Bonsoir à tous
21:16 <didouche_> j'ai une question sur les sockets
21:18 <dup> :)
21:18 <dup> elles ne marchent pas fort !
21:28 <didouche_> lol
21:29 <didouche_> C'est un problème un peu particulier, je n'ai trouvé aucune réponse sur les forums francais ou étrangers
21:29 <didouche_> alors, en fait, je cherche en Python à envoyer des paquets par une socket déjà ouverte par un autre programme
21:30 <misc> je pense que tu peux pas sans faire des trucs moches au niveau du systéme
21:30 <haypo> didouche_: sous Linux, tu peux trimballer un file descriptor d'un processus à l'autre
21:30 <misc> haypo: oui, mais faut que ça soit un fils ou ce genre de choses, non ?
21:31 <haypo> mais je ne crois pas que Python permette de créer un objet socket à partir d'un file descriptor
21:31 <didouche_> et sous Windows, il y aurait une possibilité ?
21:31 <haypo> didouche_: en tout cas, ça semble sale ce que tu demandes
21:31 <didouche_> pourquoi sale ?
21:31 <misc> les processus sont prévus pour être isolé
21:32 <misc> donc la, tu es en train de violer l'isolation en question
21:32 <aconrad> http://msdn.microsoft.com/en-us/library/ms740478(VS.85).aspx
21:32 <didouche_> en fait WPE Pro le fait en utilisant l'ID de la socket ouverte par un autre programme
21:32 <didouche_> et ça fonctionne très bien
21:32 <misc> le fait que ça marche est orthogonal à la propreté du truc, hein
21:32 <aconrad> j'balance des liens comme ça, sans les lire, hein ? :)
21:33 <misc> y a des softs en C qui sont capables de changer un terminal sous linux ( genre neercs qui fait une magouille en asm pour reprendre le tty )
21:33 <didouche_> je ne suis pas sûr de tout saisir ^^
21:33 <didouche_> mais je chercherai selon vos pistes
21:33 <didouche_> notamment le lien msdn
21:34 <misc> didouche_: ce qu'il faut, c'est injecter du code dans le programme, via un breakpoint, et faire pointer ce code vers un segment qui fait un fork/exec et la, tu as le controle de la socket
21:34 <misc> (enfin sous linux, c'est comme ça que je ferait )
21:34 <didouche_> misc, ça être l'air très complexe à mettre en ouvre ?
21:35 <misc> didouche_: bah nan, ç'est assez logique en fait
21:35 <didouche_> donc en fait, j'injecte des instructions au programme pour qu'il envoit lui même le paquet ?
21:35 <misc> mhh tu peux aussi faire ça en fait
21:36 <aconrad> didouche_: tu as la main sur le programme qui ouvre le socket ?
21:37 <didouche_> bon, je crois que je vais directement parler de mon objectif, ce sera plus clair
21:37 <didouche_> voilà, en fait, c'est un chat écrit en flash sur un site internet
21:38 <haypo> ouille :)
21:38 <haypo> ça commence mal
21:38 <didouche_> pourquoi ?
21:38 <didouche_> en fait, j'ai analyser les trames avec Wireshark
21:38 <didouche_> et j'ai très bien compris le fonctionnement des échanges entre mon navigateur Firefox et le serveur
21:39 <didouche_> mais impossible d'ouvrir une socket de mon script Python, parce que ce chat utilise la protection des
21:39 <misc> la protection des tigres du soleil couchant ?
21:39 <didouche_> Cross-domain policy
21:40 <misc> le cross domain policy s'applique qu'au plugin flash, donc je vois pas en quoi ça affecte le script python
21:40 <didouche_> du coup, le serveur m'envoit bien le policy mais je ne peux pas aller plus loin, vu que pour lui mon IP n'est pas un domaine valide
21:40 <misc> ( ou alors je pige pas )
21:40 <didouche_> misc, parce qu'il s'attend à communiquer avec un domaine valide, qu'il a lui même définit
21:41 <haypo> didouche_: flash, navigateur web, socket... ça semble bien compliqué cette affaire
21:41 <didouche_> quand je suis sous l'appli Flash, c'est le serveur distant qui communique lui même, pas mon Ip locale
21:41 <misc> en fait, tu as
21:41 <didouche_> en fait Haypo ce serait très simple s'il n'y avait pas cette protection
21:41 <haypo> didouche_: tu exécutes du python dans le navigateur web (poste client) ?
21:41 <didouche_> non, avec l'IDLE
21:41 <misc> l'applet flash qui communique avec un serveur et le serveur qui communique avec 1 second serveur ?
21:42 <didouche_> bah euh honnêtement c'est un peu flou dans mon esprit sur ces communications
21:42 <misc> et le but à la base, c'est de faire quoi ?
21:42 <didouche_> sous Wireshark c'est mon IP qui envoit bien les paquets
21:42 <didouche_> le but c'est d'envoyer des messages au chat sans passer par l'interface flash
21:42 <didouche_> mais par mon script
21:43 <didouche_> ça n'est ni pour flooder ni pour tout autre truc malveillant, c'est surtout par curiosité technique
21:43 <misc> et demander aux possesseurs du chat si ils ont pas une solution pour toi ?
21:43 <misc> car bon, je suppose que tu as demandé leur avis avant, non ?
21:43 <didouche_> non, je ne leur ai pas demandé
21:43 <misc> bah commence par ça :)
21:44 <didouche_> mais je ne vois pas la différence
21:44 <didouche_> que j'envoit les paquets de l'interface flash ou d'un script
21:44 <didouche_> le résultat au niveau serveur est strictement le même, ce qui arrive est pareil
21:44 <misc> ben donc si tu voit pas la différence, et qu'il y en a pas, ça ne peux que t'avancer de demander
21:45 <didouche_> d'accord, je le ferai
21:45 <misc> enfin je pense que tu devrais plus commencer par regarder le format des echanges de flash
21:45 <didouche_> oui, c'est ce que j'ai fais
21:46 <misc> y a un systéme de rpc dans flash, ça doit être ça, y a surement des applis plus haut niveau qui sont possibles
21:46 <misc> ( voir aussi du coté de swfdec, gnash )
21:46 <didouche_> beaucoup de solutions existe mais pour le problème inverse, soit faire un serveur Python qui envoit le policy pour un client flash qui s'y connecte. Moi c'est exactement l'inverse
21:46 <aconrad> il faudrait que tu puisses envoyer depuis ton script python des packets vers le serveur qui font penser que c'est l'appli flash qui les envois...
21:46 <didouche_> voilà aconrad
21:46 <didouche_> c'est exactement cela
21:47 <misc> ben je pense que ton script oublie de faire certaines choses que fait le plugin flash
21:47 <didouche_> oui, mais je ne parviens pas à trouver pourquoi
21:48 <aconrad> didouche_: comment vas-tu synchroniser flash et python ?
21:48 <didouche_> en fait, Flash envoit ses requetes en xml
21:48 <didouche_> c'est du type :
21:48 <didouche_> <client>/voir les users</client>
21:48 <didouche_> donc, je reproduit ce système
21:49 <didouche_> ça fonctionne
21:49 <misc> didouche_: bah compare avec wireshark ?
21:49 <didouche_> je le fais
21:50 <didouche_> mais il s'y passe quelque chose de spécial
21:50 <aconrad> de magique même
21:50 <didouche_> au début l'appli flash se connecte au serveur en port 843 et lui envoit une instruction
21:50 <didouche_> mais quand je le reproduit, le serveur n'accepte pas ma connexion à ce port
21:51 <aconrad> c'est peut être les SYN/ACK tout ça
21:51 <didouche_> voilà
21:51 <didouche_> c'est difficile d'expliquer le cas pratique comme ça
21:51 <didouche_> mais en gros
21:53 <didouche_> alors voilà
21:53 <didouche_> pour être concret
21:53 <didouche_> l'échange est le suivant :
21:54 <didouche_> mon ip > au serveur 52579 > 843 (ports) [RST, ACK]
21:54 <didouche_> le serveur répond
21:54 <didouche_> euh non, le premier évideement c'est [SYN] et le serveur me répond [RST, ACK]
21:54 <didouche_> ensuite je recommance la même requête [SYN]
21:55 <didouche_> le serveur me répond une fois de plus [RST, ACK]
21:55 <didouche_> puis une troisième fois
21:56 <didouche_> puis, je me connecte au port 8080 [SYN]
21:56 <didouche_> le serveur me répond sur le port 52580 [SYN, ACK]
21:56 <didouche_> J'envois alors mon [ACK]
21:57 <didouche_> ensuite j'envois ce paquet : "<policy-file-request/>\x00"
21:57 <didouche_> toujours sur le port 8080
21:57 <didouche_> <cross-domain-policy><site-control permitted-cross-domain-policies="all"/>
21:58 <didouche_> le serveur me répond cela
21:58 <didouche_> sur 2 paquets (la liste est longue)
21:58 <didouche_> il se passe alors cela et c'est là que c'est bizarre
21:59 <didouche_> dans mon script, je n'arrive pas à aller plus loin
21:59 <didouche_> je lui envoit l'accusé [ACK]
21:59 <didouche_> puis je lui envoit [FIN, ACK]
21:59 <didouche_> puis je refait un [SYN] sur le même port distant
21:59 <didouche_> et voilà, le déroulement se poursuit ensuite
22:00 <didouche_> et sera constant et sans problème jusqu'à que je me déconnecte
22:00 <didouche_> (désolé d'envahir comme ça tout le chan ^^)
22:01 <didouche_> moi mon script ne peut pas se connecter comme au début au port 843, je commence donc par m'y connecter en 8080 et à envoyer "<policy-file-request/>"
22:01 <didouche_> le serveur me répond bien
22:01 <didouche_> puis plus rien...
22:03 <aconrad> didouche_: difficile à dire comme ça
22:03 <aconrad> didouche_: donc tu veux reproduire ce que fait flash par un script python ? et à terme remplacer flash ?
22:03 <didouche_> oui, je comprends :\
22:04 <didouche_> l'objectif oui, c'est de ne pas utiliser flash pour envoyer un message sur le chat
22:04 <didouche_> mais c'est par pur curiosité technique, vu qu'il n'y a pas beaucoup d'intérêt en dehors
22:05 <aconrad> okay, parce que tu parlais de partager un socket tout à l'heure
22:06 <aconrad> et bien il faut implémenter le protocole de communication du chat en python, facile :)
22:06 <didouche_> oui, j'ai pensé à cette solution pour réutiliser le socket que le flash cré
22:07 <didouche_> euh...
22:07 <didouche_> j'ai honte
22:07 <didouche_> à force d'expliquer mon problème
22:08 <didouche_> je viens de le résoudre
22:08 <didouche_> et ça marche
22:08 <didouche_> il suffisait de faire comme l'échange de Wireshark
22:08 <didouche_> se déconnecter durant les étapes et reprendre après
22:09 <didouche_> ^^
22:09 <didouche_> Merci beaucoup en tosu cas d'avoir pris votre temps poru tenter de m'aider
22:09 <No`> didouche_: rubber ducking
22:10 <No`> http://en.wikipedia.org/wiki/Rubber_duck_debugging
22:14 <didouche_> c'est exactement ça !
22:14 <No`> :)
22:14 <didouche_> merci d'y avoir fait référence, je passe moins pour un idiot ^^
22:14 <didouche_> encore merci à tous ceux qui m'ont aidé
22:14 <didouche_> bonne soirée :)
22:15 <aconrad> ciao didouche_
22:16 <aconrad> vous savez je peux écrire de l'utf-8 avec ConfigParser ?
22:17 <aconrad> j'arrive à lire de l'utf-8 en lui passant cfg.readfp(codecs.open("foo.ini", "r", "utf-8"))
22:18 <aconrad> mais à l'écriture, ça fou la grouille
22:18 <aconrad> ça fait un truc à la con: fp.write("%s = %s\n" % (key, str(value).replace('\n', '\n\t')))
22:18 <aconrad> c'est quoi \n\t ?
22:19 <No`> retour chariot + tabulation ?
22:19 <aconrad> ué, c'est ça
22:19 <haypo> aconrad: boarf, passe à python3
22:19 <aconrad> haypo: j'aurai bien aimé
22:19 <aconrad> mais j'ai trop de dépendances qui sont en p2
22:19 <aconrad> py2
22:20 <haypo> aconrad: hum. faut utiliser 3to2 alors :)
22:20 <haypo> (faudrait que je teste ça un jour)
22:20 <aconrad> si j'ouvre un bug, y'a des chances pour que ce soit corrigé ou c'est figé ?
22:21 <haypo> aconrad: python 2.7 beta 1 est déjà sorti, les modifs dans python2 vont être de plus en plus limitées jusqu'à la sortie de la 2.7 finale
22:21 <haypo> et après y'aura plus que du bugfix
22:22 <haypo> perso, je ne veux plus corriger python2 pour unicode
22:22 <aconrad> après tout, c'est un bug non ?
22:22 <haypo> python3 est bien mieux adapté pour ça : séparation stricte entre octet et caractères, et utilisation d'unicode par défaut et partout
22:22 <haypo> aconrad: bof
22:22 <haypo> aconrad: travaille avec des octets et ça devrait aller
22:25 <aconrad> haypo: ouais, je vais tenter
22:35 <aconrad> haypo: ça marche bien comme ça, merci
22:39 <haypo> python2 n'encourage que moyennement l'utilisation d'unicode
22:39 <haypo> je dirai même que parfois je pense qu'il fait exprès de décourager :-)
22:39 <aconrad> hehe
22:40 <aconrad> bah quand tu sais comment ça marche, je trouve que c'est plutôt bien géré. Là je dirais que c'est un bug qu'il faudrai résoudre
22:41 <aconrad> haypo: tu es commiter sur cette lib ?
22:43 <haypo> aconrad: sur tout python
22:44 <haypo> (je n'ai jamais commité sur ConfigParser)
22:44 <aconrad> ok