Nastavení serveru¶
Je možné změnit Open Web Calendar pro vlastní potřeby. Můžete si vybrat
- Změnit jak vypadá základní kalendář.
- Změnit nastavení serveru.
Nastavení základního kalendáře¶
Konfigurace všech kalendářů vychází z [default_specification.yml]. Všechny tyto hodnoty mohou být změněny skrze kopii tohoto souboru na hostovaném webu skrze parametr kalendáře specification_url
. Každý parametr by měl být zdokumentován v [default_specification.yml].
Chcete-li upravit všechny kalendáře hostované na vaší instanci, použijte proměnnou prostředí OWC_SPECIFICATION. Kalendáře stále přepíšou některé hodnoty pro jejich konfiguraci. Ty, které nejsou přepsány jsou ovlivněny výchozí specifikací. Ne všechny hodnoty jsou dostupné na stránce konfigurace. Tyto hodnoty lze změnit v specification_url
a pomocí parametrů požadavků.
Můžete změnit následující hodnoty.
title
¶
Název Vašeho webu.
language
¶
Toto je výchozí jazyk. Pro lepší zpřístupnění konfigurační stránky místním uživatelům lze změnit.
favicon
¶
Zde je odkaz na ikonu webu.
source_code
¶
Pokud jste provedli změny, jste ze zákona povinni je sdělit návštěvníkům. Prosím, upravte odkaz, nebo je přispějte zpět do hlavního projektu.
contributing
¶
Pokud chcete přesměrovat na příspěvek pro Váš projekt.
privacy_policy
¶
Pokud službu hostujete sami, můžete použít výchozí zásady ochrany osobních údajů.
Pokud z nějakého důvodu se rozhodnete shromažďovat data, tj. v HTTPS proxy nebo uchovávat IP adresy, musíte vytvořit vlastní zásady ochrany osobních údajů. Můžete odkazovat na jeden z těchto projektů.
Více hodnot¶
Je plno velké množství které lze změnit. Postupujte podle default_specification. Tyto hodnoty jsou všechny zdokumentovány. Používejte proměnnou prostředí OWC_SPECIFICATION pro jejich změnu.
Viz také:
Konfigurace serveru¶
Proměnné prostředí ovlivňují pouze chod serveru. Tyto proměnné prostředí mohou být použity pro konfiguraci služby:
ALLOWED_HOSTS¶
default empty
Klienti, oddělení čárkami, kteří mají přístup k Open Web Calendar. Tento text uvidíte, pokud se pokusíte získat přístup k službě a nejste oprávněni:
Forbidden: You don’t have the permission to access the requested resource. It is either read-protected or not readable by the server.*
Příklady:
- povolit pouze stejný počítač:
ALLOWED_HOSTS=localhost
- povolit několik hostitelů:
ALLOWED_HOSTS=192.168.0.1,192.168.2,api.myserver.com
- povolit každému přístup k serveru (výchozí):
ALLOWED_HOSTS=
neboALLOWED_HOSTS=*
Tato funkce je poskytována flask-allowed-hosts.
PORT¶
default 5000
, default 80
v Docker kontejneru
Port, na kterém služba běží.
Příklady:
- Poskytovat na HTTP portu:
PORT=80
OWC_SPECIFICATION¶
OWC_SPECIFICATION
je volitelná proměnná prostředí.
- Může být cesta do souboru obsahující platné YAML nebo JSON.
- Může to být string obsahující platné YAML nebo JSON.
Nastavení OWC_SPECIFICATION
umožňuje nahradit výchozí hodnoty pro všechny kalendáře.
Poznámka
Nové verze Open Web Calendar mohou přidávat nové konfigurační parametry. Uvedení změn v této proměnné namísto změny souboru default_specification
zajistí, že v budoucí verzi bude Open Web Calendar funkční.
V následujícím příkladu se změní název pro všechny kalendáře, které nemají svůj vlastní titul.
OWC_SPECIFICATION='{"title": "calendar"}' gunicorn open_web_calendar:app
Viz také:
WORKERS¶
default 4
, pouze pro Docker kontejner
Počet paralelních procesů pro zpracování požadavků.
Příklady:
- Použít pouze jeden proces:
WORKERS=1
CACHE_REQUESTED_URLS_FOR_SECONDS¶
default 600
Kolik sekund jsou v cache kalendáře stažené soubory, pro snížení šířky pásma a zpoždění.
Příklady:
- Rychle obnovit:
CACHE_REQUESTED_URLS_FOR_SECONDS=10
APP_DEBUG¶
default false
, hodnoty true
nebo false
, vždy false
v Docker kontejneru
Nastavte přepínač ladění pro aplikaci.
OWC_ENCRYPTION_KEYS¶
default empty
Jedná se o čárkou oddělený seznam šifrovacích klíčů. To lze použít k skrytí citlivé informace v URL.
Příklady:
- Zakázat šifrování (výchozí):
OWC_ENCRYPTION_KEYS=
- Použít jeden klíč:
OWC_ENCRYPTION_KEYS='Pj...48='
- Použít více klíčů:
OWC_ENCRYPTION_KEYS='Pj...48=,cx...Fw='
Pokud používáte více klíčů, pouze první zašifruje data. Ostatní se používají pouze k dešifrování dat.
Můžete vygenerovat nový klíč navštívením své instance Open Web Calendar na stránce /new-key nebo spuštěním tohoto příkazu:
python3 -m open_web_calendar.new_key
Viz také:
Další konfigurace¶
Open Web Calendar využívá knihovny, jejichž chování lze hlouběji přizpůsobit.
- Flask má **více proměnných prostředí ** k dispozici pro konfiguraci, jak aplikace poskytuje obsah.
- Requests se používá pro získání
.ics
souborů. Můžete konfigurovat proxy.
Open Web Calendar se spoléhá na proxy servery pro tyto funkce:
- ** Řízení přístupu a uživatelé** Chcete-li omezit, kdo může použít Open Web Calendar, můžete použít
nginx
neboapache
jako reverzní proxy. YuNoHost je další volba vlastního hostingu pro omezení přístupu. - ** HTTPS Šifrování** To lze zavést pomocí
nginx
,apache
nebocaddy
. - Pokročilý caching Základní caching je spravován v rámci Open Web Calendar. Pro pokročilou konfiguraci cache použijte proxy server jako
squid
. Podívejte se na dokumentaci níže, jak vytvořit Open Web Calendar s přístupem na web pouze prostřednictvím proxy. - Omezení přístupu k kalendářům Ve výchozím nastavení Open Web Calendar neomezuje, které kalendáře jsou zobrazeny. Použijte proxy server pro filtrování kalendářů. Pokud spustíte Open Web Calendar přes firewall s jinými webovými službami, nastavení proxy je nutné pro chranu před útoky SSRF.
Ochrana SSRF s proxy serverem¶
Open Web Calendar lze použít pro přístup k místní síti za firewallem, viz Issue 250. Tento volný přístup je určen pro zobrazení kalendáře odevšad. Vzhledem k tomu, že je použit requests
v Open Web Calendar, může být proxy použita, jak je popsáno v requests
dokumentaci. Proxy může potom provést filtrování.
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"
Viz také:
Squid jako proxy server¶
Squid Proxy a cache je flexibilní a konfigurovatelný. Můžete jej použít s Open Web Calendar pro konfiguraci přístupu a přizpůsobení cachingu.
Operační systém
Squid je dostupný pro všechny hlavní platformy. Pro příkazy a cesty tohoto návodu předpokládáme, že Squid běží na Debain/Ubuntu. Příkazy mohou pracovat na jiných systémech, ale to není testováno.
Poté, co jste nainstalovali Squid proxy, přidejte tento soubor do adresáře conf.d
. Squid jej automaticky načte.
V Linuxu vytvořte /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
Seznam výše odpírá Open Web Calendar přístup ke všem známým lokálním/interním sítím. Pokud máte vlastní lokální síť (IPv4 nebo IPv6), přidejte jej do seznamu výše.
Na Linuxu můžete nainstalovat soubor tímto příkazem:
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
Poté restartujte squid proxy.
sudo service squid reload
Nastavte proměnné prostředí, které donutí Open Web Calendar použít Squid proxy nainstalováno na localhost
. Nastavení této proměnné se mění v závislosti na tom, jak provozujete Open Web Calendar.
Pokud používáte Python nastavení, můžete nastavit proměnné prostředí pro server následně:
export HTTP_PROXY="http://localhost:3128"
export HTTPS_PROXY="http://localhost:3128"
export ALL_PROXY="http://localhost:3128"
gunicorn open_web_calendar:app
Když se pokusíte přistupovat k zakázanému kalendáře s lokálním open-web-calendar
, např., http://172.16.0.1/calendar.ics
, uvidíte tuto chybovou zprávu:
403 Client Error: Forbidden for url: http://172.16.0.1/calendar.ics