2009-05-08 10 views
12

J'ai un fichier swf qui se connecte à un serveur flash distant et reçoit des données. Pour des raisons de sécurité, je ne peux pas rendre ce fichier SWF accessible sur Internet, donc je ne peux pas utiliser le navigateur pour l'exécuter. Est-il possible de l'exécuter côté serveur à partir d'une invite de commande (sous Linux)?Comment exécuter SWF sans navigateur (sur un serveur Linux)?

+0

J'aimerais vraiment savoir si quelqu'un connaît une façon de faire cela, aussi! J'ai besoin de me connecter fréquemment à partir du serveur et un navigateur ne sera jamais une option - le serveur n'a pas d'interface graphique et il devrait être exécuté à partir de cron. – JAL

Répondre

9

Vous pouvez utiliser Xvfb ou Xfake pour exécuter un serveur X qui ne s'interface pas avec le matériel réel. Si elles ne sont pas disponibles en tant que packages pour votre distribution, vous pouvez les générer à partir des sources de Xorg xserver.

(Ou utiliser la suggestion de MarkR Xvnc.)

Le plugin Adobe utilisé pour envoyer avec un exécutable autonome nommé flashplayer ou gflashplayer, qui était utilisable en dehors du navigateur. Je pense que ça existe toujours, mais c'est dans le paquet développeur, ou quelque chose comme ça.Si vous utilisez une implémentation gratuite de Flash, Gnash et Swfdec sont livrés avec des exécutables autonomes gnash et swfdec respectivement.

Cela commence Xvfb sur l'écran: 20 (il suffit de choisir un nombre qui n'est pas en cours d'utilisation, les écrans normaux commencent à :0, le transfert de X ssh attribue généralement :10 et, et je l'ai vu quelques Xvnc configurations commencent à :90), et fonctionne gnash à l'intérieur de celui-ci:

startx /usr/bin/gnash http://url.to/flash.swf -- /usr/bin/Xvfb :20 
1

Vous pouvez rendre le site Web SWF accessible et protéger le répertoire à l'aide des fichiers .htaccess. Pour plus d'informations, voir Apache .htaccess Tutorial pour plus d'informations.

Vous pouvez également essayer ffplay (ffplay -fs somefile.swf) pour exécuter le swf. Edité: On dirait que ffplay utilise SDL, donc X peut ne pas être nécessaire.

Mais je ne pense pas que cela serait installé sur votre serveur. YMMV

Mise à jour: Ne laissez pas l'interface utilisateur non vous empêcher de faire ce que vous pouvez faire, si vous utilisez SSH, regardez cet article pour exporter votre affichage X vers votre poste de travail local. Trying to tunnel X over SSH

+0

Je vais essayer ffplay, merci. Je veux le rendre inaccessible pour empêcher le téléchargement de ce swf, donc protéger le dossier http n'est pas une option (les utilisateurs doivent avoir accès à ce dossier de toute façon car ils ont besoin de données). – serg

1

Adobe Air?

Le principal problème est l'invite de commande, pas "l'accessibilité Web". Si vous pouvez exécuter FireFox, je suis sûr que vous pouvez charger le fichier par le chemin du système de fichiers. Je serais vraiment surpris s'il était possible d'exécuter des trucs SWF sur la ligne de commande. Je veux dire, pas que ce n'est pas possible en principe, c'est juste que le point de SWF est généralement en affichant des ordures clignotantes et sautantes, donc personne ne dérange d'écrire des outils en ligne de commande pour l'exécuter ...

PS. Je suppose que vous êtes conscient du fait que vous pouvez exécuter FireFox sur un serveur Linux, n'est-ce pas? (Le truc X Windows entier?)

+0

C'est un serveur web linux. Il n'y a pas d'interface graphique. – serg

1

Vous pouvez facilement (ish) écrire un programme C qui implémente l'interface du plugin netscape pour interfacer directement avec Flash. Ça marcherait. Cependant, il faudrait probablement toujours un serveur X pour cela - vous pourriez utiliser XVnc ou quelque chose pour exécuter sans tête.

Nontrivial, mais fonctionnerait. Votre exigence semble un peu étrange - peut-être que ce serait une conception plus facile à gérer pour réécrire le composant Flash dans une autre langue.

1

Ichabod d'Adobe résoudrait probablement votre problème, mais je n'arrive pas à trouver d'informations, que ce soit disponible pour la consommation publique, ou seulement pour les fournisseurs de recherche. Juste une chambre d'écho d'articles comme un sur ReadWriteWeb.

2

Si vous utilisez ubuntu, tapez sudo apt-get install xvfb, puis télécharger le Flash Player d'Adobe, et juste essayer comme ça, ça marche bien:

xvfb-run ./flashplayer test.swf 

Ou si vous utilisez Windows, vous pouvez simplement double-cliquer sur le swf sur le serveur, et il fonctionne maintenant, communique avec un autre serveur, utilisez simplement ce swf en tant que serveur, calculez la valeur et retournez, Comme c'est un serveur

0

La meilleure façon est d'installer "Macromedia Flash Player MX" via Wine .. Il va installer Macromedia MX avec "Macromedia Flash Player" .. Maintenant, allez dans votre fichier SWF et changez son application par défaut pour "Macromedia Flash Player" (pas Macromedia MX)

Questions connexes