jeudi, février 22, 2007

nouveau projet en cours

ça fait un moment que je n'ai pas ecrit alors histoire de donner des nouvelles voici le projet en cours de developpement (d'ailleurs ceux qui veulent se joindre à moi sont les bien venu)

1. description du Projet :
un proxy http qui a pour seul but de changer à la volée l'user agent dans les requettes et de relayer le tout vers un autres proxy (donc dans le cas qui nous concerne : changer l'user agent en celui d'un Nec N500i et relayer les requettes vers le proxy imode)
mais pourquoi donc ? tout simplement pour eviter de patcher quoique ce soit et surtout sur pocket pc en passant par ce proxy tous les applets http (opera mini, google maps, mig33 msn messenger) fonctionneront comme si on avait un forfait data.
pour ce projet, je voulais un langage simple d'utilisation, freeware, et multiplateforme et j'ai trouvé le TCL ( Le site officiel et ici La version pocket PC )

2. Etat d'avancement du projet
pour le moment le proxy fonctionne pour les requette GET, il reste a développer la gestion des requettes POST

3.le code dans son etat actuel :

--- DEDUT ---

proc proxysocket {{port 3128}} {
global serversock
set serversock [socket -server proxyservsetevent $port]
}

proc proxyservsetevent {s i p} {
fconfigure $s -encoding binary
fconfigure $s -translation binary
fconfigure $s -blocking 0
fileevent $s readable "proxyservfirstevent $s"
}


proc proxyservfirstevent {s} {
global in
# on choppe la requette
# set in [read $s]
gets $s in
set test [read $s]
set l1 [split [lindex [split $in \n] 0] " "]
set command [lindex $l1 0]
set url [lindex $l1 1]
set proto [lindex $l1 2]
# set test [lindex $l1 3]


# on imprime dans la console tcl
puts "socket number $s"
puts "request : $in"
puts "method : $command"
puts "--------------------"
puts $test
puts "===================="

switch $command {
GET {
set h [http::geturl $url -command "proxyfeedpage $s"]
fileevent $s readable "proxyservnextevent $s"
}
POST {
# CODE A DEVELOPPER ICI POUR LE POST DANS L EXEMPLE ON ENVOI UNE VARIABLE
# NOMME VARIABLE QUI A POUR VALEUR : VALEUR
set h [http::geturl $url -command "proxyfeedpage $s" -query "variable=valeur" ]
fileevent $s readable "proxyservnextevent $s"
}
}
}

proc proxyservnextevent {s} {
# set in [read $s]
gets $s in
}

proc proxygeturl {s h} {
}

proc proxyfeedpage {s h} {
puts $s [http::data $h]
flush $s
proxyclosepage $s $h
}

proc proxyclosepage {s h} {
http::cleanup $h
close $s
}


proc proxyinit {} {
package require http
::http::config -useragent "portalmmm/2.0 N500i(c20;TB)"
::http::config -proxyhost 62.201.129.241
::http::config -proxyport 5080
proxysocket 3128

}

console show
proxyinit


--- FIN ---

voila donc pour le moment ou j'en suis mais ce " proxy " n'est qu'une base de developpement
je pense qu'il est faisable de faire un "proxy" relais pour le protocole SMTP/POP mais ca sera quand celui la sera fini


si vous etes developpeur et que ce projet vous interesse vous pouvez me contacter sur msn messenger à : beboxos AT ifrance.com (attention c'est un email a spam donc uniquement par msn messenger je ne releve jamais cet email)

en esperant avoir un peu d'aide.

vous verrez l' eTCL est un langage tres simple a manipuler et qui permet de faire de bon programmes qui fonctionnent sur linux, windows, mac OS X, windows mobile etc ...

Aucun commentaire: