Перейти до змісту

Конфігурація сервера

Якщо ви хочете змінити відкритий веб-календар відповідно до своїх потреб, це цілком можливо. Ви можете вибрати

  • Змінити вигляд календаря за замовчуванням.
  • Змінити роботу сервера.

Налаштування календаря за замовчуванням

Конфігурація всіх календарів базується на default_specification. Усі ці значення можна змінити за допомогою копії цього файлу, розміщеного в Інтернеті за допомогою параметра календаря specification_url. Кожен параметр має бути задокументований у default_specification.

Щоб змінити усі календарі, розміщені у вашому екземплярі, використовуйте змінну середовища OWC_SPECIFICATION. Календарі все ще замінюють деякі значення для їх конфігурації. На ті, які вони не перевизначають, впливає специфікація за замовчуванням. Не всі значення відображаються на сторінці конфігурації, яку потрібно змінити. Ці значення можна змінити в specification_url і параметрах запиту.

Ви можете змінити наступні значення.

title

Назва вашого сайту.

language

Це мова за умовчанням. Ви можете змінити це, щоб сторінка конфігурації була кращою для місцевої аудиторії.

favicon

Це посилання на значок веб-сайту.

source_code

Якщо ви внесли зміни, ви зобов’язані повідомити про них відвідувачам за законом. Відкоригуйте посилання або поверніть їх до основного проекту.

contributing

Якщо ви хочете перенаправити свій внесок у свій проект.

privacy_policy

Якщо ви самостійно розміщуєте цю службу, ви можете використовувати стандартну політику конфіденційності.

Якщо з якоїсь причини ви вирішите збирати дані, наприклад, у HTTPS-проксі або реєструвати IP-адреси, вам потрібно створити власну політику конфіденційності. Ви можете посилатися на один із цього проекту.

Більше цінностей

Є ще багато значень, які можна змінити. Будь ласка, зверніться до default_specification. Усі ці значення задокументовані. Щоб змінити їх, використовуйте змінну середовища OWC_SPECIFICATION.

Дивіться також:

Налаштування Сервера

Змінні середовища впливають лише на роботу сервера. Ці змінні середовища можна використовувати для налаштування служби:

ALLOWED_HOSTS

за замовчуванням порожній

Клієнти, розділені комами, яким дозволено доступ до відкритого веб-календаря. Ви побачите цей текст, якщо спробуєте отримати доступ до служби, але вам заборонено:

Forbidden: You don’t have the permission to access the requested resource. It is either read-protected or not readable by the server.*

Приклади:

  • дозволяти лише той самий комп’ютер: ALLOWED_HOSTS=localhost
  • дозволити декілька хостів: ALLOWED_HOSTS=192.168.0.1,192.168.2,api.myserver.com
  • дозволити всім доступ до сервера (за замовчуванням): ALLOWED_HOSTS= або ALLOWED_HOSTS=*

Цю функцію надає flask-allowed-hosts.

PORT

за замовчуванням 5000, за замовчуванням 80 в контейнері Docker

Порт, на якому працює служба.

Приклади:

  • Обслуговувати через порт HTTP: PORT=80

OWC_SPECIFICATION

OWC_SPECIFICATION – необов’язкова змінна середовища.

  • Це може бути шлях до файлу, що містить дійсний YAML або JSON.
  • Це може бути рядок, що містить дійсний YAML або JSON.

Налаштування OWC_SPECIFICATION дозволяє замінити значення за замовчуванням для всіх календарів.

Примітка

Нові версії Open Web Calendar можуть додавати нові параметри конфігурації. Внесення змін до цієї змінної замість зміни файлу default_specification гарантує, що ви не порушите відкритий веб-календар у майбутній версії.

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

OWC_SPECIFICATION='{"title": "calendar"}' gunicorn open_web_calendar:app

Дивіться також:

WORKERS

за замовчуванням 4, лише для контейнера Docker

Кількість паралельних працівників для обробки запитів.

Приклади:

  • Використовуйте лише один робочий файл: WORKERS=1

CACHE_REQUESTED_URLS_FOR_SECONDS

за замовчуванням 600

Секунди для кешування файлів календаря, які завантажуються, щоб зменшити пропускну здатність і затримку.

Приклади:

  • Швидке оновлення: CACHE_REQUESTED_URLS_FOR_SECONDS=10

APP_DEBUG

за замовчуванням false, значення true або false, завжди false у контейнері Docker

Установіть прапор налагодження для програми.

OWC_ENCRYPTION_KEYS

за замовчуванням порожній

Це розділений комами список ключів шифрування. Їх можна використовувати, щоб приховати конфіденційну інформацію URL-адрес.

Приклади:

  • Вимкнути шифрування (за замовчуванням): OWC_ENCRYPTION_KEYS=
  • Використовуйте один ключ: OWC_ENCRYPTION_KEYS='Pj...48='
  • Використовуйте кілька ключів: OWC_ENCRYPTION_KEYS='Pj...48=,cx...Fw=' Якщо ви використовуєте кілька ключів, лише перший з них шифрує дані. Інші використовуються лише для розшифровки даних.

Ви можете створити новий ключ, відвідавши свій екземпляр Open Web Calendar на сторінці /new-key або виконавши цю команду:

