64 lines
2.2 KiB
Markdown
64 lines
2.2 KiB
Markdown
|
MEGAROR upload
|
||
|
-----------------
|
||
|
|
||
|
Un uploader fatto apposta per ondarossa
|
||
|
|
||
|
Cose principali:
|
||
|
|
||
|
* pesca l'utente da degli header HTTP (sì, il server proxy deve fare le cose giuste)
|
||
|
* autorizza delle cose in base a dei file di permessi semplici. Esempio /megaror/spot -> tizio@ondarossa.info,
|
||
|
*.ondarossa.net, tipa@ondarossa.info
|
||
|
* associa path tipo /megaror/redattor@/boyska a https://megaror.ondarossa.info/redattor@/boyska. Ovvero gli
|
||
|
dai un view-url-base e un view-path-base e lui compone le cose giuste.
|
||
|
* fa graceful degradation così non killa i trasferimenti in corso
|
||
|
* logga decentemente
|
||
|
* (da approfondire) scarica da URL, ma con possibilità di filtrare quali url sì e quali no (ie: solo archive.org)
|
||
|
* (da approfondire) manda mail quando un file viene caricato
|
||
|
|
||
|
Configurazione. Un file YAML in cui l'unità di base è lo "share". Ogni share ha
|
||
|
```
|
||
|
type Share struct {
|
||
|
Name OBBLIGATORIO
|
||
|
Dir OBBLIGATORIA
|
||
|
Description
|
||
|
Authorized lista di glob di utenti autorizzati.
|
||
|
SizeLimit esempio 20M
|
||
|
ExtList lista di estensioni esempio ogg,oga,mp3,aac
|
||
|
}
|
||
|
```
|
||
|
|
||
|
```
|
||
|
type Global struct {
|
||
|
Excluded []Glob
|
||
|
ViewURLBase string
|
||
|
ViewPathBase string
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Sezione globale: si possono escludere alcune persone globalmente dal servizio. Esempio: molesto@ondarossa.info, worm@ondarossa.info. Se un utente è bloccato globalmente ma è dentro l'Authorized di un certo share, è autorizzato.
|
||
|
|
||
|
```
|
||
|
type UserHome {
|
||
|
PathPrefix string
|
||
|
Create bool
|
||
|
}
|
||
|
func (*uh UserHome) GetShare(username string) (Share)
|
||
|
```
|
||
|
|
||
|
Share per-utente: si può creare una share "dinamica" per ogni utente (home) tipo /megaror/Redazione/redattor@/%h
|
||
|
Se c'è una share con nome uguale a home_tizio@ondarossa.info si possono cambiare le impostazioni per quella
|
||
|
home. Ovvero una share statica sovrascrive una share dinamica.
|
||
|
Ad esempio per dire che home_leditanellapresa@ondarossa.info è scrivibile anche da nerd@ondarossa.info si può
|
||
|
creare la share esplicitamente e mettere tutti i desiderati (incluso il "proprietario", non c'è automatismo)
|
||
|
dentro Authorized
|
||
|
Un utente bloccato globalmente non ha la home, a meno che la sezione non sia creata manualmente e l'utente
|
||
|
venga autorizzato.
|
||
|
|
||
|
```
|
||
|
type URLFetcher struct {
|
||
|
Enabled bool
|
||
|
AllowedURLs []Glob
|
||
|
SizeLimit ???
|
||
|
}
|
||
|
```
|