Estoy escribiendo una aplicación de iOS que actúa como, entre otras cosas, un server de telnet. Naturalmente, comienza a escuchar conexiones tan pronto como comienza.
Cuando ejecuto la aplicación en el simulador, Mac OS X (que sucede en 10.7.3) me pide Permitir o Denegar mi aplicación para aceptar las conexiones de networking entrantes. Este es el post estándar de Firewall que Mac OS X usa para todas las aplicaciones en networking sin firmar.
Me hago cansado de hacer clic en "Permitir" cincount o más veces al día, así que busco una forma de agregar mi aplicación de forma permanente a la list de aplicaciones permitidas del Firewall.
He probado lo siguiente.
En el último paso hay una decisión importante. Puede agregar el package de aplicación .app o Mostrar contenido en ese package y agregar el "ejecutable Unix" dentro. He intentado ambos enfoques.
Curiosamente, Firewall de hecho dejará de avisarle sobre la aplicación, por un time. Sin embargo, después de algunas ejecuciones, no está claro para mí qué evento realmente provoca este cambio, pero sucede dentro de media hora o más para mí, en términos generales, Firewall comienza a advertir nuevamente sobre la aplicación.
¿Cómo configuro Firewall para Permitir permanentemente mi aplicación iOS?
Naturalmente, podría evitar este problema al deshabilitar el firewall de Mac OS X. También podría evitar volver a recibir una astilla en mi pie cortándola. Ninguno de estos cursos de acción se me recomienda.
¿Qué sugieres?
Después de incursionar en esto durante algún time, descubrí que agregar el ejecutable manualmente a la list "Permitir" del Firewall da el resultado deseado. No agrega la .app, sino el ejecutable "Unix" dentro de la carpeta Contenido de la aplicación. Creía haber probado este file antes sin éxito, pero actualmente está funcionando.
Entonces queremos suprimir el siguiente cuadro de dialog
¿Desea que la aplicación "NNN.app" acepte las conexiones de networking entrantes?
que aparecen en cada activación del simulador Xcode iOS . Creo que ahora hay una solución para eso. Basando mi respuesta en este blog.
Simplemente ejecute los siguientes commands en una window 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
Para mi funcionó Tenga en count que la dirección del simulador está de acuerdo con Xcode 8.
Creo que la mejor solución podría ser guiar el process de aprobar tu aplicación en el firewall.
Si recuerdo bien, el último cortafuegos de OSX es realmente inteligente para identificar aplicaciones y huellas dactilares de los binarys permitidos. Esto evita la táctica sorprendentemente efectiva de nombrar su malware "system32.exe" & c para evadir el firewall. Si ese es el caso, su aplicación se bloqueará (correctamente) por no ser el mismo binary que se aceptó, y no hay realmente ninguna forma de evitarlo.
Por lo tanto, intente crear un script que permita el process de firewall e incorpórelo al process de compilation.
Nunca tuve suerte con agregar manualmente el ejecutable a la list permitida del firewall. Aquí hay una solución con un clic automático del mouse :
/usr/local/bin
. Allow
usando ⌘ ⇧ 4 . (En mi ejemplo, estos son x: 750, y: 600.) Cree un script con este contenido ( w:
es el time de espera en ms):
/usr/local/bin/cliclick c:750,600 w:1500 m:+0,+0 c:.
(No pude hacer que CLIclick
funcione sin "moverlo" a la misma location (la parte m:+0,+0
) y hacer clic nuevamente en el mismo punto con c:.
.)
Preferences / Behaviors
Xcode y añada el script anterior. No sé si es la forma correcta pero para mí funcionó.