Конфігурація сервера¶
Якщо ви хочете змінити відкритий веб-календар відповідно до своїх потреб, це цілком можливо. Ви можете вибрати
- Змінити вигляд календаря за замовчуванням.
- Змінити роботу сервера.
Налаштування календаря за замовчуванням¶
Конфігурація всіх календарів базується на 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
Дивіться також:
- [Фернет]
Подальша конфігурація¶
Відкритий веб-календар використовує бібліотеки, поведінку яких можна додатково налаштувати.
- Flask має більше змінних середовища, щоб налаштувати, як програма обслуговує вміст.
- Запити використовуються для отримання файлів
.ics
. Ви можете налаштувати проксі.
Відкритий веб-календар покладається на проксі-сервери для таких функцій:
- Контроль доступу та користувачі Щоб обмежити, хто може використовувати відкритий веб-календар, ви можете використовувати
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