web-dev-qa-db-fra.com

Client VNC basé sur le Web?

Je développe actuellement une application Web qui comporte une partie dans laquelle je dois ouvrir une machine spécifique via VNC pour surveiller son ordinateur.

Je suis obligé d'avoir un client VNC basé sur le Web, ce qui signifie qu'il ne doit pas installer de serveur ni aucun autre fichier côté client. Le client ouvre simplement le navigateur Web et insère l'adresse IP de la machine ciblée dans le navigateur. Il exécute ainsi un client VNC basé sur le Web.

Quelles sont les bonnes ressources pour se lancer dans ce domaine?

MISE À JOUR 2013-10-29

Juste FYI: à l'époque, j'ai fini par utiliser guacamole comme @Dolph le recommandait.
C'était:

  • très facile à mettre en place
  • très facile à suivre son code et à le désosser (tant que vous connaissez Java)
  • il est encore utilisé dans l'entreprise pour laquelle je travaillais et est robuste
31
shadesco

Découvrez le projet Guacamole :

Guacamole est une passerelle de bureau à distance sans client. Il supporte les protocoles standard tels que VNC et RDP. Nous l’appelons (clientless) car aucun plugin ou logiciel client n’est requis. Grâce à HTML5, une fois Guacamole installé sur un serveur, un navigateur Web suffit pour accéder à vos ordinateurs de bureau.

En revanche, il faut un serveur Java pour pouvoir utiliser un proxy. Cependant, cela devrait être trivial, même si vous n'avez pas déjà de serveur Java opérationnel (Tomcat est assez simple, et les instructions de Guacamole sont simples):

Le guacamole est séparé en deux parties: guacamole-server, qui fournit le proxy guacd et les bibliothèques associées, et guacamole-client, qui fournit le client à servir par votre conteneur de servlets, généralement Tomcat .

guacamole-client est disponible sous forme binaire, mais guacamole-server doit être construit à partir du source. Ne vous découragez pas: la compilation des composants de Guacamole à partir de la source n’est pas aussi difficile que cela en a l'air, et le processus de construction est automatisé. Vous devez simplement vous assurer que vous avez les outils nécessaires installés à l'avance. Avec les dépendances nécessaires en place, la construction de Guacamole ne prend que quelques minutes.

24
Dolph

Il existe différentes solutions, mais aucune d’elles ne permettra à une application Web 100% standard (c’est-à-dire sans Flash, Java ou ActiveX) de se connecter directement à un serveur VNC 100% standard. Le plus gros problème est que les navigateurs Web ne peuvent pas établir de connexions simples TCP. La chose la plus proche est la norme incomplète WebSockets, mais même cela est un protocole encadré qui a une poignée de main semblable à HTTP pour l'initier.

Même si les programmes Adobe Flash peuvent établir des connexions simples TCP, ils exigent néanmoins que le serveur auquel vous vous connectez répond avec un fichier de stratégie sur le port 843 ou sur le port auquel vous vous connectez ( http: // code. google.com/p/doctype/wiki/ArticleFlashSecurity ).

Comme il a été noté, Guacamole nécessite un proxy Java pour communiquer entre son interface HTML5 et le serveur VNC. 

Une autre option est noVNC ( github ), qui dispose d’une implémentation client VNC complète en Javascript/HTML5 (contrairement à Guacamole où le protocole VNC est dans le proxy). Cependant, noVNC est toujours limité par le fait que Javascript ne peut pas établir de connexions simples TCP. noVNC utilise WebSockets pour se connecter au serveur. noVNC inclut un pont générique WebSockets vers TCP que vous pouvez exécuter sur le serveur (ou le client, par ailleurs) et il n'a aucune dépendance supplémentaire à installer.

Update: QEMU, PocketVNC et les projets dérivés de LibVNCServer prennent désormais en charge le serveur WebSocket intégré, de sorte que le pont websockify n'est pas nécessaire pour se connecter à noVNC. De plus, j'ai oublié de noter comme avertissement que j'ai créé noVNC.

14
kanaka

essayez PeerVNC, c’est un client vnc basé sur le Web et un proxy de support pour n’importe quel serveur VNC existant.

https://github.com/InstantWebP2P/peer-vnc

4
user1861979

Essayez tightVNC.com. La dernière fois que je l'ai utilisé, vous pouvez simplement le pointer sur l'IP de la machine et l'utiliser dans votre navigateur.

4
Rob

Vous allez peut-être approcher avec cette solution - http://www.onlinevnc.com ? Autant que je sache, ils ont résolu le problème de la sécurité Flash lorsque Flash ne peut pas établir de connexion directe avec le port VNC TCP/IP . J'ai également vu sur leur site Web leur offre d'intégrer le lecteur dans un autre site Web ou une autre application.

1
JohnA

Outre la réponse de Dolph, il existe this , un applet Java permettant de se connecter aux serveurs VNC.

0
Jason Miesionczek