Я пишу программу на Objective-C (Xcode 3.2, на Snow Leopard), которая способна либо выборочно блокировать определенные сайты на длительность, либо разрешать только определенные сайты (и, таким образом, блокировать все остальные) на длительность. Обоснование этой программы довольно простое. Я склонен отвлекаться, когда у меня есть полный доступ к Интернету, но мне нужен доступ к Интернету в рабочее время, чтобы попасть на ряд сайтов, связанных с работой. Ясно, что это не постоянный блок, а только помогает мне сосредоточиться, когда я обнаруживаю, что слишком много брожу.
В настоящее время я использую сценарий Unix, который вызывается через AppleScript для получения разрешений администратора. Затем он активирует ряд правил ipfw и очищает их через определенное время для восстановления полного доступа в Интернет. Простой и эффективный, но, поскольку я работаю как обычный пользователь, вводить пароль администратора каждый раз, когда я хочу перейти в автономный режим, становится неудобно. Кроме того, это отличная возможность научиться работать с XCode и Objective-C. На данный момент все работает как положено, за исключением фактической блокировки. Я могу добавить несколько сайтов в список, указать, хочу ли я блокировать или разрешить эти сайты, и я могу «начать» блокировку, указав время, до которого я хочу оставаться «в автономном режиме».
Однако мне трудно получить четкую информацию о том, как я могу запустить привилегированную команду Unix из Objective-C. В идеале я хотел бы иметь возможность хранить информацию об учетной записи администратора в связке ключей, чтобы использовать ее позже, чтобы я мог просто перейти в «автономный» режим с удобством нажатия кнопки. Более того, в Objective-C может существовать некоторый класс, с помощью которого я могу заблокировать доступ к некоторым / всем веб-сайтам для этого конкретного пользователя без необходимости полагаться на привилегированные команды Unix. Третья возможность заключается в запуске этой программы с правами root и уменьшением разрешений до тех пор, пока они мне не понадобятся, но, поскольку это приложение с графическим интерфейсом, которое вложено в строку меню OS X, результаты довольно неудобны и заставляют его запускать каждый и каждый раз с правами суперпользователя задача не из легких.
Кто-нибудь, кто может предложить мне несколько советов или советов? Пожалуйста, никаких предупреждений безопасности, я полностью осознаю, что то, что я хочу сделать, - это потенциальная угроза безопасности.