mirror of
https://github.com/aclindsa/moneygo.git
synced 2024-12-27 07:52:28 -05:00
Merge pull request #17 from aclindsa/config_file
Move to using config file
This commit is contained in:
commit
319b0b147d
@ -65,12 +65,12 @@ the `go generate ...` command.
|
|||||||
Assuming you're in the same directory you ran the above installation commands
|
Assuming you're in the same directory you ran the above installation commands
|
||||||
from, running MoneyGo is then as easy as:
|
from, running MoneyGo is then as easy as:
|
||||||
|
|
||||||
$ ./bin/moneygo \
|
$ ./bin/moneygo -config src/github.com/aclindsa/moneygo/example_config.ini
|
||||||
-port 8080 \
|
|
||||||
-base src/github.com/aclindsa/moneygo/
|
|
||||||
|
|
||||||
You should then be able to explore MoneyGo by visiting http://localhost:8080 in
|
You should then be able to explore MoneyGo by visiting http://localhost:8080 in
|
||||||
your browser.
|
your browser. Editing the configuration file supplied will allow you to modify
|
||||||
|
several settings including the port used and whether to serve via FastCGI
|
||||||
|
instead of HTTP (the default).
|
||||||
|
|
||||||
## Missing Features
|
## Missing Features
|
||||||
|
|
||||||
|
23
config.go
Normal file
23
config.go
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"gopkg.in/gcfg.v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Config struct {
|
||||||
|
MoneyGo struct {
|
||||||
|
Fcgi bool // whether to serve FCGI (HTTP by default if false)
|
||||||
|
Base_directory string // base directory for serving files out of
|
||||||
|
Port int // port to serve API/files on
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func readConfig(filename string) (*Config, error) {
|
||||||
|
var cfg Config
|
||||||
|
err := gcfg.ReadFileInto(&cfg, filename)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("Failed to parse config file: %s", err)
|
||||||
|
}
|
||||||
|
return &cfg, nil
|
||||||
|
}
|
11
example_config.ini
Normal file
11
example_config.ini
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
[moneygo]
|
||||||
|
|
||||||
|
# Whether to serve as FastCGI (default is false, for HTTP)
|
||||||
|
fcgi = false
|
||||||
|
|
||||||
|
# Port to serve FCGI or HTTP on
|
||||||
|
port = 8080
|
||||||
|
|
||||||
|
# Base directory for serving files out of. This should point to the root of the
|
||||||
|
# moneygo source directory
|
||||||
|
base-directory = src/github.com/aclindsa/moneygo/
|
43
main.go
43
main.go
@ -14,34 +14,25 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
)
|
)
|
||||||
|
|
||||||
var serveFcgi bool
|
var configFile string
|
||||||
var baseDir string
|
var config *Config
|
||||||
var tmpDir string
|
|
||||||
var port int
|
|
||||||
var smtpServer string
|
|
||||||
var smtpPort int
|
|
||||||
var smtpUsername string
|
|
||||||
var smtpPassword string
|
|
||||||
var reminderEmail string
|
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
flag.StringVar(&baseDir, "base", "./", "Base directory for server")
|
var err error
|
||||||
flag.StringVar(&tmpDir, "tmp", "/tmp", "Directory to create temporary files in")
|
flag.StringVar(&configFile, "config", "/etc/moneygo/config.ini", "Path to config file")
|
||||||
flag.IntVar(&port, "port", 80, "Port to serve API/files on")
|
|
||||||
flag.StringVar(&smtpServer, "smtp.server", "smtp.example.com", "SMTP server to send reminder emails from.")
|
|
||||||
flag.IntVar(&smtpPort, "smtp.port", 587, "SMTP server port to connect to")
|
|
||||||
flag.StringVar(&smtpUsername, "smtp.username", "moneygo", "SMTP username")
|
|
||||||
flag.StringVar(&smtpPassword, "smtp.password", "password", "SMTP password")
|
|
||||||
flag.StringVar(&reminderEmail, "email", "moneygo@example.com", "Email address to send reminder emails as.")
|
|
||||||
flag.BoolVar(&serveFcgi, "fcgi", false, "Serve via fcgi rather than http.")
|
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
static_path := path.Join(baseDir, "static")
|
config, err = readConfig(configFile)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
static_path := path.Join(config.MoneyGo.Base_directory, "static")
|
||||||
|
|
||||||
// Ensure base directory is valid
|
// Ensure base directory is valid
|
||||||
dir_err_str := "The base directory doesn't look like it contains the " +
|
dir_err_str := "The base directory doesn't look like it contains the " +
|
||||||
"'static' directory. Check to make sure you're passing the right " +
|
"'static' directory. Check to make sure your config file contains the" +
|
||||||
"value to the -base argument."
|
"right path for 'base_directory'."
|
||||||
static_dir, err := os.Stat(static_path)
|
static_dir, err := os.Stat(static_path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print(err)
|
log.Print(err)
|
||||||
@ -56,11 +47,11 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func rootHandler(w http.ResponseWriter, r *http.Request) {
|
func rootHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
http.ServeFile(w, r, path.Join(baseDir, "static/index.html"))
|
http.ServeFile(w, r, path.Join(config.MoneyGo.Base_directory, "static/index.html"))
|
||||||
}
|
}
|
||||||
|
|
||||||
func staticHandler(w http.ResponseWriter, r *http.Request) {
|
func staticHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
http.ServeFile(w, r, path.Join(baseDir, r.URL.Path))
|
http.ServeFile(w, r, path.Join(config.MoneyGo.Base_directory, r.URL.Path))
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@ -76,13 +67,13 @@ func main() {
|
|||||||
servemux.HandleFunc("/import/gnucash", GnucashImportHandler)
|
servemux.HandleFunc("/import/gnucash", GnucashImportHandler)
|
||||||
servemux.HandleFunc("/report/", ReportHandler)
|
servemux.HandleFunc("/report/", ReportHandler)
|
||||||
|
|
||||||
listener, err := net.Listen("tcp", ":"+strconv.Itoa(port))
|
listener, err := net.Listen("tcp", ":"+strconv.Itoa(config.MoneyGo.Port))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("Serving on port %d out of directory: %s", port, baseDir)
|
log.Printf("Serving on port %d out of directory: %s", config.MoneyGo.Port, config.MoneyGo.Base_directory)
|
||||||
if serveFcgi {
|
if config.MoneyGo.Fcgi {
|
||||||
fcgi.Serve(listener, context.ClearHandler(servemux))
|
fcgi.Serve(listener, context.ClearHandler(servemux))
|
||||||
} else {
|
} else {
|
||||||
http.Serve(listener, context.ClearHandler(servemux))
|
http.Serve(listener, context.ClearHandler(servemux))
|
||||||
|
Loading…
Reference in New Issue
Block a user