Add config param for unix socket permission (issue #203)

This commit is contained in:
Nikolay Turpitko 2015-11-23 23:30:30 +06:00
parent e6d0bae8f2
commit 316ba29713
3 changed files with 21 additions and 1 deletions

View File

@ -97,6 +97,8 @@ type Config struct {
Addr string `toml:"addr"`
AddrUnixSocketPerm string `toml:"addr_unixsocketperm"`
HttpAddr string `toml:"http_addr"`
SlaveOf string `toml:"slaveof"`

View File

@ -3,6 +3,10 @@
# Server listen address
addr = "127.0.0.1:6380"
# Unix socket permissions, 755 by default.
# Ignored for tcp socket.
addr_unixsocketperm = "0770"
# Server http listen address, set empty to disable
http_addr = "127.0.0.1:11181"

View File

@ -3,7 +3,9 @@ package server
import (
"net"
"net/http"
"os"
"path"
"strconv"
"strings"
"sync"
@ -86,10 +88,22 @@ func NewApp(cfg *config.Config) (*App, error) {
return nil, err
}
if app.listener, err = net.Listen(netType(cfg.Addr), cfg.Addr); err != nil {
addrNetType := netType(cfg.Addr)
if app.listener, err = net.Listen(addrNetType, cfg.Addr); err != nil {
return nil, err
}
if addrNetType == "unix" && len(cfg.AddrUnixSocketPerm) > 0 {
var perm int64
if perm, err = strconv.ParseInt(cfg.AddrUnixSocketPerm, 8, 32); err != nil {
return nil, err
}
if err = os.Chmod(cfg.Addr, os.FileMode(uint32(perm))); err != nil {
return nil, err
}
}
if len(cfg.HttpAddr) > 0 {
if app.httpListener, err = net.Listen(netType(cfg.HttpAddr), cfg.HttpAddr); err != nil {
return nil, err