METTEZ UN MINI SERVEUR WEB DANS VOS APPLICATIONS

florenth - 19 oct. 2005 à 12:53
hfr11 Messages postés 20 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 8 octobre 2019 - 6 mai 2008 à 14:15
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/34252-mettez-un-mini-serveur-web-dans-vos-applications

hfr11 Messages postés 20 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 8 octobre 2019
6 mai 2008 à 14:15
Bonjour à tous,
Résolution d'IP dynamique :
1 - Faire comme expliqué au-dessus pour connaître (une fois seulement) l'IP de votre routeur
2 - Faire un "nslookup IPtrouvée...
3 - Le nom DNS que vous obtenez en retour, lui, ne change jamais pour votre routeur, c'est le repère de votre fournisseur d'accès pour vous atteindre ou vous contrôler.
4 - A chaque fois que vous voudrez connaître l'adresse de votre routeur, depuis l'intranet ou de l'extranet, il vous suffira de refaire un "nslookup LeNomDNSdeMonRouteur" et il vous sera retournée son adresse IP Publique...

Bonne continuation et bon courage à tous, a+, Patrice
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
21 juin 2007 à 18:49
Désolé pour ma réponse tardive mais cette application est faite à la base avec une socket, elle est donc utilisable en local mais aussi via internet.

Pense juste à verfier ton pare feu et etablir les regles de routages necessaire (NATage) sur ton routeur.
botelec Messages postés 38 Date d'inscription vendredi 20 juin 2003 Statut Membre Dernière intervention 11 septembre 2010 1
8 juin 2007 à 23:26
Bonsoir,
Très bon exemple Damien, Merci.

Si j'ai bien compris ce qu'expliquait, Joleroy, plus haut,
on ne peux tester cet exemple qu'en local sur http://Localhost ou http://127.0.1 ?
Sinon, il faut être sur une autre connexion internet...

Quelqu'un a-t-il pu tester cet exemple à distance par l'adresse Ip de la machine sur laquelle tourne l'aplication?


Merci.
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
25 oct. 2005 à 10:32
J' ai bien compris! Je n' ai pas dit qu' il n' est pas lourd, c' est une évidence, mais il reste pour moi le meilleur Antivirus ... Peut être que Kapersky est une meilleure option mais je ne l' ai pas encore essayé!
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
24 oct. 2005 à 19:57
Ba mis à part mon experience avec cette AntiVirus... qui ne m'a jamais trouvé un Virus et me faisait ramer ma machine, le jour ou j'lai enlever et j'ai mis un utilitaire gratuit celui là m'en a trouvé plein.

Sinon on m'a souvent appeler pour me dire "ma machine est neuve mais elle rame affreusement", je vais sur place, je coupe Norton (sans arrière pensé pourtant) et miracle ... le PC tourne normalement !

Je vais pas te raconté ma vie mais personelement, si a l'epoque où j'avais mon 486 c'etait une reference, aujourd'hui je suis terriblement deçu de ses prestations.

Mais après tout si il marche bien chez toi, ba laisse le et tant mieux :-)

PS : Je faisait que donné mon avis :D

@+ et merci

Damien
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
24 oct. 2005 à 16:22
Ok ok, mais Norton c' est pas nul !!!
The_Diablange Messages postés 20 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 15 mars 2008
24 oct. 2005 à 16:09
tous les routeurs ont un onglet ou un menu dans lequel il y a marqué son adresse ip actuelle sur le net, cé prévu pour !!!!
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
24 oct. 2005 à 16:07
Ton seul probleme va residé dans le faite de retrouver ton IP chez toi, sinon pour ton routeur Alcatel ta la notice ?

Et oui FAI çà veut bien dire "Fournisseur d'Acces Internet" ; C'est moin long à écrire c'est tout :-)

Sinon tu utilise Norton ? A moins que tu es une liscence ou que tu en soit très content, par pitié n'utilise pas çà :-s

Cordialement

Damien
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
24 oct. 2005 à 14:44
J' ai un Alcatel qui fait aussi de Firewall biensur.
Sachant que Norton bloque aussi les entrées ... on est pas couché!

Bref, j' ai bien compris où était le problème.

PS: c'est quoi ces initiales FAI (fournisseur d' internet non?) ?
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
24 oct. 2005 à 14:03
Oula je comprend pas trop vos manipulations mais bon deja si vous routez les requettes entrante sur le port 80 sur une machine local, cela ne vous empeche pas d'aller sur le net !

