2012-03-23 10 views
25

Sto scrivendo un'app per iOS che funge, tra le altre cose, da un server telnet. Naturalmente, inizia ad ascoltare le connessioni non appena inizia.Come faccio a consentire a Mac OS X Firewall di consentire in modo permanente la mia app iOS?

Quando eseguo l'app nel simulatore, Mac OS X (mi capita di essere in 10.7.3) mi chiede di consentire o negare alla mia applicazione di accettare le connessioni di rete in entrata. Questo è il messaggio standard del firewall che Mac OS X utilizza per tutte le applicazioni di rete senza segno.

Mi stanco di fare clic su "Consenti" cinquanta o più volte al giorno, quindi cerco un modo per aggiungere in modo permanente la mia app all'elenco di app consentite del firewall.

Ho provato quanto segue.

  1. Aprire Activity Monitor mentre la mia app è in esecuzione.
  2. Seleziona la mia app. Fai clic su "Ispeziona".
  3. Passare alla scheda Apri file e porte. Una delle prime linee è il percorso preciso della mia app. Copia e incolla questo percorso.
  4. Apri il firewall ... Impostazioni avanzate.
  5. Fare clic sul pulsante + (aggiungi).
  6. Individuare il percorso dell'applicazione e selezionarlo, quindi aggiungerlo all'elenco delle applicazioni per le quali sono consentite le connessioni in entrata.

Nell'ultimo passaggio c'è una decisione significativa. È possibile aggiungere il pacchetto dell'applicazione .app oppure Mostra contenuto su quel pacchetto e aggiungere "Eseguibile Unix" all'interno. Ho provato entrambi gli approcci.

È interessante notare che, in effetti, il firewall non ti avviserà più dell'app-per un po '. Tuttavia, dopo alcune sessioni, non mi è chiaro quale evento causi effettivamente questa modifica, ma in genere entro mezz'ora per me, in generale, il firewall inizia nuovamente a segnalare l'app.

Come impostare il firewall su Consenti la mia app iOS?

Naturalmente, potrei aggirare questo problema disabilitando il firewall di Mac OS X. Potrei anche evitare di ottenere di nuovo una scheggia nel mio piede tagliandola via. Nessuno di questi corsi d'azione si raccomanda a me stesso.

Che cosa suggeriresti?

+0

Hai provato ad aggiungere il ** simulatore ** all'elenco che consente le connessioni in entrata? – lnafziger

+1

Firma l'app :) – EricM

+0

@lnafziger: L'aggiunta del simulatore non funziona. L'app si esaurisce. – vocaro

risposta

12

Dopo essermi dilungato con questo per un po 'di tempo, ho scoperto che aggiungere manualmente l'eseguibile stesso all'elenco "Consenti" del firewall fornisce il risultato desiderato. Non si aggiunge la .app, ma piuttosto l'eseguibile "Unix" all'interno della cartella Contents di .app.Credevo di aver provato questo file prima senza successo, ma al momento funziona.

+3

Mi chiedo cos'altro hai fatto per farlo funzionare, perché questa soluzione non funziona per me: - \ – Brian

3

Penso che la soluzione migliore potrebbe essere quella di eseguire il processo di approvazione della tua app sul firewall.

Se ricordo correttamente, l'ultimo firewall OSX è in realtà intelligente sull'identificazione di app e impronte digitali dei binari consentiti. Ciò impedisce la tattica sorprendentemente efficace di nominare il proprio malware "system32.exe" & c per eludere il firewall. Se questo è il caso, la tua app sarà (correttamente) bloccata per non essere lo stesso binario che è andato bene, e non c'è davvero alcun modo per aggirarlo.

Quindi, provare a eseguire lo scripting del firewall consentendo il processo e incorporarlo nel processo di creazione.

+2

+1 per sorprendentemente efficace – nycynik

+0

@blahdiblah Non credo sia possibile copiarlo. Il firewall non offre una libreria AppleScript, né uno script di shell sarebbe utile. – OldPeculier

1

Non ho mai avuto la fortuna di aggiungere manualmente l'eseguibile all'elenco dei permessi del firewall. Ecco una soluzione con un solo clic del mouse automatizzato:

  1. Scarica CLIclick. (Grazie, Carsten.)
  2. Posizionalo in un luogo adatto, ad esempio /usr/local/bin.
  3. ottenere le coordinate dello schermo del pulsante Allow utilizzando . (Nel mio esempio, questi sono x: 750, Y: 600)
  4. Creare uno script con questo contenuto (il w: è il tempo di attesa in ms):

    /usr/local/bin/cliclick c:750,600 w:1500 m:+0,+0 c:. 
    

    (non ho potuto ottenere CLIclick di lavorare senza "in movimento" è nella stessa posizione (la parte m:+0,+0) e cliccando di nuovo nello stesso punto con c:..) di

  5. Aprire Xcode Preferences/Behaviors e aggiungere lo script di cui sopra. enter image description here
  6. Divertiti!
+0

Questa è la soluzione più complicata che abbia mai visto per una regola del firewall. Ammiro la tua tenacia, ma questo è un altro duro colpo per il mio piacere di OSX ... – trojjer

-1

Non so se è la strada giusta ma per me ha funzionato.

  1. disattivare il firewall
  2. Collegare con l'applicazione iPhone al Mac
  3. controllare se tutto nella connessione di lavoro
  4. attivare il firewall
12

quindi vogliamo sopprimere la seguente finestra di dialogo

Volete l'applicazione "NNN. app "per accettare le connessioni in entrata ?

che appaiono su ogni attivazione del simulatore Xcode IOS. Credo che ora ci sia una soluzione per questo. Basando la mia risposta sul blog this.

sufficiente eseguire i seguenti comandi in una finestra di terminale:

#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 

Per me ha funzionato. L'indirizzo del simulatore è conforme a Xcode 8.

+0

Grazie a @ishahak, mi ha aiutato. Ancora strano, Apple non si fida del proprio software nel firewall. – Ivan

+0

Questo ha funzionato per me quando l'aggiunta manuale dell'eseguibile (Electron, nel mio caso) al pannello Security & Firewall no. – zigg

+1

Ho dovuto eseguire questi comandi ogni volta che ho effettuato l'accesso al mio Mac. Così ho finito per usare Lingon X (www.peterborgapps.com/lingon) per eseguire questi comandi da uno script di shell all'accesso come root, quindi rimosso il prefisso "sudo" dalla prima e dall'ultima riga dello script. – lifjoy

Problemi correlati