No, non quello di Kim Dotcom

boyska 6a87db688d TEST size limit 6 years ago
cmd 5d6db07758 FIX ParseConf returned invalid conf 6 years ago
res a6d5ca9141 FIX specify upload enctype 6 years ago
.gitignore c640ec47ac pare che fa 6 years ago
README.md c640ec47ac pare che fa 6 years ago
conf.go 3bb3c9856e can be hosted under a prefix 6 years ago
conf_test.go b08952ebf4 fix tests 6 years ago
confload.go 5d6db07758 FIX ParseConf returned invalid conf 6 years ago
doc.go c640ec47ac pare che fa 6 years ago
fileutils.go c640ec47ac pare che fa 6 years ago
fileutils_test.go c640ec47ac pare che fa 6 years ago
http.go 6a87db688d TEST size limit 6 years ago
http_test.go 6a87db688d TEST size limit 6 years ago
httpui.go f83cc1b1ef accesslog to stdout + new mux engine 6 years ago

README.md

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 ???
}