Перейти к содержанию

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

Если вы хотите изменить открытый веб-календарь для удовлетворения ваших потребностей, это вполне возможно. Вы можете выбрать

  • Изменить как выглядит календарь по умолчанию.
  • Изменить как работает сервер.

Настройка календаря по умолчанию

Конфигурация всех календарей основана на 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 использует библиотеки поведение которых может быть дополнительно настроено.

Открытый 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