Konfiguracija servera¶
Ako želiš prilagoditi „Otvoreni web kalendar” tvojim potrebama, možeš
- Promijeni zadani izgled kalendara.
- Promijeniti način rada servera.
Konfiguriranje zadanog kalendara¶
Konfiguracija svih kalendara temelji se na zadana_specifikacija. Sve te vrijednosti mogu se promijeniti putem kopije ove datoteke koja se nalazi na webu putem parametra kalendara specification_url
. Svaki parametar treba biti dokumentiran u [zadanoj_specifikaciji].
Za mijenjanje svih kalendara koji se nalaze na tvojoj instanci, koristi varijablu okruženja [OWC_SPECIFICATION]. Kalendari i dalje nadjačavaju neke vrijednosti za svoju konfiguraciju. Na one koje ne nadjačavaju utječe zadana specifikacija. Na stranici za konfiguraciju se ne prikazuju sve vrijednosti za mijenjenje. Te se vrijednosti i dalje mogu mijenjati u specification_url
i parametrima upita.
Možda ćeš htjeti promijeniti sljedeće vrijednosti.
title
¶
Naslov tvoje web stranice.
language
¶
Ovo je zadani jezik. Ovo možeš promijeniti kako bi lokalna publika bolje koristila stranicu konfiguracije.
favicon
¶
Ovo je poveznica na ikonu web stranice.
source_code
¶
Ako si napravio/la promjene, po zakonu moraš posjetitelje o tome obavijestiti. Prilagodi poveznicu ili ih vrati natrag u glavni projekt.
contributing
¶
Ako želiš preusmjeriti za doprinešenje tvom projektu.
privacy_policy
¶
Ako hostiraš ovu uslugu, može koristiti zadani dokument za [pravila privatnosti][privacy-policy].
Ako iz nekog razloga odlučiš prikupljati podatke, npr. putem HTTPS proxyja ili zapisivati IP adrese, tada moraš izraditi vlastitu politiku privatnosti. Možeš se povezati na politiku privatnosti ovog projekta.
Više vrijednosti¶
Postoji još mnogo vrijednosti koje se mogu promijeniti. Pogledaj datoteku zadana_specifikacija. Sve su ove vrijednosti dokumentirane. Za mijenjanje vrijednosti koristi varijablu okruženja [OWC_SPECIFICATION].
Također pogledaj:
Konfiguriranje servera¶
Varijable okruženja utječu samo na pokretanje servera. Ove varijable okruženja se mogu koristiti za konfiguriranje usluge:
ALLOWED_HOSTS¶
zadana vrijednost je prazna
Zarezima odvojeni klijenti koji smiju pristupiti otvorenom web kalendaru. Vidjet ćeš ovaj tekst ako pokušaš pristupiti usluzi kada ti nije dozvoljeno:
Forbidden: You don’t have the permission to access the requested resource. It is either read-protected or not readable by the server.*
Primjeri:
- dozvoli samo isto računalo:
ALLOWED_HOSTS=localhost
- dozvoli nekolicini servera:
ALLOWED_HOSTS=192.168.0.1,192.168.2,api.myserver.com
- dozvoli svima pristup serveru (zadano):
ALLOWED_HOSTS=
iliALLOWED_HOSTS=*
Ovu funkcionalnost pruža flask-allowed-hosts.
APP_DEBUG¶
zadano false
, vrijednosti true
ili false
, uvijek false
u Docker kontejneru
Postavi oznaku za otklanjanje grešaka za aplikaciju.
CACHE_DIRECTORY¶
zadana vrijednost je privremeni direktorij (npr. u /tmp/
)
Otvoreni web kalendar sprema datoteke potrebne za prikaz kalendara u ovom direktoriju radi ubrzavanja učitavanja. Ako direktorij ne postoji on će se kreiran stvoriti.
CACHE_FILE_SIZE¶
zadano 20
(MB)
Ovo je maksimalna veličina jedne datoteke u predmemoriji. Kada se predmemorija napuni, uklanja se datoteka koja se najdulje nije koristila.
Primjeri:
- Dozvoli samo male datoteke od 4 KB:
CACHE_FILE_SIZE=0.004
- Dozvoli bilo koju veličinu:
CACHE_FILE_SIZE="$CACHE_SIZE"
- Deaktiviraj spremanje u predmemoriju:
CACHE_FILE_SIZE=0
CACHE_SIZE¶
zadano 200
(MB)
Ovo je maksimalna veličina predmemorije u megabajtima. Ova veličina je ograničena na 200 MB kako bi se spriječilo da predmemorija ispuni datotečni sustav ili, u slučaju /tmp/
, radnu memoriju (RAM).
Primjeri:
- Koristi 1 GB za predmemoriranje:
CACHE_SIZE=1024
- Neograničena predmemorija:
CACHE_SIZE=unlimited
- Deaktiviraj spremanje u predmemoriju:
CACHE_SIZE=0
Brzo aktualiziranje: CACHE_REQUESTED_URLS_FOR_SECONDS=10
¶
zadano 600
(sekundi)
Broj sekundi za predmemoriranje datoteka kalendara koje se preuzimaju kako bi se smanjila propusnost i kašnjenje.
Primjeri:
- Brzo aktualiziranje:
CACHE_REQUESTED_URLS_FOR_SECONDS=10
- Deaktiviraj spremanje u predmemoriju:
CACHE_REQUESTED_URLS_FOR_SECONDS=0
OWC_ENCRYPTION_KEYS¶
zadana vrijednost je prazna
Ovo je popis ključeva za šifriranje odvojenih zarezima. Mogu se koristiti za skrivanje osjetljivih informacija URL-ova.
Primjeri:
- Deaktiviraj šifriranje (zadano):
OWC_ENCRYPTION_KEYS=
- Koristi jedan ključ:
OWC_ENCRYPTION_KEYS='Pj...48='
- Koristi više ključeva:
OWC_ENCRYPTION_KEYS='Pj...48=,cx...Fw='
Ako koristiš više ključeva, samo prvi šifrira podatke. Ostali se koriste samo za dešifriranje podataka.
Novi ključ možeš generirati na stranici /new-key tvoje instance za Otvoreni web kalendar ili pokretanjem ove naredbe:
python3 -m open_web_calendar.new_key
Također pogledaj:
OWC_SPECIFICATION¶
OWC_SPECIFICATION
je opcionalna varijabla okruženja.
- Može biti staza do datoteke koja sadrži ispravan YAML ili JSON.
- Može biti znakovni niz koji sadrži ispravan YAML ili JSON.
Postavljanje OWC_SPECIFICATION
dozvoljava mijenjanje zadanih vrijednosti za sve kalendare.
Napomena
Nove verzije aplikacije „Otvoreni web kalendar” mogu dodati nove parametre konfiguracije. Postavljanje vlastitih promjena u ovu varijablu umjesto mijenjanja datoteke default_specification
će osigurati da „Otvoreni web kalendar” radi u budućoj verziji.
U sljedećem primjeru, naslov će se promijeniti za sve kalendare koji ne postavljaju vlastiti naslov.
OWC_SPECIFICATION='{"title": "calendar"}' gunicorn open_web_calendar:app
Također pogledaj:
PORT¶
zadano je 5000
, zadano je 80
u Docker kontejneru
Priključak na kojem se usluga pokreće.
Primjeri:
- Koristi HTTP priključak:
PORT=80
WORKERS¶
zadano je 4
, samo za Docker kontejnere
Broj paralelnih izvršitelja (workers) za obradu zahtjeva.
Primjeri:
- Koristi samo jednog izvršitelja:
WORKERS=1
Daljnja konfiguracija¶
Otvoreni web kalendar koristi biblioteke za dodatno prilagođavanje.
- Flask ima više varijabli okruženja koje su dostupne za konfiguriranje načina na koji aplikacija poslužuje sadržaj.
- Zahtjevi se koriste za dobivanje
.ics
datoteka. Možeš konfigurirati proxy.
Otvoreni web kalendar se oslanja na proxy servere za ove funkcije:
- Kontrola pristupa i korisnici Za oraničavanje korištenja kalendara „Otvoreni web kalendar”, možeš koristiti
ginx
iliapache
kao obrnuti proxy ispred njega. YuNoHost je još jedna opcija samostalnog hostinga za ograničavanje pristupa. - HTTPS šifriranje To se može učiniti pomoću
nginx
,apache
ilicaddy
. - Naprednije predmemoriranje Osnovno predmemoriranje obrađuje Otvoreni web kalendar. Za naprednije konfiguracije predmemorije, koristi proxy server poput
squid
. Pročitaj u dokumentaciji u nastavku kako omogućiti da Otvoreni web kalendar pristupi internetu isključivo putem proxyja. - Ograničavanje pristupa kalendarima Prema zadanim postavkama, Otvoreni web kalendar ne ograničava koji će se kalendari prikazati. Za filtriranje kalendara koristi proxy server. Ako Otvoreni web kalendar pokrećeš iza vatrozida s drugim web uslugama, postavljanje proxyja je potrebno za zaštitu od SSRF napada.
SSRF zaštita s proxy serverom¶
Otvoreni web kalendar se može koristiti za pristup lokalnoj mreži iza vatrozida, pogledaj Problem 250. Ovaj besplatni pristup namijenjen je prikazu kalendara s bilo kojeg mjesta. Budući da Otvoreni web kalendar koristi requests
, on može koristiti proxy kako je opisano u requests
dokumentaciji. Tada proxy može obraditi filtriranje.
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"
Također pogledaj:
Squid kao proxy server¶
Squid proxy i predmemorija su fleksibilni i prilagodljivi. Možeš ih koristiti ispred Otvorenog web kalendara za konfiguriranje pristupa i prilagodbu predmemorije.
Operacijski sustav
Squid je dostupan za sve glavne platforme. Za naredbe i staze u ovom vodiču pretpostavljamo da pokrećeš Squid na Debain/Ubuntu. Naredbe bi mogle raditi na drugim sustavima, ali to nije testirano.
Nakon što instaliraš Squid proxy, dodaj ovu datoteku u direktorij conf.d
. Squid će je tada automatski učitati.
Na Linuxu stvori /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
Gornji popis onemogućuje Otvorenom web kalendaru pristup svim poznatim lokalnim/internim mrežama. Ako imaš vlastitu lokalnu mrežu (IPv4 ili IPv6), dodaj je na gornji popis.
Na Linuxu možeš instalirati datoteku ovom naredbom:
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
Zatim ponovo pokreni squid proxy.
sudo service squid reload
Postavi varijable okruženja kako bi Otvoreni web kalendar znao da koristi Squid proxy instaliran na localhost
. Postavljanje ove varijable se mijenja ovisno o tome kako se Otvoreni web kalendar pokreće.
Ako koristiš Python postavljanje, možeš postaviti varijable okruženja za server ovako:
export HTTP_PROXY="http://localhost:3128"
export HTTPS_PROXY="http://localhost:3128"
export ALL_PROXY="http://localhost:3128"
gunicorn open_web_calendar:app
Kada pokušaš pristupiti zabranjenom kalendaru s lokalnim open-web-calendar
, npr. http://172.16.0.1/calendar.ics
, vidjet ćeš ovu poruku o grešci:
403 Client Error: Forbidden for url: http://172.16.0.1/calendar.ics