diff --git a/boxcars/boxcars.go b/boxcars/boxcars.go index 05b68e0..403eeba 100644 --- a/boxcars/boxcars.go +++ b/boxcars/boxcars.go @@ -29,13 +29,13 @@ func main() { os.Exit(1) } + if secure { + boxcars.Secure(user_id, group_id) + } + boxcars.SetFilename(filename) go boxcars.ReadConfig() go boxcars.AutoReload() - if secure { - go boxcars.Secure(user_id, group_id) - } - boxcars.Listen(port) } diff --git a/handlers-of.go b/handlers-of.go index 2d4abcf..e18aaae 100644 --- a/handlers-of.go +++ b/handlers-of.go @@ -4,6 +4,8 @@ import ( "regexp" "fmt" "os" + "os/user" + "strings" ) type Handlers map[string]*Handler @@ -12,6 +14,7 @@ func handlerOf (uri string, hasCustom404 bool, custom404 string) *Handler { debug("Setting up the HTTP handler that will serve %s", uri) handler := &Handler{ false, false, uri, nil } + uri = expandUser(uri) isStatic := isLocalPath(uri) if isStatic && isSingleFile(uri) { @@ -76,3 +79,13 @@ func isSingleFile (uri string) bool { return false } + +func expandUser(uri string) string { + if !strings.HasPrefix(uri, "~/") { + return uri + } + usr, _ := user.Current() + dir := usr.HomeDir + uri = strings.Replace(uri, "~", dir, 1) + return uri +}