Envoi de la stratégie interdomaines à clignoter via le nœud js sur une connexion TLS

J’ai un client qui est en flash as3. J’ai 2 serveurs, un principal pour le client flash et un serveur de stratégie de socket.

J’exécute le serveur de stratégie de socket sur le port 843 et mon client sur un port X par exemple.

Maintenant, quand je me connecte avec mon client flash, en utilisant ceci:

Security.loadPolicyFile("xmlsocket://domain.com:port"); SecureSocket.connect(ip, port); 

En fait, il se connecte d’abord à mon serveur de socket de stratégie, envoie une ligne de requête de fichier de stratégie et reçoit celui que j’envoie à l’aide de mon serveur, qui ressemble à ceci:

  tls.createServer(options, function(sock) { sock.on('data', function(data) { console.log('Data receveid: '.cyan + data + ' from ' + sock.remoteAddress); if (data == "\0") { sock.write('</cross-domain-policy console.log('Sent policy file to: '.green + sock.remoteAddress); } ... 

Après cela, la connexion est fermée automatiquement. Ensuite, il essaie de se connecter à mon vrai serveur et envoie à nouveau au serveur la ligne de demande de fichier de règles puis ferme la connexion. Je ne sais vraiment pas quoi faire à partir de maintenant ive a essayé tous les jours et la recherche sur le web. Quelqu’un a une idée de ce qui me manque?

Ok je l’ai finalement obtenu au travail. Tout d’abord, je voulais une connexion SSL de mon client à mon jeu.

  • L’essayer localement dans l’IDE Flash était bien,
  • Cependant, le faire dans le flash debugguer ou à partir d’un site Web ne fonctionnait pas car il tentait d’accéder à un serveur de stratégie de socket (qui est un port enregistré auprès d’Adobe, le port 843).

J’ai donc besoin d’un serveur de socket de stratégie pour travailler sur ce port et j’en ai trouvé sur le site Web d’Adobe écrit en python et en perl. Oublie-les, ils ne fonctionneront pas dans ce cas.

Parce que j’essaie d’accéder au serveur en SSL, j’ai donc besoin d’un serveur de règles SSL.
Comme il n’y en a pas sur le net, j’en ai écrit un simple:

 var tls = require('tls'); var fs = require('fs'); var options = { key: fs.readFileSync('/etc/ssl/private/yourserver.key'), cert: fs.readFileSync('/etc/ssl/certs/yourserver.crt'), }; var HOST = 'YOURSERVERIP'; var PORT = 843; tls.createServer(options, function(sock) { sock.on('data', function(data) { console.log('Policy Server Request: ' + data); if (data.indexOf('policy') !== -1) { console.log("Policy Server: sending regulation file"); sock.write('\0'); } else { console.log("Policy Server: unknown request"); } }); sock.on('clientError', function(exception) { console.log('' + data); }); sock.on('close', function(data) { console.log('CONNECTION CLOSED: ' + sock.remoteAddress +' '+ sock.remotePort); }); sock.on('error', function(err) { console.log('\n' + HOST +':'+ err); }); }).listen(PORT, HOST); console.log('\nPolicy Server listening on ' + HOST +':'+ PORT); 

Je suis devenu fou sous la forme permettre le domaine d’access parce que j’avais une violation de sécurité sandbox avec un réduit, donc ive le dit tout. Je vais nettoyer cela plus tard.

Comme vous pouvez le constater, j’ai dû append un \0 à la fin de l’envoi de la stratégie, sinon Flash ne l’accepterait pas .

Deux jours perdus à ce sujet. Et je ne comprends toujours pas pourquoi Adobe créerait un lien si difficile entre Flash et le monde. Jamais vu ce genre de politique ailleurs lors de la programmation de sockets.