En gros quand tu va attaquer ton routeur (via l'IP qui ta été donné par ton FAI) sur le port 80, celui là normalement le bloque car il n'autorise pas par default que quelqu'un rentre chez toi.

Donc pour que la requette ENTRANTE aille jusqu'à une de tes machines en local (LAN) il faut naté, c'est à dire si qqn rentre par le port 80, il va falloir dire a ton routeur, tu autorise la requette a passé et à aller sur telle machine du reseau.

Ta machine en question doit possédé une socket en ecoute sur le port 80 (le but de mon programme) biensur.

Pour configurer un routeur actuellement il suffit de se connecter dessus en passant par internet.
Pour çà tu lance ton navigateur, tu tape l'adresse entrante de ton routeur c'est soucent l'IP local se terminant par ".1" et le port entrant du routeur qui est différent de 80 pour evité les conflit avec internet ! ( moi pour mon TrendNet c'est 192.168.1.1:8080 par exemple).

Et des fois ta une fenetre de longin à l'entré, le login est le plus souvent "admin" et ya pas de mot de passe !

Pour en revenir a ton problème, il suffit juste de connaitre ton IP de FAI, si celle si est dynamique çà pose un probleme car elle change à chaque connection, pour celà tu doit allé sur un site genre (http://www.no-ip.com) pour associé ton ip à une adresse de DNS. comme çà quelque soit ton IP, le nom de DNS trouvera automatiquement ton IP (via un programme installé sur ta machine.. mais je sais plus vraiment comment çà marche).

Au faite MAURICIO, c'est quoi ton routeur ? et t'es chez qui comme FAI ?

Oula ... j'parle trop moi ...

++
Bon, après tout cela, est-ce que le concerné peut rapeller son problème ? Parce que là, je crois qu'on dérive un peu hors du sujet (moi le premier) et que l'on est pas d'accord sur le problème à résoudre.
The_Diablange Messages postés 20 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 15 mars 2008
24 oct. 2005 à 12:33
Bien sur que l'on peut utiliser un port ou qui a tres tres peu de chances d'être utilisé par les autres mais.... c'est la solution de facilité
Il y a normalement dans les propriétés de ton routeur, une option permettant lors d'une requete a ce routeur de pouvoir, a distance, choisir l'ordinateur a atteindre. Ne me demandez pas laquelle, je ne l'ai pas trouvé. Je posais justement le commentaire au cas ou quelqu'un saurait.
ce qui permettrait d'avoir un truc du genre : http://dnsredir/192.168.1.50/lacommande
ou http://dnsredir/NomOrdiaAtteindre/lacommande
Voila, appel a tous ceux qui savent comment faire
Joleroy Messages postés 106 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 24 octobre 2005
24 oct. 2005 à 12:30
Le routeur redirige les requettes ENTRANTE en non sortantes! J' ai un serveur http sur une de mes machines: le port 80 y est redirigé, et ca ne m' enpeche pas d' acceder a internet
Bien vu, je n'avais pas pensé à cela.
Mais justement, les ports sont là pour ça. Tu définis un port que ton routeur renverra toujours vers UN seul PC mais qui ne rentre pas en collision avec les autres. (donc pas de port 80 ou 8080 mais 1236 par ex.)

Le fait qu'un port soit monopilisé par un ordi est obligatoire mais ne pose pas de problème: de toute façon, les autres n'ont pas besoin de cette requette.
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
24 oct. 2005 à 12:18
C' est exactement le cas malheureusement ...
The_Diablange Messages postés 20 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 15 mars 2008
24 oct. 2005 à 12:15
lol florenth
Pour la redirection de dns je suis tt a fait d'accord avec toi mais pour la redirection par nat du port 80 tu va être confronté a un probleme si les autres ordinateurs de son réseau doivent acceder aussi a internet puisque toutes les requetes du port 80 ne leurs seront plus accessible (car redirigés vers le premier ordi). Et si l'on change de port, ce sera pareil, les autres ordinateurs n'auront plus acces à ce port
qu'en pense tu ?
As tu une solution a ce probleme?
Il faut que tu configures ton routeur pour qu'il te renvoie les requettes HTTP (port 80 ou autre selon ton choix) vers ton PC. Cela se fait sur le routeur: regarde le mode d'emploi pour trouver comment faire (ça dépend des marques).

Ensuite, une fois que tu as fait cela, il te suffit pour envoyer une requette HTTP à ton PC de taper l'adresse IP de ton routeur, lequel redirigera la commande vers ton PC.

Pour connaitre l'adresse IP du routeur pas de miracle: c'est ton FAI qui te l'attribue. Un serveur DNS, c'est groso modo un service qui rediriges une adresse Internet vers ton ordi.
Ex: ton IP n'est pas fixe. Tu utilise ce service en lui disant de rediriger l'adresse http://www.monPC.com sur ton IP. Le serveur, lui, connait toujours ton IP, même quand elle change, et se charge de faire suivre la requette.

Va voir ici, c'est sûrement mieux expliqué : http://whois.perl-gratuit.com/documentation/serveurs_dns.html
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
24 oct. 2005 à 10:55
Mon problème n' est pas le fonctionnement en local mais le fonctionnement via internet...

->Ok, je sais que mon routeur a une IP.
->Ce que je sais pas faire est ceci:
"(si elle est static tant mieux, sinon utilise un DynDNS), et que tu configure ton routeur pour qu'il NAT sur la machine où se trouve le programme."

Sachant que mon IP est dynamique mais que mon routeur est toujours branché, peux-tu m' expliquer comment faire?
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
24 oct. 2005 à 10:47
Oula ya eut plein de truc ecrit ici ...

Pour les composants Indy no soucy, mais faut que j'install Delphi 7 Entreprise chez moi, que je m'y mette et j'vous fait une mise a jour dès que possible.

Sinon je ne voit pas ton probleme MAURICIO, si tu veux eteindre ton serveur via internet de n'importe où il faut que tu indique l'IP de ton FAI (si elle est static tant mieux, sinon utilise un DynDNS), et que tu configure ton routeur pour qu'il NAT sur la machine où se trouve le programme.

Sinon pour l'utiliser en local tu est obligé d'utiliser l'adresse IP de ton reseau local. L'utilisation de ton IP internet, ne marchera pas en local.

Si tu comprend pas .. demande moi ce qui te gene !

Damien
Joleroy Messages postés 106 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 24 octobre 2005
21 oct. 2005 à 18:03
Si si, j' ai raison!!
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
21 oct. 2005 à 17:46
Haaaaaaa... !!!
ha??? je pense pas que tu aies raison mais je vais essayer ...
Joleroy Messages postés 106 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 24 octobre 2005
21 oct. 2005 à 17:44
normal, ton ip internet est acessible uniquement depuis une autre connection. essaye a partir de la connection d'un ami.
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
21 oct. 2005 à 17:38
Merci en tout cas pour tes explications, je te tiens au courant mais je dois laisser tomber pour le moment ...
Les routeurs c'est ch**** ! mais comme je n'en ai pas, je ne peux pas t'aider si ce n'est que te dire qu'il doit bien y avoir un moyen de demander au routeur de te "router" (lol) vers ton pc.
Sinon, pour le firewall, il suffit de lui dire de laisser un port ouvert.
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
21 oct. 2005 à 17:29
Ça ne marche pas :(
D' ailleurs, Si j' ecrits seulement l' IP, je me retrouve ds le serveur WEB de mon routeur !!! Ça doit etre le firewall du routeur?
Joleroy Messages postés 106 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 24 octobre 2005
21 oct. 2005 à 17:16
rend toi sur www.adresseip.com, qui t affichera ton ip internet.
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
21 oct. 2005 à 16:56
ok,
monIP_temporaire est l' IP de mon routeur, donc le même quel que soit le PC ds mon réseau!?
Non, tout simplement cela: http://monIP_temporaire:1236/shutdown (je viens juste de tester).
Mais évidemment, il faut connaitre son IP.
Si t'as d'autres problèmes poses ta question sur le forum, on risque d'encombrer la page.
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
21 oct. 2005 à 16:37
Erratum: il ne s'agit pas de définir une commande mais de définir un messsage à transmetre par la methode GET.
Exemple avec un TIdHTTPServer (Active True , DefaultPort 1236) et ce code dans l'event OnCommandGET :
--------------------------------------------------------------
procedure TForm1.IdHTTPServer1CommandGet(AThread: TIdPeerThread;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
if LowerCase(ARequestInfo.Document) = '/shutdown' then
ExitWindows(0, 0);
end;
--------------------------------------------------------------

et pour éteindre le pc, on fait http://127.0.0.1:1236/shutdown

@ ++ Flo
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
21 oct. 2005 à 16:30
Merci Florenth,
mais le problème est justement de savoir quel est mon IP.
Je suppose que ce n' est pas le meme que ds mon réseau local ...
Mauricio : il suffit de mettre le serveur en écoute sur un port bien défini genre 8080 et de définir la commande "shutdown"
Après, pour éteindre ton PC à distance, tu tapes http://ton.ip:8080/shutdown

Et voila !
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
21 oct. 2005 à 12:39
Je viens d' avoir une autre idée?!
Peux tu mettre avant de montrer cette fenêtre principale, une fenêtre de login?
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
21 oct. 2005 à 12:36
Salut Elguevel, bon bem je commence par les insultes? non, je plaisante!
Excelente source pour montrer à ceux qui ne s' y sont jamais collé que c' est pas sorcier !!!
Par contre, je te demande si tu peux changer cette source afin d' utiliser les compos Indy?! 10/10

PS: Je voudrais mettre une commnande pour faire le shutdown du PC servant de serveur et aussi, envoyer le même ordre du Serveur vers le client. Cependant, je sais pas quelle adresse je dois mettre vu que ce n' est plus une intranet ... Sans compter que mon routeur fait de firewall et que Norton me bloque toute intrusion en me demandant si j' accepte la liaison :(
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
21 oct. 2005 à 08:55
oui j'avais déjà vu ta source florenth, très beau boulot ;-)
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
20 oct. 2005 à 14:49
Pour la prise en charge de PHP il faut créer un systeme qui soit capable de parser et interpreter le langague, celà dépasse le cadre de mon application (et de mes connaissances) :-D

Sinon pour ceux qui veulent se lancer la classe TParser permet de faire pas mal de trucs :-)
Joleroy Messages postés 106 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 24 octobre 2005
20 oct. 2005 à 13:26
Manque plus que la prise en charge de php :)
vaughan Messages postés 198 Date d'inscription mardi 6 août 2002 Statut Membre Dernière intervention 29 octobre 2008
20 oct. 2005 à 10:04
Indy n'est pas livré avec toute les versions de Delphi ... par contre en freeware il existe une alternative qui pour moi est de plus mieux qu'indy. Les composants ICS de M Piette. Ce monsieur anime entre autre les conférences Borland.

Voici le lien
http://www.overbyte.be/frame_index.html
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
19 oct. 2005 à 17:47
Bon ba à vos claviers.... On recode avec Indy :-)
Filipe35 Messages postés 470 Date d'inscription vendredi 14 novembre 2003 Statut Membre Dernière intervention 23 octobre 2007 1
19 oct. 2005 à 17:30
Et Delphi 5 intègre TServerSocket et TClientSocket ;)

