begin process at 2008 07 05 18:21:05
1 205 267 membres
240 nouveaux aujourd'hui
14 119 membres club

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 !

ACCÉDER À SON ORDINATEUR DEPUIS N'IMPORTE QUELLE MACHINE CONNECTÉE À INTERNET COMME SI C'ÉTAIT UN SITE WEB!


Information sur la source

Catégorie :Composants Classé sous : http, server, web, accéder, distance Niveau : Expert Date de création : 01/11/2004 Date de mise à jour : 04/11/2004 02:09:42 Vu / téléchargé: 40 040 / 22 750

Note :
9,5 / 10 - par 18 personnes
9,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

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

Description

Alors voilà le concept:
Imaginez que vous êtes chez un ami, votre ordinateur est allumé chez vous et connecté à Internet, et votre ami (qui a un mac par exemple) est lui aussi connecté à Internet. Et là, brusquement, vous auriez besoin de faire quelque chose à distance sur votre ordinateur, comme par exemple récupérer un fichier, lire vos mails, lancer un erveur réseau de Unreal Tournament ou même l'éteindre...

Eh bien ce petit programme vous permet de faire tout cela en passant par une page web qui permet de contrôller votre ordinateur à distance. Il y a 3 fonctions principales:
-Prendre le contrôle de la souris, et faire des captures d'écran répétées de ce qu'il y a sur votre moniteur   [:D
-Explorer vos fichiers comme avec l'explorateur de windows, télécharger ou uploader des fichiers     [:O
-Avoir une fenêtre comme la fenêtre MS-DOS dans laquelle vous pouvez tapper des commandes à distance et lire les résultats     [:P

Les seules conditions pour pouvoir l'utiliser sont:
-Ne pas oublier de lancer le programme avant de partir de chez vous
-Connaître votre addresse IP. Si pas exemple votre addresse IP est 123.456.789.123, il suffit de se connecter au site http://123.456.789.123 et le tour est joué!

Evidemment, pour que tout le monde ne puisse pas faire impunément ce qu'il veut sur votre ordinateur, il y a une protection par mot de passe. Pour l'instant, le seul account est: Username=Feux et Password=666666. Pour le changer, il faut éditer la propriété "Accounts" du composant THTTPPasswordRequestFile qui est sur la fiche principale du projet, et vous pouvez réjoutter ou enlever des mots de passe. Simple, non?

ATTENTION TOUTEFOIS A NE PAS LAISSER VOIR VOTRE PASSWORD PAR N'IMPORTE QUI, IL AURAIT ALORS ACCES A TOUT VOTRE ORDINATEUR!!!

Source

  • Pour faire marcher le code, il faut déjà installer mon pack de composant FileSystem que vous pourrez trouver ici:
  • http://www.delphifr.com/code.aspx?ID=27147
  • Marche à suivre:
  • -Installer FileSystem.dpk
  • -Installer HTTPDistantAccess.dpk (inclus dans le zip de cette page)
  • -Compiler le projet Project1.dpr
  • -Le lancer.
  • Lorsqu'on lance le projet, une fenêtre apparait, avec un bouton "Local test". Ce boutton permet de tester le server HTTP sur votre propre machine. C'est ce que j'ai fait lors de la capture d'écran, ce qui explique que l'image est récursive: la page web "photographiait" mon écran toutes les 2 secondes, puis se mettait à jour automatiquement, et ainsi de suite...
  • J'ai testé mes composants JavaScript avec Netscape, ça a l'air de marcher à peu près, mais c'est moins joli qu'avec Internet Explorer.
Pour faire marcher le code, il faut déjà installer mon pack de composant FileSystem que vous pourrez trouver ici:
http://www.delphifr.com/code.aspx?ID=27147
Marche à suivre:
-Installer FileSystem.dpk
-Installer HTTPDistantAccess.dpk       (inclus dans le zip de cette page)
-Compiler le projet Project1.dpr
-Le lancer.

Lorsqu'on lance le projet, une fenêtre apparait, avec un bouton "Local test". Ce boutton permet de tester le server HTTP sur votre propre machine. C'est ce que j'ai fait lors de la capture d'écran, ce qui explique que l'image est récursive: la page web "photographiait" mon écran toutes les 2 secondes, puis se mettait à jour automatiquement, et ainsi de suite...

J'ai testé mes composants JavaScript avec Netscape, ça a l'air de marcher à peu près, mais c'est moins joli qu'avec Internet Explorer.

Conclusion

Maintenant je vais parler des composants qui sont inclus dans le package.

J'ai déjà défini un nouveau type de collection (attention, il ne descend pas du TCollection de base de Delphi). C'est la classe TComponentCollection, qui descend de TPersistent. Sa particularité est de contenir des composants sans icône (qui sont enregistrés dans l'IDE via la fonction RegisterNoIcon de Delphi), et qui sont quand même accessibles depuis la fiche, comme par exemple les TMenuItem.

Ce type de collection a une propriété Owner, de type TComponent. Le composant Owner d'une collection doit implémenter l'interface IComponentCollectionOwner, qui a une seule fonction permettant d'accéder à la collection proprement dite. Les composants qui sont des items de la collection doivent implémenter l'interface IComponentCollectionItem, qui permet de retrouver l'Owner de la collection dont ils font partie, ce qui implique qu'un composant ne peut pas être un item de 2 collections différentes, et qu'un composant ne peut pas être l'owner de plusieurs TComponentCollection.

J'ai défini un descendant de TComponent qui implémente déjà toutes les méthodes nécessaires pour un IComponentCollectionItem, c'est la classe TComponentCollectionItem. J'ai programmé un property editor pour gérer les TComponentCollection, qui crée une arborescence (en effet, rien n'empèche un TComponentCollectionitem de posséder lui-même sa propre collection de composants  :D)

Lorsqu'on programme un server Web, il faut gérer l'aspect Multithreading de la connection. C'est à dire qu'à chaque fois qu'un nouveau client se connecte, un nouveau thread de connection est créé du côté du server. C'est assez problématique avec Delphi, car la VCL n'est pas "thread-safe"...

Pour pallier à ce (petit) défaut, j'ai décidé de créer un descendant de TDataModule qui contient les données de chaque connection au serveur, c'est la classe TServerDataModule. Chaque instance est créée avec Owner=nil, ce qui permet d'éviter les problèmes de synchronisation de threads, et détruite dans le thread qui l'a créée. Dans la partie initialization de l'unité qui définit le descendant de TServerDataModule, il faut enregistrer la classe descendante avec un appel de la fonction RegisterClass. Pour créer un nouveau type de TServerDataModule, il faut aller dans le menu File->New->Other... puis choisir dans la rubrique HTTP l'item "Server data module". Ensuite, une nouvelle fiche de TDataModule est créée pas Delphi, avec une propriété publiée de type THTTPFiles.

Le composant principal du package HTTPDistantAccess est le composant THTTPDistantAccess. Il a une propriété qui est: ServerDataModuleClass, de type string. Il faut lui affecter un nom de classe de descendant de TServerDataModule valide. Cette classe est instanciée à chaque fois que le server HTTP initialise une nouvelle session.

Pour réaliser un serveur web, il faut ajoutter des HTTPFiles dans la propriété HTTPFiles du THTTPServerModule. J'en ai défini pusieurs classes:

-THTMLDocument: crée un document html. Voir plus bas.
-THTTPDynamicGraphicFile: crée une image dynamiquement à chaque requête via un événement. Un autre événement sert à obtenir l'extension du graphique.
-THTTPStaticGraphicFile: crée une image statique dont la donnée est dans les resources du programme.
-THTTPDynamicFile: un document dynamique quelconque.

Le composant THTMLDocument est le plus important: c'est lui qui permet de faire des pages Web. Il publie une propriété HTMLObjects qui descend de TComponentCollection, et qui contient les objets qui apparaissent sur la page. Ces objets peuvent être de plusieurs types:

-THTMLRawCode: du code HTML brut, statique, stocké dans les resources du programme.
-THTMLDynamicRawCode: la même chose, mais le code HTML est généré dynamiquement via un événement.
-THTMLEdit: comme un TEDit, mais sur une page Web
-THTMLButton, THTMLCombobox, THTMLListBox, THTMLMemo...: des contrôles HTML standards
-THTMLGraphicObject: une image, avec une propriété HTTPGraphicFile qu'il faut relier à une THTTPGraphicFile comme défini plus haut.
-D'autres encore que j'oublie et à venir.

Le principe est le suivant: on fait coopérer du code Javascript du côté du client avec le code Delphi du côté du server, de façon à ce que les événements et les propriétés des contrôles de la page Web soient réacheminés du côté du server. Ainsi, lorsqu'on définit un événement OnClick pour un THTMLButton, l'événement est lancé sur le server chaque fois que le client clique sur le bouton. De plus, si par exemple il y a un THTMLEdit sur la page et que le client en a modifié le contenu, la propriété Text correspondante du server est mide à jour. Ainsi, lorsqu'on programme la page Web du côté du server, on programme de la même façon que si les contrôles étaient des contrôles standard Delphi. Puissant, non?

J'ai testé mon programme avec Internet Explorer et avec Netscape, ça a l'air de fonctionner à peu près. J'ai eu du mal au début car les 2 browser n'utilisent pas la même gestion des événements.

Voilà, c'est tout pour l'instant pour les explications. Le code est encore en version Bêta, je l'ai commencé il y a seulement 4 jours, et dès que j'ai le temps je le commente.

En attendant, toute remarque ou commentaire seront les bienvenus.

Là encore, les composants ont été écrits avec Delphi 7, je ne sais pas s'ils seront compatibles avec les versions antérieures de Delphi. Est-ce que quelqu'un peut me dire s'il a réussi à les installer et à les faire marcher? Merci!


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

01 novembre 2004 18:11:20 :
Juste une petite précision: si vous regardez l'unité ConsoleThread.pas, vous verrez qu'un autre processus externe est lancé: il s'agit du programme cmd de windows XP (la commande MS-DOS). Dans certains cas, lorsque par exemple vous quittez le programme du server avec alt+ctrl+suppr, il se peut que ce processus ne soit pas arrêté. Il faut alors l'arrêter manuellement avec alt+ctrl+suppr (il s'appelle "cmd" dans la liste). Sinon, lorsqu'on tente de lancer à nouveau le server, on obtient une erreur du genre: "could not connect, address and port are already in use" Bientôt, je mettrai une mise à jour pour connecter et déconnecter manuellement le server, pour l'instant le server se connecte dès qu'il est créé et se déconnecte lorsqu'il est détruit.
04 novembre 2004 02:09:42 :
ATTENTION: pour que cette mise à jour fonctionne, il faut aussi mettre à jour le package FileSystem, sinon il se produit parfois des bugs lorsqu'on utilise la TFileSystemSaveDialog. La mise à jour est disponible sur la page où vous avez pu télécharger le package FileSystem la première fois: http://www.delphifr.com/code.aspx?ID=27147 Bugs corrigés dans cette version: -Aucun je crois, apparemment personne ne m'a dit s'il y en avait dans la version précédente. Ah si, j'oubliais: BenXbox m'a signalé que lorsqu'il installait le package puis ensuite essayait de compiler l'exe, Delphi lui disait qu'il n'arrivait pas à trouver les *.pas du packages utilisés dans l'exe. Ceci est je pense un bug de Delphi, je l'ai déjà rencontré dans des situations assez particulières, par exemple lorsqu'on change de répertoire le source d'un package déjà installé, et qu'on installe le nouveau source qui a changé de place. Dans ces cas là je crois avoir trouvé une solution: il faut remettre le package à l'endroit précédent, puis l'ouvrir avec Delphi, le retirer de la liste des packages installés. Ensuite, fermer Delphi, détruire le fichier .bpl correspondant dans le répertoire /bpl/ où Delphi stocke les packages installés dans l'IDE, changer le package de place, le réouvrir et le réinstaller. Bonne chance! Sinon, on peut aussi rajoutter à la main les *.pas manquant au projet (Shif+F11) mais ça risque de le refaire à chaque fois que vous voudrez créer un nouveau projet qui utilise mes composants :-( Modifications du package HTTPDistantAccess: Apparemment ce n'était pas une bonne idée de faire descendre THTTPDistantAccess de TidCustomHTTPServer, car ce dernier publie malheureusement des événements qui n'ont aucun sens dans le contexte de mon composant, comme par exemple OnSessionStart. En plus, je les ai déjà utilisés pour autre chose. Donc la liste est la suivante: -Ajout d'un TPropertyEditor pour la propriété HTTPServerModuleClassName: c'est toute la magie de Delphi en une page de code. Le property editor va scanner toutes les unités qui contiennent un Designer, et sélectionner uniquement les classes qui descendent de THTTPServerDataModule. Il prévient ensuite l'utilisateur qu'il faut enregister la classe avec RegisterClass dans son code. -Ajout des propriétés les plus importantes du TIdHttpServer au THTTPDistantAccess. C'est bourrin mais ça marche. -Gràce à la propriété Bindings et DefaultPort, on peut changer le mappage des adresses IP et des ports du server. -Grâce à la propriété Active, on peut déconnecter ou reconnecter le server -Ajout des événements OnStatus, OnServerOnLine, OnServerOffLine. Modifications de l'exe: cette fois on a un server HTTP qu'on peut paramétrer avec pas mal d'options. -Les options sont stockées dans un .ini, pour revenir aux options par défaut il suffit de détruire le fichier ini avant de lancer le programme. -On peut forcer le server à se connecter au démarrage. -On peut mettre lr programme en icone dans la barre des tâches. Il suffit de minimiser la fenêtre. -On peut faire créer à distance sur un site FTP une page web qui contient un lien vers le server. Par exemple, si votre IP n'est pas fixe (c'est le cas pour l'ADSL wanadoo standard par exemple), vous pouvez ouvrir un compte HTTP gratuit (par exemple chez Free ou IFrance). Après, il suffit de mettre dans la propriété "FTP file name" le nom d'un fichier du FTP de votre compte. Par exemple, si vous ouvrez un compte chez IFrance, il suffit d'utiliser le TFileSystemSaveDialog en cliquant sur "...", de mettre l'host FTP: "ftp.ifrance.com", votre login et votre mot de passe, puis ensuite d'utiliser la boite de dialogue comme celle standard de windows. ATTENTION parfois le programme ne fait rien pendant plusieurs secondes, ce n'est pas qu'il est bloqué, mais que le composant met parfois du temps à se connecter et est écrit pour fonctionner en mode "bloquant". -On peut gérer les Accounts pendant l'exécution. -Il y a un historique de ce qu'il se passe sur le server. -La console MS-DOS est maintenant en blanc sur fond noir. -Je crois que c'est tout!
  • signaler à un administrateur
    Commentaire de ZED le 01/11/2004 07:01:26

    C'est ce qu'on appelle du bon boulot. Felicitations!

    Le code est bien écrit dans les règles de l'art.
    Coté technique, cela me rappelle un peu IntraWeb qui utilise le même principe "Javascript coté Client & Delphi coté serveur", sauf que dans IntraWeb on a pensé au Designer aussi.

    Les wrappers de contrôles HTML sont enregistrés & implémentés du coté serveur, et le client (ici le browser) lui communique les évennements des differents composants via http: c'est comme ça que ça marche le web. Ton implémentation du principe est assez valable.

    Je n'ai pas eu le temps de tout lire, mais je dois dire que c'est tres lisible comme code. Etant donné que tu as déja expliqué à quoi ça sert, le comment du problème relève de l'esprit programmeur (enfin je pense).

    Re Bonne chance & Félicitations.

  • signaler à un administrateur
    Commentaire de costello le 01/11/2004 19:30:00

    Ce projet est-il destiné à la commercialisation ?
    Il semble être assez révolutionnaire !

  • signaler à un administrateur
    Commentaire de MoveX le 01/11/2004 20:06:24

    revolutionnaire?
    cest un peu le principe du webserver de emule !
    depuis le temps que je voulais faire ca, seulement j avais rien trouver a propos de la demarche a suivre pour recuperer les donnees dune page web a part en cgi...

  • signaler à un administrateur
    Commentaire de MoveX le 01/11/2004 20:11:35

    j ai oublie de dire bon boulot ! (meme si j ai pas vu le code ca se sent d ici...)

  • signaler à un administrateur
    Commentaire de JulioDelphi le 01/11/2004 20:13:29 administrateur CS

    hello

    pk mo firewall sp2 me demande si je veux laisser
    "Texture interfaces for Little psychedelic eye" de "LPTeam" aller sur le net ???????

    sinon je trouve ça super revolutionnaire c kler !!

  • signaler à un administrateur
    Commentaire de JulioDelphi le 01/11/2004 20:21:15 administrateur CS

    ha, rapport a ça ?
    http://www.delphifr.com/forum.v2.aspx?ID=155382

    c koi donc ? explike moi pk ya encore ces infos là ds ce projet

    merci

  • signaler à un administrateur
    Commentaire de Forman le 02/11/2004 05:57:11

    Lol

    pour les infos dans le projet, c'est parce qu'une fois je les avais mises en "default" dans Delphi alors que j'étais en train de bosser sur un autre projet...

    D'ailleurs cet autre projet s'appelle Little Psychedelic Eye, j'en ai parlé dans le forum sur:
    http://www.delphifr.com/forum.v2.aspx?ID=151808
    Lui est vraiment révolutionnaire, lol!

    Sinon, merci pour tous ces compliments et la note      [8=DX

    En fait, j'ai eu l'idée comme ça de faire ce server, à force d'oublier de lancer mes téléchargements sur Emule alors que je passais la soirée chez ma copine. A chaque fois je me disais, tiens ce serait cool si je pouvais lancer un programme sur mon ordi à distance!

    Dans tous les cas je n'ai jamais pensé à commercialiser ce projet, j'ai déjà un autre boulot, lol!

    Ceci dit, je ne savais pas que ça existait déjà comme concept. Au fait, ZED, c'est quoi IntraWeb?

  • signaler à un administrateur
    Commentaire de MoveX le 02/11/2004 11:26:59

    dans emule, tu as une option "webserver'", tu peux y avoir acces a partir dune page de internet explorer depuis nimporte quel pc relie au net en ne sachant que l ip de ton pc et le mot de passe...
    si tu l as pas sur ta version de emule, installes la nouvelle version..

  • signaler à un administrateur
    Commentaire de JulioDelphi le 02/11/2004 14:29:28 administrateur CS

    On est obligé de mettre le port 80 ? :/ je prefere mettre mon intranet sur ce port, et ma prise a distance sur le 8080 par exemple.
    possible de chnager ça ? je n'ai pas trouvé:)
    merci

  • signaler à un administrateur
    Commentaire de costello le 02/11/2004 18:59:08

    les fonctionnalités du Webserver d'emule ne sont pas aussi développées... et puis eMule n'est pas fait en Delphi, donc tu peux pas faire joujou avec (pas sous Delphi en tout cas)

  • signaler à un administrateur
    Commentaire de Caribensila le 03/11/2004 11:46:24

    Un peu complexe pour mon niveau ridiculement bas en Delphi  :s
    Mais je voudrais quand même tenter d'apporter une modeste contribution en espérant ne pas dire trop de conneries...
    Il me semble que le point faible est l'IP du PC. Il y a des chances pour que l'adresse change assez souvent, non? Et pas d'IP, pas ce connexion au PC...
    Je pense qu'il existe un moyen pour éviter un tel désagrément. C'est de recourir à un serveur de nom de domaine (DNS) et à son logiciel client pour toujours établir la corrélation entre l'IP dynamique et une adresse fixe.
    Services gratuits de noms de domaine:
    www.dyndns.org
    ou
    www.no-ip.com
    Je sais! Ca ne concerne pas Delphi, mais ca peut peut-être apporter un certain confort dans l'utilisation de cette application...

  • signaler à un administrateur
    Commentaire de JulioDelphi le 03/11/2004 11:54:44 administrateur CS

    j'ai une IP fixe :)

  • signaler à un administrateur
    Commentaire de Forman le 03/11/2004 13:40:29

    En fait j'ai pensé à une autre solution:
    Dans le package FileSystem, j'ai écrit un composant qui est le TFTPFileSystem, et qui permet de gére comme son nom l'indique un système de fichiers sur un FTP. Une solution toute simple serait:
    -Ouvrir un compte chez un hébergeur gratuit (par exemple Free ou IFrance)
    -Modifier le projet pour récupérer son adresse IP (il y a plein de façons de le faire qu'on peut trouver sur le Web)
    -Modifier le projet pour qu'à chaque fois que le server est lancé, un fichier HTML contenant un lien vers l'adresse IP soit uploadé sur le compte fixe créé précédemment.

    Ainsi, il suffira d'aller sur une page Web fixe pour avoir le lien vers son addresse IP. J'ai déjà utilisé cette technique pour un autre programme, je vais modifier le projet bientôt pour l'inclure.

    Pour pouvoir modifier le port du server, je crois que je vais modifier le composant THTTPDistantAccess pour le faire descendre de TCustomHTTPServer de Indy, pour qu'il soit plus facilemenht paramétrable, plutôt que de garder un THTTPServer en champ private et de mapper ses propriétés publiées.

  • signaler à un administrateur
    Commentaire de Caribensila le 03/11/2004 16:12:03

    Oui, j'avais aussi pensé à cette solution...
    Mais je craignais que la mise à jour de la page Web par l'hébergeur ne se fasse pas instantanément...
    Mais si tu as déjà utilisé cette technique, ça doit fonctionner.
    M'en vais essayer...
    Ca me plait car dans ce cas, tout est fait maison...  :)

  • signaler à un administrateur
    Commentaire de Caribensila le 03/11/2004 17:13:57

    Je ne voudrais pas être "lourd", Forman. Mais je suis moi-même confronté à ces problèmes d'IP instables en ce moment...  :D
    Plutôt que de balancé un fichier HTML... ne serait-ce pas plus facile de prévoir sur la page Web un formulaire avec un champ qui recevrait simplement l'IP codé, par exemple?
    Il y a des piges que je n'ai plus touché au HTML et je me demande si c'est faisable...

  • signaler à un administrateur
    Commentaire de JulioDelphi le 03/11/2004 17:33:02 administrateur CS

    via javascript je pense que oui ... a confirmer, via PHP 100% sûr :)

    ps : je suis au taf et j'utilise ce soft pour tester :)
    ps² : ça vaut pas un VNC mais ce soft par le port 80 ça pete :D

  • signaler à un administrateur
    Commentaire de JulioDelphi le 03/11/2004 17:53:34 administrateur CS

    tout comme la souris, est ce possible de taper du texte à distance ou appuyer sur des combinaisons de touche a distance ?
    je souhaite coder et faire "f9" et "ctrl+f9" a distance :) oui oui du delphi :p lol

  • signaler à un administrateur
    Commentaire de JulioDelphi le 03/11/2004 19:41:49 administrateur CS

    au fait : 10/10 et ça mérite un trophée, ya vraiment du gros boulot, des composants, du html, de la sécurité. de plus c'est innovant comme systeme ! longue vie et bonnes améliorations pour ce PCAS (http PC Acces Server : je le prononce "pé kass")

    ça me plairait de contribuer a son développement avec toi Foreman, que je t'aide sur cette source si ça te dit.

    mp moi :)

  • signaler à un administrateur
    Commentaire de Caribensila le 03/11/2004 19:45:10

    Pour ceux qui ont XP, y'a la solution de Bill.  lol

    La prise de contrôle à distance qui permet tout!!

    le hic: 'faut que la femme de ménage appuie sur OK pour autoriser la prise de contrôle... ou, mieux, un petit code qui détecte cet événement et y réponde automatiquement. ( Ca doit être faisable...  ;)
    Avantages: petit code et filtrage par mot de passe...
    Inconvénients: contrairement à l'application de Forman, c'est limité dans le temps, je pense...
    A explorer quand même, non?  ;)

  • signaler à un administrateur
    Commentaire de JulioDelphi le 03/11/2004 19:51:59 administrateur CS

    je prefere 1000 fois utiliser un prog made in freeware/open source, que un prog à billou... je sais pas si il spy qqchose ou koi alors non merci :p

  • signaler à un administrateur
    Commentaire de Forman le 04/11/2004 02:32:49

    Lol!

    Oui mais via HTTP on peut même le faire depuis Linux ou un Mac      {8=Dx

    Au fait pas de problème JulioDelphi, si tu as des idées d'ajouts, jusque là je suis allé le plus loin que je pouvais, j'ai des connaissances assez limitées en dehors de Delphi. Je ne connais pas PHP et pas grand chose sur les adresses IP ni le protocole HTTP.

    Au fait, je viens d'y penser, c'est vrai que mettre son IP en lien sur un site fixe ça peut être un peu comme un signal pour dire à tout le monde: "coucou, mon adresse IP est là, si vous voulez lancer une attaque contre mon ordi allez-y!"

    Dans ce cas, j'ai une solution qui utilise un système de cryptage par clef publique/clef privée:
    -il faut programmer l'algorythme de cryptage avec la clef publique en javascript sur la page de login.
    -Au moment où le client clique pour envoyer son password, le password est crypté par la clef publique grâce au code javascript avant d'être envoyé au server, qui le décrypte grâce à la clef privée qu'il a gardé en mémoire. Si il obtient le password correct du client, il le connecte, sinon on attend 3 secondes et on recommence.

    En plus, l'intérêt avec cette méthode est qu'on peut changer aléatoirement le couple de clefs à chaque session, ce qui augmente encore la sécurité, puisqu'à chaque déconnection l'ancien mot de passe qui circule sur le net ne peut plus être réutilisé (à vrai dire, c'est un peu la faille de sécurité la plus grave dans cette version: si quelqu'un espionne le mot de passe au niveau du réseau, il peut tout à fait se connecter avec).

    Quelqu'un connait quelque chose sur les connections HTTP sécurisées?

  • signaler à un administrateur
    Commentaire de Forman le 04/11/2004 02:48:06

    Au fait, c'est vrai qu'au départ je n'ai pas utilisé le truc de billy pour les même raisons que JulioDelphi. Et aussi parce que ma copine ne veut pas que j'installe de programmes sur son ordi, la pauvre en a marre de devoir formater tous les mois à cause de mes conneries, lol!

    Avec ce système on n'a pas besoin d'installer quoi que ce soit sur le client, à condition bien sûr qu'il ait un navigateur web javascript-friendly, mais on est quand même bientôt en 2005...

  • signaler à un administrateur
    Commentaire de Forman le 04/11/2004 03:00:32

    Ah oui, pour savoir quel bouton de la souris a été appuyé, c'est un peu galère. En fonction des navigateurs, on ne peut pas toujours il me semble. Une solution intermédiaire serait de mettre une combobox à côté de l'image qui, cochée, indique le boutton droit, sinon le gauche. Idem pour le double click.

    Pour les touches du clavier, le problème est le même. Cette fois-ci, je pense qu'une bonne solution est un TEdit avec à côté un boutton "Send" qui envoie le contenu d'un Edit comme une suite de touches alpha-numériques à appuyer. On peut aussi inclure 3 checkbox pour alt ctrl et shift, et un ensemble de bouttons pour les touches spéciales du clavier...

  • signaler à un administrateur
    Commentaire de JulioDelphi le 04/11/2004 10:35:16 administrateur CS

    ouiiiiiii j'ai exactement pensé à ça :D je me connecte justement pour te le dire lol
    Une liste déroulante contenant les clics de la souris (limitons nous deja au gauche + droit)
    puis un edit pour envoyer du texte (il envoie ce texte dans le controle cliké precedemment), puis les touches ctrl+alt+suprr c idem, des cases à cocher sont une bonne idée.
    Je propose d'autres ptite modif :
    - ajouter un Autorun (pour ne plus oublier de le lancer au demarrage)
    - ajouter la possibilité de fermer le programme à diatnce (en cas de doute sur qui est connecté sur le pc)
    - ajouter la possibilité de fermer la session windows / eteindre le pc quand j'ai fini ma prise à distance.

    pour le php, oui c facilement gérable, mais il faudrtait installer un server web qui "comprends" le php... ça devient moins bien. surtout ke avec le html, c faisable :D

    bon travail encore :) je réclame un trophée pour foreman

  • signaler à un administrateur
    Commentaire de JulioDelphi le 04/11/2004 10:53:04 administrateur CS

    OMG sublime mise a jour ! mais tu bosses dur :D c genial, je DL ça de suite et je test cet aprem au taf

  • signaler à un administrateur
    Commentaire de JulioDelphi le 04/11/2004 10:57:20 administrateur CS

    ps : qd à la compilation, delphi vous dit qu'iol ne trouve pas les .dcr ou dcu je c plus, il suffit de mettre en plus ds le "Library Path" le chemin de ces unités. Vous trouverez ce path ici :
    "Outils" > "Options d'envir." > "Biblio"
    voila

  • signaler à un administrateur
    Commentaire de JulioDelphi le 05/11/2004 01:07:28 administrateur CS

    2 bugs et 3 améliorations :

    1°bug) le port choisi n'est pas pris en compte, tu dois mettre sur le onclick du bouton "go online"
    [code]
    HTTPDistantPCAccess1DefaultPort:=StrToIntDef(Edit4.text,80);
    HTTPDistantPCAccess1.Active:=True;
    [/code]
    2°bug) "local test" ouvre une page sur "http://127.0.0.1" sans prise en compte du port choisi tu dois mettre :
    [code]
    ShellExecute(0,'OPEN',PChar(format('http://127.0.0.1:%d',[HTTPDistantPCAccess1DefaultPort])),nil,nil,SW_SHOWNORMAL);
    [/code]
    3°bug) Le server FTP ne m'as pas UP de fichier (bug ou pas je restesterais)

    1°amé.) nommer tes composants !!!! c'est un gros projet, nomme tes Edit1, Edit2, Edit3...
    2°amé.) Utilise des ptis composants TLed par exemple au lieu de charger des .BMP pour la ptite LED
    3°amé.) Utilise un TSpinEdit au lieu d'un edit avec un UpDown !!!!! tu eviteras kon puisse entrer des lettres ...

    voila Foreman :) si je fais des modifs, je t'uploaderais ma source :)

  • signaler à un administrateur
    Commentaire de JulioDelphi le 05/11/2004 01:09:05 administrateur CS

    a la place de
    HTTPDistantPCAccess1DefaultPort
    il faut lire
    HTTPDistantPCAccess1.DefaultPort

  • signaler à un administrateur
    Commentaire de JulioDelphi le 05/11/2004 01:11:30 administrateur CS

    4°amé.) crypter les pass ? :) dis moi OK et je te le fais :D

  • signaler à un administrateur
    Commentaire de JulioDelphi le 05/11/2004 01:15:37 administrateur CS

    5°amé.) a la place de :
        Edit2.Text:=f.ReadString('Accounts','Account'+IntToStr(a)+'.UserName','');
        Edit3.Text:=f.ReadString('Accounts','Account'+IntToStr(a)+'.PassWord','');

    faire :

        Edit2.Text:=f.ReadString('Accounts',format('Account%d.UserName',[a]),'');
        Edit3.Text:=Edit2.Text;

    sans oublier ensuite de NOMMER TES COMPOOOOOOOS :D

  • signaler à un administrateur
    Commentaire de JulioDelphi le 05/11/2004 01:18:00 administrateur CS

    oups

    LIRE :

    5°amé.) a la place de :
        Edit2.Text:=f.ReadString('Accounts','Account'+IntToStr(a)+'.UserName','');
        Edit3.Text:=f.ReadString('Accounts','Account'+IntToStr(a)+'.PassWord','');

    faire :

        Edit2.Text:=f.ReadString('Accounts',format('Account%d.UserName',[a]),'');
    Edit2.Text:=f.ReadString('Accounts',format('Account%d.PassWord',[a]),'');

    dsl :) il est tard