Changeset 30 in code for trunk/partage.go


Ignore:
Timestamp:
Oct 19, 2021, 9:45:55 AM (4 years ago)
Author:
dev
Message:

Move configuration to a file

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/partage.go

    r29 r30  
    1919
    2020        "github.com/dustin/go-humanize"
    21         "github.com/vharitonsky/iniflags"
     21        "gopkg.in/ini.v1"
    2222)
    2323
     
    3535
    3636var conf struct {
    37         bind     string
    38         user     string
    39         group    string
    40         baseuri  string
    41         filepath string
    42         metapath string
    43         rootdir  string
    44         chroot   string
    45         templatedir string
    46         filectx  string
    47         metactx  string
    48         maxsize  int64
    49         expiry   int64
     37        user        string
     38        group       string
     39        chroot      string
     40        bind        string
     41        baseuri    string
     42        rootdir    string
     43        tmplpath    string
     44        filepath    string
     45        metapath    string
     46        filectx     string
     47        metactx     string
     48        maxsize     int64
     49        expiry      int64
    5050}
    5151
     
    118118
    119119func servetemplate(w http.ResponseWriter, f string, d templatedata) {
    120         t, err := template.ParseFiles(conf.templatedir + "/" + f)
     120        t, err := template.ParseFiles(conf.tmplpath + "/" + f)
    121121        if err != nil {
    122122                http.Error(w, "Internal error", http.StatusInternalServerError)
     
    245245
    246246func main() {
    247         flag.StringVar(&conf.bind,        "bind",        "0.0.0.0:8080", "Address to bind to (default: 0.0.0.0:8080)")
    248         flag.StringVar(&conf.user,        "user",        "", "User to drop privileges to on startup (default: current user)")
    249         flag.StringVar(&conf.group,       "group",       "", "Group to drop privileges to on startup (default: user's group)")
    250         flag.StringVar(&conf.baseuri,     "baseuri",     "http://127.0.0.1:8080", "Base URI to use for links (default: http://127.0.0.1:8080)")
    251         flag.StringVar(&conf.filepath,    "filepath",    "./files", "Path to save files to (default: ./files)")
    252         flag.StringVar(&conf.metapath,    "metapath",    "./meta", "Path to save metadata to (default: ./meta)")
    253         flag.StringVar(&conf.filectx,     "filectx",     "/f/", "Context to serve files from (default: /f/)")
    254         flag.StringVar(&conf.metactx,     "metactx",     "/m/", "Context to serve metadata from (default: /m/)")
    255         flag.StringVar(&conf.rootdir,     "rootdir",     "./static", "Root directory (default: ./static)")
    256         flag.StringVar(&conf.chroot,      "chroot",      "", "Directory to chroot into upon starting (default: no chroot)")
    257         flag.StringVar(&conf.templatedir, "templatedir", "./templates", "Templates directory (default: ./templates)")
    258         flag.Int64Var(&conf.maxsize,      "maxsize",     30064771072, "Maximum file size (default: 28Gib)")
    259         flag.Int64Var(&conf.expiry,       "expiry",      86400, "Link expiration time (default: 24h)")
    260 
    261         iniflags.Parse()
     247        var file string
     248        flag.StringVar(&file,  "f", "", "Configuration file")
     249        flag.BoolVar(&verbose, "v", false, "Verbose logging")
     250        flag.Parse()
     251
     252        /* default values */
     253        conf.bind     = "0.0.0.0:8080"
     254        conf.baseuri  = "http://127.0.0.1:8080"
     255        conf.rootdir  = "/htdocs"
     256        conf.tmplpath = "/htdocs/templates"
     257        conf.filepath = "/htdocs/files"
     258        conf.metapath = "/htdocs/meta"
     259        conf.filectx  = "/f/"
     260        conf.metactx  = "/m/"
     261        conf.maxsize  = 34359738368
     262        conf.expiry   = 86400
     263
     264        if file != "" {
     265                if verbose {
     266                        log.Printf("Reading configuration %s", file)
     267                }
     268
     269                cfg, err := ini.Load(file)
     270                if err != nil {
     271                        fmt.Println(err)
     272                        return
     273                }
     274
     275                conf.bind        = cfg.Section("").Key("bind").String()
     276                conf.user        = cfg.Section("").Key("user").String()
     277                conf.group       = cfg.Section("").Key("group").String()
     278                conf.baseuri     = cfg.Section("").Key("baseuri").String()
     279                conf.filepath    = cfg.Section("").Key("filepath").String()
     280                conf.metapath    = cfg.Section("").Key("metapath").String()
     281                conf.filectx     = cfg.Section("").Key("filectx").String()
     282                conf.metactx     = cfg.Section("").Key("metactx").String()
     283                conf.rootdir     = cfg.Section("").Key("rootdir").String()
     284                conf.chroot      = cfg.Section("").Key("chroot").String()
     285                conf.tmplpath    = cfg.Section("").Key("tmplpath").String()
     286                conf.maxsize, _  = cfg.Section("").Key("maxsize").Int64()
     287                conf.expiry, _   = cfg.Section("").Key("expiry").Int64()
     288        }
    262289
    263290        if verbose {
Note: See TracChangeset for help on using the changeset viewer.