python3 -m open_web_calendar.new_key

Дивіться також:

  • [Фернет]

Подальша конфігурація

Відкритий веб-календар використовує бібліотеки, поведінку яких можна додатково налаштувати.

Відкритий веб-календар покладається на проксі-сервери для таких функцій:

  • Контроль доступу та користувачі Щоб обмежити, хто може використовувати відкритий веб-календар, ви можете використовувати nginx або apache як зворотний проксі перед ним. YuNoHost — ще один варіант самостійного розміщення для обмеження доступу.
  • Шифрування HTTPS Це можна зробити за допомогою nginx, apache або caddy.
  • Більш розширене кешування Базове кешування обробляється Open Web Calendar. Для більш розширеної конфігурації кешу використовуйте проксі-сервер, наприклад squid. Перегляньте наведену нижче документацію про те, як зробити відкритий веб-календар доступом до Інтернету лише через проксі.
  • Обмеження доступу до календарів За замовчуванням відкритий веб-календар не обмежує, які календарі показувати. Використовуйте проксі-сервер для фільтрації календарів. Якщо ви запускаєте Open Web Calendar за брандмауером разом з іншими веб-службами, для захисту від атак SSRF необхідно налаштувати проксі-сервер.

Захист SSRF за допомогою проксі-сервера

Відкритий веб-календар можна використовувати для доступу до локальної мережі за брандмауером, див. Випуск 250. Цей вільний доступ призначений для показу календарів звідусіль. Оскільки Відкритий веб-календар використовує requests, він може використовувати проксі-сервер, як описано у документації requests. Проксі може виконувати фільтрацію.

export HTTP_PROXY="http://10.10.1.10:3128"
export HTTPS_PROXY="http://10.10.1.10:1080"
export ALL_PROXY="socks5://10.10.1.10:3434"

Дивіться також:

Squid як проксі-сервер

Проксі та кеш Squid є гнучкими та налаштовуються. Ви можете використовувати його перед відкритим веб-календарем, щоб налаштувати доступ і налаштувати кешування.

Операційна система

Squid доступний для всіх основних платформ. Для команд і шляхів у цьому посібнику ми припускаємо, що ви запускаєте Squid на Debain/Ubuntu. Команди можуть працювати в інших системах, але це не перевірено.

Після встановлення проксі-сервера Squid додайте цей файл до каталогу conf.d. Тоді Squid автоматично завантажить його.

У Linux створіть /etc/squid/conf.d/open-web-calendar.conf:

## Example rule to deny access to your local networks.
## Adapt to list your (internal) IP networks from where browsing
## should be allowed
acl owc_forbidden dst 0.0.0.1-0.255.255.255  # RFC 1122 "this" network (LAN)
acl owc_forbidden dst 10.0.0.0/8             # RFC 1918 local private network (LAN)
acl owc_forbidden dst 100.64.0.0/10          # RFC 6598 shared address space (CGN)
acl owc_forbidden dst 169.254.0.0/16         # RFC 3927 link-local (directly plugged) machines
acl owc_forbidden dst 172.16.0.0/12          # RFC 1918 local private network (LAN)
acl owc_forbidden dst 192.168.0.0/16         # RFC 1918 local private network (LAN)
acl owc_forbidden dst fc00::/7               # RFC 4193 local private network range
acl owc_forbidden dst fe80::/10              # RFC 4291 link-local (directly plugged) machines

## If the Open Web Calendar runs on another machine, not localhost (127.0.0.1),
## fill in the network or IP of that machine here and allow access from it.
acl owc_host src 127.0.0.1           # Allow Access to Squid from localhost (default)
# acl owc_host src 172.16.0.0/12     # Uncomment if you run the Open Web Calendar as a docker service

## Access from owc_host is allowed to all but forbidden networks
http_access allow owc_host !owc_forbidden

## Use IPv4 for DNS
## See https://superuser.com/a/1443889
dns_v4_first on

Наведений вище список забороняє Open Web Calendar доступ до всіх відомих локальних/внутрішніх мереж. Якщо у вас є власна локальна мережа (IPv4 або IPv6), додайте її до списку вище, щоб переконатися.

У Linux ви можете встановити файл за допомогою цієї команди:

sudo wget -O /etc/squid/conf.d/open-web-calendar.conf https://raw.githubusercontent.com/niccokunzmann/open-web-calendar/master/docs/snippets/squid/open-web-calendar.conf

Потім перезапустіть проксі squid.

sudo service squid reload

Встановіть змінні середовища, щоб вказати Open Web Calendar використовувати проксі-сервер Squid, встановлений на localhost. Налаштування цієї змінної змінюється залежно від того, як ви запускаєте Open Web Calendar.

Якщо ви використовуєте Python Setup, ви можете встановити змінні середовища для сервера таким чином:

export HTTP_PROXY="http://localhost:3128"
export HTTPS_PROXY="http://localhost:3128"
export ALL_PROXY="http://localhost:3128"
gunicorn open_web_calendar:app

Коли ви намагаєтеся отримати доступ до забороненого календаря за допомогою локального open-web-calendar, e.q. http://172.16.0.1/calendar.ics, ви побачите таке повідомлення про помилку:

403 Помилка клієнта: заборонено для url: http://172.16.0.1/calendar.ics