bonne source
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
19 oct. 2005 à 15:22
Ceci est un extrait du ficher README.TXT qui se trouve dans le répertoire de Delphi7 :

"L'utilisation de TServerSocket et de TClientSocket
de l'unité ScktComp a été désapprouvée par Borland. Il
est recommandé d'utiliser les composants Indy pour les
opérations de sockets. TServerSocket et TClientSocket
ne sont plus installés dans la palette de composants
par défaut. Si vous devez utiliser ces composants, vous
pouvez installer la paquet de conception nommé
dclsockets70.bpl que vous trouverez dans votre
répertoire bin. Pour un déploiement avec les paquets
d'exécution, vous devrez déployer rtl70.bpl et tous les
éventuels paquets nécessaires."

Alors Yves, tu sais ce qui te reste à faire !

Ken@vo
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
19 oct. 2005 à 15:06
J'utilise DELPHI 7
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
19 oct. 2005 à 14:33
"ServerWeb" est un TServerSocket, donc tes 2 messages d'erreurs sont en faite 1 erreure !

Sinon quelle version de Delphi utilise tu ?

En gros l'erreur que tu as est du au fait que Delphi ne trouve pas le composant "TserverSocket", ce que je trouve bizzard c'est que ce composant est présent sur toutes les versions de Delphi.

