Як я можу надати CGI-скрипту дозвіл на доступ до календаря?


3

Коли я запускаю свій скрипт із командного рядка, я можу використовувати - насправді запропоновано використовувати - Системні налаштування, щоб додати, ssh-keygen-wrapperщоб мати право доступу до календаря.

Але коли я запускаю скрипт як програму CGI, він не має права доступу до календаря - він працює як nobodyі не працює - і я не знаю, як надати потрібний дозвіл сценарію, викликаному CGI.

Питання пов'язане навіть з тим, чи варто мені надавати nobodyдоступ до календаря ... але це окрема проблема.

[FYI]
macOS High Sierra Python CGI скрипт за допомогою AppleScript для читання подій календаря

Відповіді:


2

Користувач "Ніхто" не інтерактивний і не має календарів. Вам потрібно буде мати якийсь компонент (можливо, інший користувальницький додаток / процес) під час доставки інформації про календар.

У вас дійсно є два варіанти, один з яких дуже поганий.

По-перше, ви можете запускати сценарії CGI як і ви. Це не важко, але супер небезпечно і не рекомендується.

По-друге, ви можете побудувати те, що по суті є проксі-сервером календаря. Це може бути інша програма (працює як ви), яка коли-небудь п’ять хвилин зчитує дані календаря і записує їх у файл, який ніхто, обліковий запис, не може прочитати. Ви вже, здається, знайомі і працюєте чудово з календарями, тому це не повинно бути проблемою, це просто інший сценарій, який ви плануєте за допомогою cron.

Інша річ, хоча я справді не впевнений, чи спрацює це ні для кого, - це те, що ти можеш запустити sudo su nobodyта потім запустити. Оскільки OSX знає, що PTTY приєднаний до вашого користувацького сеансу, він відобразить підказку для прийняття. Хоча ви все одно не зможете отримати доступ до своїх календарів користувачів, цей трюк корисний, якщо вам доведеться використовувати такі види дозволів як root, для яких також немає графічного сеансу.


1

Звичайно @Sirens вказує на очевидний недолік мого підходу. Я використовував AppleScript як простий спосіб отримати доступ до календарів, доступних у командному рядку користувача, до якого я ввійшов, але, звичайно, нікому не був доступний .

Я з вдячністю розглянув відповідь @ Siren і погодився з ним, що мій підхід був в основному невідомий, і вирішення проблеми було або занадто небезпечним, або недоброзичливим, щоб розглянути можливість подальшого пошуку.

Я сподіваюсь, що це є відповіддю - корисним для всіх, хто також сприйняв цей помилковий поворот - оскільки, очевидно, слід дотримуватися кращої інформації з використанням наявних бібліотек Python для створення сценарію CGI, де я (і ніхто ) не можу явно надати Календаря облікові дані клієнта незалежно від користувача або машини, що виконує сценарій.

Я використовував caldav як доказ концепції, але виявив кілька питань, роблячи це, тому зараз дивлюся на CalDAVClientLibrary Apple, який виглядає трохи більш вичерпним.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.