Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SERVEUR HTTP PYTHON


Information sur la source

Catégorie :Réseau & internet Classé sous : http, serveur, simple, bien, parfait Niveau : Initié Date de création : 14/04/2007 Vu / téléchargé: 3 324 / 181

Note :
9 / 10 - par 2 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

Description

Je me suis amusé, à creer un semblant de serveur "http".

Le programme ouvre le port 80,
il attent que le WebBroswer utilise ce port,
il recupère le message du naviguateur,
il bidouille un peu avec,
réussit à en sortir seulement l'url,
envoit au naviguateur le contenu de la page qui a été au préalable placée dans sa racine.

bon voici le script : (commenté, c'est rare pour moi)
 

Source

  • import socket, sys, threading,time,os
  • DIR=os.getcwd() # ici on prend la localisation du prog
  • PAGE_ERROR="""<br>ERREUR !!!!
  • <br>rien ne va plus !
  • <br>je sais pas ou cela mene !!!
  • """ # ceci est la page affichee en cas d'erreur
  • HOST = "0.0.0.0"# adresse ip de VOTRE ordinateur dans VOTRE reseau local
  • PORT = 80 # port 80 qui correspond au http (attention a ce que le port ne sois pas deja utilise
  • class ThreadClient(threading.Thread):
  • """derivation d"un objet thread pour gerer la connexion avec un client"""
  • def __init__(self, conn):
  • threading.Thread.__init__(self)
  • self.connexion = conn
  • def run(self):
  • #cette partie peut paraitre compliquee, c'est parceque j'ai fait comme j'ai pu
  • msgClient = self.connexion.recv(1024) # on prend la requette du webbroswer
  • print time.asctime()+' : le client se connecte dans la page :'
  • print time.asctime()+' : '+msgClient.split('\n')[0][4:-10] #une petite page d'info
  • fi=msgClient.split('\n')[0][4:-10]
  • if fi=='/': fi='/index.html' #transforme <<http://mapage/>> en <<http://mapage/index.html>>
  • try :
  • os.chdir(DIR+'/'.join(msgClient.split('\n')[0][4:-10].split('/')[:-1]))
  • y=open(msgClient.split('\n')[0][4:-10].split('/')[-1],'r') #en brefici on va chercher dans la racine du fichier en .py les page html
  • msg=y.read()
  • y.close()
  • except:
  • msg=PAGE_ERROR # si on ne les trouves pas on envoit une erreur
  • connexion.send(msg) # on envoit la page web
  • self.connexion.close()
  • mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  • try:
  • mySocket.bind((HOST, PORT))# on initialise
  • except socket.error:
  • print time.asctime()+" : La liaison du socket a l'adresse choisie a echoue." # si erreur ici, verifiez l'IP et le port 80
  • sys.exit()
  • print time.asctime()+" : Serveur pret, en attente de requetes ..."
  • mySocket.listen(5)
  • while 1:
  • try :
  • connexion, adresse = mySocket.accept()#a chaque fois que quelqu'un se connect on l'accepte
  • th = ThreadClient(connexion)#et on initialie le Thread
  • th.start()
  • except :
  • print time.asctime()+" : ERREUR" #au cas ou
import socket, sys, threading,time,os

DIR=os.getcwd()             # ici on prend la localisation du prog
PAGE_ERROR="""<br>ERREUR !!!!
<br>rien ne va plus !
<br>je sais pas ou cela mene !!!
"""                         # ceci est la page affichee en cas d'erreur

HOST = "0.0.0.0"# adresse ip de VOTRE ordinateur dans VOTRE reseau local
PORT = 80       # port 80 qui correspond au http (attention a ce que le port ne sois pas deja utilise

class ThreadClient(threading.Thread):
    """derivation d"un objet thread pour gerer la connexion avec un client"""
    def __init__(self, conn):
        threading.Thread.__init__(self)
        self.connexion = conn
    def run(self):
                                                        #cette partie peut paraitre compliquee, c'est parceque j'ai fait comme j'ai pu
        msgClient = self.connexion.recv(1024)           # on prend la requette du webbroswer
        print time.asctime()+' : le client se connecte dans la page :'          
        print time.asctime()+' : '+msgClient.split('\n')[0][4:-10]      #une petite page d'info
        fi=msgClient.split('\n')[0][4:-10]
        if fi=='/': fi='/index.html' #transforme <<http://mapage/>> en <<http://mapage/index.html>>
        try :
                os.chdir(DIR+'/'.join(msgClient.split('\n')[0][4:-10].split('/')[:-1]))
                y=open(msgClient.split('\n')[0][4:-10].split('/')[-1],'r')                  #en brefici on va chercher dans la racine du fichier en .py les page html
                msg=y.read()
                y.close()
        except:
                msg=PAGE_ERROR # si on ne les trouves pas on envoit une erreur
        connexion.send(msg)    # on envoit la page web
        self.connexion.close()



        
mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
    mySocket.bind((HOST, PORT))# on initialise
except socket.error:
    print time.asctime()+" : La liaison du socket a l'adresse choisie a echoue." # si erreur ici, verifiez l'IP et le port 80
    sys.exit()
print time.asctime()+" : Serveur pret, en attente de requetes ..."
mySocket.listen(5)

while 1:
    try :
        connexion, adresse = mySocket.accept()#a chaque fois que quelqu'un se connect on l'accepte

        th = ThreadClient(connexion)#et on initialie le Thread
        th.start()
except :
        print time.asctime()+" : ERREUR" #au cas ou

Conclusion

J'ai créé ceci car aprés avoir hacké six fois le réseau du FBI, trois le Pynthagone, avoir volé et revendu plusieurs codes de lancement de missiles à tête nucléaire, huit fois la CIA, une fois le NCIS et autre bricolles, je me suis dit : "aller pour me rellaxer j'me fait un ptit script.

c'est de l'humour (j'espère que vous aviez tous compris, pasque trois fois à cause de ca j'ai eut le GIGN sur le dos)

ATTENTION : c pas sécurisé du tout.
ATTENTION : seulement en Local

dans le zip il y a mon site web (oc.fb.bz) pour vous faire assayer ce programe parfaitement parfait sur mon site infiniment suppérieur a tout les autres. (oubliez pas de changer l'adresse IP !)

sinon juste comme ca, un trophé par définition ca ne me revient pas?

bon j'arrête de déconner et j'attent vos propositions pour amiliorer ce projet !
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de aera group le 12/05/2007 16:41:24

Bonjour,
Pour commencer, l'idée du jeu est génial, mais je n'est pas bien compris comment on fait pour joué : j'ai lancer le serveur, mais je ne sais pas à quoi servent les pages internets : sur laquelles dois je cliqué ? Et certain lien sont "morts". Merci d'éclairer ma lanterne

signaler à un administrateur
Commentaire de xeolin le 26/05/2007 14:01:59

En fait tu doit lancer le programme
ensuite ouvre internet explorer/firefox/opera a l adresse 127.0.0.1 OU localhost.
et la tu as le site dont les pages se trouvent dans la racine du logiciel python.

nb : jqi pris les pages dun site o hasard pour faire lexemple

pardonne moi pour mon orthographe, mon clqvier est configure en anglais et je nai pas lhabitude

Xeolin

signaler à un administrateur
Commentaire de aera group le 26/05/2007 16:29:13

Ok Merci beaucoups, je test ça tous de suite

signaler à un administrateur
Commentaire de aera group le 26/05/2007 16:32:39

Très bien, je met 9/10

signaler à un administrateur
Commentaire de V4mp le 26/09/2007 01:15:37 9/10

Bien joué xeolin ...

9/10

signaler à un administrateur
Commentaire de xeolin le 05/07/2008 18:55:57

DINg - je le redis,apres avoir relis le texte j'ai trouvé 5 faille de securitée, je vais enlever tout ca...

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

heklp serverSocket [ par Harvester_ ] Voila j'ai utliser un script du siteC'est un server socket qui marchait tres bien au debut(source)#!C:\Python23\python.exeimport SocketServerimport sy Socket+timeout [ par power211 ] Re Bonjour tout lemonde,bon voila j aurai une ptite question sur les sockets plus les timeout.Donc je vais directement aller au but avec un exemple co Bittorent Source [ par 0mega ] Bonjour a tous ! J'essaie en vain de compiler la source du dernier client bittorent (python 2.4) mais sans succ&#233;s. Voici le read-me inclus av Librairie graphique vectoriel [ par DoudouBidou ] Bonjour, j'ai depuis quelques jour un projet en t&#234;te, celui de r&#233;aliser un logiciel de saisi de sch&#233;ma &#233;lectrique en python. Application FTP, urgent [ par mus_python ] Bonjour tout le monde, je viens de commencer la programmation avec python et je suis charg&#233; de faire une application qui permet la connexion entr Socket et Threading [ par dabcorp ] Bonjour , J'ai fait un client/serveur socket , mais je me comprend pas les threads ... Je suis oblig&#233; de faire une boucle pour relance le progra serveur python et client visual basic [ par vinz973 ] bonjour je souhaite cr&#233;er un&nbsp;serveur en python (socket) qui recoive des donn&#233;es d'une client en visual basic (winsock ) en TCP le probl reseau local, serveur/client [ par xilure ] Bonjour,j'ai fait un petit scripte, que me permet soit d'etre un serveur ou un clien, et d'envoyer des message (chat en reseau) Mais voila, quand je s DLA - mouvement de brown [ par loper ] salut, ben jai un petit sousis, je dois r&#233;aliser un programme en Numeric python ki repr&#233;sente le mouvement des particules. ci-joint je vous besoin d'aide ,code client/serveur [ par Veust ] Je suis actuellement sur un projet ou je suis suppposé écrire un code sous python permettant de faire communiquer plusieurs types de plateformes (PC,


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.