Конфигурация сервера¶
Если вы хотите изменить открытый веб-календарь для удовлетворения ваших потребностей, это вполне возможно. Вы можете выбрать
- Изменить как выглядит календарь по умолчанию.
- Изменить как работает сервер.
Настройка календаря по умолчанию¶
Конфигурация всех календарей основана на default_specification. Все эти значения можно изменить, скопировав этот файл в веб-версии с помощью параметра календаря specification_url
. Каждый параметр должен быть задокументирован в default_specification.
Чтобы изменить все календари, размещённые на вашем экземпляре, используйте переменную среды OWC_SPECIFICATION. Календари по-прежнему переопределяют некоторые значения своей конфигурации. Те, которые они не переопределяют, попадают под действие спецификации по умолчанию. Не все значения доступны для изменения на странице конфигурации. Эти значения по-прежнему можно изменить в specification_url
и параметрах запроса.
Возможно, вам захочется изменить следующие значения.
title
¶
Название вашего сайта.
language
¶
Это язык по умолчанию. Вы можете изменить его, чтобы лучше обслуживать страницу конфигурации для местной аудитории.
favicon
¶
Это ссылка на значок сайта.
source_code
¶
Если вы внесли изменения, вы обязаны по закону раскрыть их посетителям. Пожалуйста, исправьте ссылку или верните их в основной проект.
contributing
¶
Если вы хотите перенаправить пользователя для участия в вашем проекте.
privacy_policy
¶
Если вы размещаете этот сервис самостоятельно, вы можете использовать политику конфиденциальности по умолчанию. Вы можете сослаться на политику конфиденциальности этого проекта.
Если по какой-либо причине вы решили собирать данные, например, через HTTPS-прокси или регистрировать IP-адреса, вам необходимо создать собственную политику конфиденциальности.
Дополнительные значения¶
Существует множество других значений, которые можно изменить. См. default_specification. Все эти значения документированы. Для их изменения используйте переменную окружения OWC_SPECIFICATION.
See also:
Настройка сервера¶
Переменные окружения влияют только на работу сервера. Такие переменные окружения можно использовать для настройки службы:
ALLOWED_HOSTS¶
по умолчанию пустой
Перечень клиентов, разделённых запятой, которым разрешён доступ к Open Web Calendar. Вы увидите этот текст, если попытаетесь получить доступ к сервису, но вам это не разрешено:
Forbidden: You don’t have the permission to access the requested resource. It is either read-protected or not readable by the server.*
Examples:
- разрешить доступ только к одному компьютеру:
ALLOWED_HOSTS=localhost
- разрешить доступ нескольким хостам:
ALLOWED_HOSTS=192.168.0.1,192.168.2,api.myserver.com
- разрешить всем доступ к серверу (по умолчанию):
ALLOWED_HOSTS=
илиALLOWED_HOSTS=*
Эта функциональность предоставляется flask-allowed-hosts.
APP_DEBUG¶
по умолчанию false
, значения true
или false
, всегда false
в контейнере Docker
Включить режим отладки для приложения.
CACHE_DIRECTORY¶
по умолчанию — временный каталог (например, /tmp/
)
Open Web Calendar кэширует файлы, необходимые для отображения календарей, в этом каталоге для ускорения загрузки. Если каталог не существует, он будет создан.
CACHE_FILE_SIZE¶
по умолчанию 20
(МБ)
Это максимальный размер одного файла в кэше. Когда кэш заполнен, наименее недавно используемый файл удаляется.
Examples:
- Разрешить только небольшие файлы размером 4 КБ:
CACHE_FILE_SIZE=0.004
- Разрешить любой размер:
CACHE_FILE_SIZE="$CACHE_SIZE"
- Отключить кэширование:
CACHE_FILE_SIZE=0
CACHE_SIZE¶
по умолчанию 200
(МБ)
Это максимальный размер кэша в мегабайтах. Этот размер ограничен 200 МБ, чтобы предотвратить заполнение кэшем файловой системы или, в случае /tmp/
, оперативной памяти.
Examples:
- Использовать 1 ГБ для кэширования:
CACHE_SIZE=1024
- Неограниченный кэш:
CACHE_SIZE=unlimited
- Отключить кэширование:
CACHE_SIZE=0
Быстрое обновление: CACHE_REQUESTED_URLS_FOR_SECONDS=10
¶
по умолчанию 600
(секунд)
Секунд для кеширования календарных файлов которые скачиваются, чтобы уменьшить сетевой поток и задержку.
Examples:
- Быстрое обновление:
CACHE_REQUESTED_URLS_FOR_SECONDS=10
- Отключить кэширование:
CACHE_REQUESTED_URLS_FOR_SECONDS=0
OWC_ENCRYPTION_KEYS¶
по умолчанию пустой
Это список ключей шифрования, разделенных запятыми. Их можно использовать для сокрытия конфиденциальной информации URL-адресов.
Examples:
- Отключить шифрование (по умолчанию):
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
See also:
OWC_SPECIFICATION¶
OWC_SPECIFICATION
— необязательная переменная окружения.
- Это может быть путь к файлу, содержащему корректный YAML или JSON.
- Это может быть строка, содержащая корректный YAML или JSON.
Настройка OWC_SPECIFICATION
позволяет заменить значения по умолчанию для всех календарей.
Note
New versions of the Open Web Calendar can add new configuration parameters.
Placing your changes in this variable instead of changing the default_specification
file
will ensure that you do not break the Open Web Calendar in a future version.
В следующем примере будут изменены заголовки всех календарей, у которых нет собственных заголовков.
OWC_SPECIFICATION='{"title": "calendar"}' gunicorn open_web_calendar:app
See also:
ПОРТ¶
по умолчанию 5000
, по умолчанию 80
в контейнере Docker
Порт на котором работает служба.
Examples:
- Обслуживать через порт HTTP:
PORT=80
РАБОТНИКИ¶
по умолчанию 4
, только для контейнера Docker
Количество параллельных обработчиков для запросов.
Examples:
- Использовать только один обработчик:
WORKERS=1
Further Configuration¶
Open Web Calendar использует библиотеки поведение которых может быть дополнительно настроено.
- Flask имеет больше переменных окружения доступных для настройки того как приложение раздаёт содержимое.
- Requests используются для получения файлов
.ics
. Вы можете настроить прокси.
Открытый Web Calendar использует прокси-серверы для следующих функций:
- Управление доступом и пользователи Чтобы ограничить доступ к Open Web Calendar, вы можете использовать
nginx
илиapache
в качестве обратного прокси-сервера перед ним. YuNoHost — ещё один вариант самостоятельного размещения для ограничения доступа. - HTTPS-шифрование. Это можно реализовать с помощью
nginx
,apache
илиcaddy
. - Более продвинутое кэширование. Базовое кэширование осуществляется Open Web Calendar. Для более продвинутой настройки кэша используйте прокси-сервер, например
squid
. Ознакомьтесь с документацией ниже, чтобы узнать, как настроить Open Web Calendar для доступа к веб-ресурсам только через прокси-сервер. - Ограничение доступа к календарям. По умолчанию Open Web Calendar не ограничивает отображаемые календари. Используйте прокси-сервер для фильтрации календарей. Если Open Web Calendar работает за брандмауэром с другими веб-сервисами, необходимо настроить прокси-сервер для защиты от SSRF-атак.
Защита SSRF с помощью прокси-сервера¶
Open Web Calendar можно использовать для доступа к локальной сети за брандмауэром, см. Проблема 250. Этот бесплатный доступ предназначен для отображения календарей из любой точки мира. Поскольку requests
используется Open Web Calendar, он может использовать прокси-сервер, как описано в документации 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"
See also:
Squid как прокси-сервер¶
The Squid Proxy and Cache is flexible and configurable. You can use it in front of the Open Web Calendar to configure access and customize caching.
Операционная система
Squid доступен для всех основных платформ. Для команд и путей этого руководства, мы предполагаем, что вы используете Squid на Debain/Ubuntu. Команды могут работать на других системах, но это не тестируется.
After you have installed the Squid Proxy, add this file into the conf.d
directory. Squid will load it automatically then.
В 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
The list above denies the Open Web Calendar access to all known local/internal networks. If you have your own local network (IPv4 or IPv6), add it to the list above to be sure.
On Linux, you can install the file with this command:
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
Then, restart the squid proxy.
sudo service squid reload
Set the environment variables to tell the Open Web Calendar to use the Squid proxy installed on localhost
. Setting this variable changes depending on how you run the Open Web Calendar.
If you use the Python Setup, you can set the environment variables for the server like this:
export HTTP_PROXY="http://localhost:3128"
export HTTPS_PROXY="http://localhost:3128"
export ALL_PROXY="http://localhost:3128"
gunicorn open_web_calendar:app
When you try to access a forbidden calendar with the local open-web-calendar
, e.q. http://172.16.0.1/calendar.ics
, you will see this error message:
403 Client Error: Forbidden for url: http://172.16.0.1/calendar.ics