J'écris une application iOS qui agit, entre autres choses, un serveur Telnet. Naturellement, il commence à écouter les connexions dès qu'il commence.
Lorsque j'exécute l'application dans le simulateur, Mac OS X (je suis sur 10.7.3) m'inquiète d'autoriser ou de refuser mon application d'accepter des connexions réseau entrantes. Il s'agit du message de pare-feu standard que Mac OS X utilise pour toutes les applications non signées et en réseau.
Je grandis fatigué de cliquer sur cinquante fois ou plus par jour, et je recherche donc un moyen d'ajouter de manière permanente mon application à la liste des applications autorisées du pare-feu.
J'ai essayé ce qui suit.
Au cours de la dernière étape, il y a une décision importante. Vous pouvez ajouter le package d'applications .app ou afficher le contenu de ce package et ajouter le "exécutable UNIX" dans. J'ai essayé les deux approches.
Fait intéressant, le pare-feu arrêtera en fait de vous avertir à propos de l'application - pendant un moment. après quelques courses, cependant, ce n'est pas clair pour moi quoi L'événement provoque réellement ce changement, mais cela se produit dans une demi-heure ou donc pour moi, en général, le pare-feu commence à avertir à nouveau sur l'application.
Comment définir le pare-feu pour autoriser définitivement mon application iOS?
Naturellement, je pourrais contourner tout ce problème en désactivant le pare-feu Mac OS X. Je pourrais aussi éviter de nouveau en train de retrouver un éclaté dans le pied en coupant-le. Ni l'un ni l'autre des actions ne se recommandent de me recommander.
Que suggérerais-tu?
Nous voulons donc supprimer la boîte de dialogue suivante
Voulez-vous que l'application "nnn.app" accepte des connexions réseau entrantes?
qui apparaissent sur chaque activation du simulateur IOS XCode . Je crois qu'il y a maintenant une solution pour cela. Baser ma réponse sur Ceci Blog.
Exécutez simplement les commandes suivantes dans une fenêtre de terminal:
#temporarily shut firewall off:
Sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off
#put Xcode as an exception:
/usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/Xcode.app/Contents/MacOS/Xcode
#put iOS Simulator as an exception:
/usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator
#re-enable firewall:
Sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on
Pour moi ça a fonctionné. Veuillez noter que l'adresse du simulateur est en fonction de Xcode 8.
Je pense que la meilleure solution pourrait être de scripter le processus d'accord de votre application au pare-feu.
Si je vous souviens bien, le dernier pare-feu OSX est vraiment intelligent sur l'identification des applications et des empreintes digitales des fichiers binaires autorisés. Cela empêche la tactique étonnamment efficace de simplement nommer votre logiciel malveillant "system32.exe" et c pour échapper au pare-feu. Si tel est le cas, votre application sera (correctement) bloquée pour ne pas être le même binaire qui était accepté, et il n'y a pas vraiment de route.
Essayez donc de scripter du processus d'autorisation de pare-feu et d'incorporer cela dans le processus de construction.
Je n'ai jamais eu de chance avec l'ajout manuellement l'exécutable à la liste autorisée du pare-feu. Voici une solution à l'aide d'un clic automatisé de souris :
/usr/local/bin
.Allow
utilise ⌘⇧4. (Dans mon exemple, ceux-ci sont X: 750, Y: 600.)Créez un script avec ce contenu (le w:
est le temps d'attente dans la SP):
/usr/local/bin/cliclick c:750,600 w:1500 m:+0,+0 c:.
(Je n'ai pas pu obtenir CLIclick
pour travailler sans "bouger" vers le même endroit (le m:+0,+0
partie) et en cliquant à nouveau au même endroit avec c:.
.)
Preferences / Behaviors
et ajouter le script ci-dessus.