Conseil : Utilise au minimum Delphi 6 ! Sinon je voit pas ..

Cordialement.
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
19 oct. 2005 à 13:50
Bonjour,

A la compilation j'ai les 2 erreurs :

classe TServerSocket non trouvée
ServerPage.ServerWeb n'a pas de composant correspondant

Salutations
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
19 oct. 2005 à 13:07
En faite j'ai fait çà hier ; c'est en voyant la page web d'un serveur Emule que j'ai eut l'idée !

Sinon oui c'est une ebauche, la classe de création HTML peut être largement plus ettoffé et plus complète, et il n'y a là que la base de l'affichage.

Sinon pour les composants Indy il faudra que je vois, car je ne les ait encore jamais utilisé.

Mais merci pour le commentaire.
Vraiment interressant comme code.
On regrette que la fonction d'ajout de tableau ne produise que maximum deux colonnes.
un Tableau: array of array of string serait la bienvenue pour rendre mieux.

Evidemment ce n'est qu'une ébauche, mais le principe est là et c'est l'essentiel.
NB: Le cmposant TIdHTTPServer de la librairie Indy (que je recommande par ailleurs) est très complet et gère des évenements plus complexes (méthodes POST, GET, envoi de fichiers ...)
C'est juste au cas où quelqu'un rechercherait un compo tout fait.

Mais je n'enlève pas le mérite de ta classe THTML. 9/10 (on n'est jamais trop parfait).
Rejoignez-nous