Как заставить брандмауэр Mac OS X навсегда разрешить мое приложение для iOS?
Я пишу приложение iOS, которое действует, в частности, как сервер telnet. Естественно, он начинает прослушивать соединения, как только он начнется.
Когда я запускаю приложение в Simulator, Mac OS X (я оказался на 10.7.3) предлагает мне разрешить или запретить моему приложению принимать входящие сетевые подключения. Это стандартное сообщение брандмауэра, которое Mac OS X использует для всех неподписанных сетевых приложений.
Я устал от нажатия "Разрешить" пятьдесят или несколько раз в день, поэтому я ищу способ постоянно добавлять свое приложение в список разрешенных приложений брандмауэра.
Я пробовал следующее.
- Откройте Activity Monitor во время работы моего приложения.
- Выберите мое приложение. Нажмите "Осмотреть".
- Перейдите на вкладку "Открыть файлы и порты". Одна из первых строк - это точный путь к моему приложению. Скопируйте и вставьте этот путь.
- Откройте брандмауэр... Дополнительные настройки.
- Нажмите кнопку + (добавить).
- Перейдите к пути к программе и выберите его, добавив его в список приложений, для которых разрешены входящие подключения.
На последнем этапе есть важное решение. Вы можете добавить либо пакет приложения .app, либо Show Contents в этом пакете, либо добавить исполняемый файл Unix внутри. Я пробовал оба подхода.
Интересно, что брандмауэр на самом деле перестанет предупреждать вас о приложении на некоторое время. Однако после нескольких прогонов мне не ясно, какое событие на самом деле вызывает это изменение, но это происходит через полчаса или около того для меня, в общем случае - брандмауэр снова начинает предупреждать о приложении.
Как настроить брандмауэр навсегда Разрешить мое приложение iOS?
Естественно, я мог обойти эту проблему, отключив брандмауэр Mac OS X. Я также мог бы избежать того, чтобы снова получить осколок в моей ноге, отрубив его. Ни один из этих курсов действий не рекомендует мне.
Что бы вы предложили?
Ответы
Ответ 1
После долгих размышлений я обнаружил, что вручную добавление самого исполняемого файла в список "Разрешить" брандмауэра дает желаемый результат. Вы не добавляете .app, а скорее исполняемый файл Unix внутри папки .app Contents. Я полагал, что пробовал этот файл раньше, но в настоящее время он работает.
Ответ 2
Итак, мы хотим отменить следующий диалог
Вы хотите, чтобы приложение "NNN.app" принимало входящую сеть соединения?
которые появляются при каждой активации симулятора Xcode iOS.
Я считаю, что сейчас есть решение для этого. Основываясь на моем ответе на этот блог.
Просто запустите следующие команды в окне терминала:
#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
Для меня это сработало. Обратите внимание, что адрес симулятора соответствует Xcode 8.
Ответ 3
Я думаю, лучшим решением может быть script процесс одобрения вашего приложения в брандмауэре.
Если я правильно помню, последний брандмауэр OSX на самом деле умный, чтобы определить приложения и отпечатки пальцев разрешенных двоичных файлов. Это предотвращает неожиданно эффективную тактику, просто называя вашу вредоносную программу "system32.exe" & c для избежания брандмауэра. Если это так, ваше приложение будет (правильно) заблокировано для того, чтобы не быть тем же самым двоичным файлом, который был одобрен, и на самом деле его нет.
Итак, попробуйте выполнить скриптовый брандмауэр, разрешив процесс и включив его в процесс сборки.
Ответ 4
Мне никогда не удавалось вручную добавлять исполняемый файл в разрешенный список брандмауэра. Здесь решение с использованием автоматизированного щелчка мыши :
- Загрузите CLIclick. (Спасибо, Карстен.)
- Поместите его в подходящее место, скажем
/usr/local/bin
.
- Получить координаты экрана кнопки
Allow
, используя ⌘ ⇧ 4. (В моем примере это x: 750, y: 600.)
-
Создайте script с этим контентом (w:
- время ожидания в мс):
/usr/local/bin/cliclick c:750,600 w:1500 m:+0,+0 c:.
(я не мог заставить CLIclick
работать без "перемещения" его в одно и то же место (часть m:+0,+0
) и снова щелкнуть в том же месте с помощью c:.
.)
- Откройте Xcode
Preferences / Behaviors
и добавьте выше script.
![enter image description here]()
- Наслаждайтесь!
Ответ 5
Я не знаю, правильно ли это, но для меня это работало.
- Отключите брандмауэр
- Соединитесь с приложением iphone с вашим mac
- Проверьте, работает ли все в работе
- Включите брандмауэр