add option to disable redis
This commit is contained in:
parent
624a46fddc
commit
952f39ddf2
|
@ -17,6 +17,7 @@ timeout = 5 # 5 seconds
|
||||||
domain-server-file = "/etc/godns.d/servers"
|
domain-server-file = "/etc/godns.d/servers"
|
||||||
|
|
||||||
[redis]
|
[redis]
|
||||||
|
enable = true
|
||||||
host = "127.0.0.1"
|
host = "127.0.0.1"
|
||||||
port = 6379
|
port = 6379
|
||||||
db = 0
|
db = 0
|
||||||
|
|
20
hosts.go
20
hosts.go
|
@ -2,6 +2,7 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
|
"errors"
|
||||||
"net"
|
"net"
|
||||||
"os"
|
"os"
|
||||||
"regexp"
|
"regexp"
|
||||||
|
@ -17,8 +18,14 @@ type Hosts struct {
|
||||||
|
|
||||||
func NewHosts(hs HostsSettings, rs RedisSettings) Hosts {
|
func NewHosts(hs HostsSettings, rs RedisSettings) Hosts {
|
||||||
fileHosts := &FileHosts{hs.HostsFile}
|
fileHosts := &FileHosts{hs.HostsFile}
|
||||||
redis := &redis.Client{Addr: rs.Addr(), Db: rs.DB, Password: rs.Password}
|
|
||||||
redisHosts := &RedisHosts{redis, hs.RedisKey}
|
var rc *redis.Client
|
||||||
|
if rs.Enable {
|
||||||
|
rc = &redis.Client{Addr: rs.Addr(), Db: rs.DB, Password: rs.Password}
|
||||||
|
} else {
|
||||||
|
rc = nil
|
||||||
|
}
|
||||||
|
redisHosts := &RedisHosts{rc, hs.RedisKey}
|
||||||
|
|
||||||
hosts := Hosts{fileHosts.GetAll(), redisHosts}
|
hosts := Hosts{fileHosts.GetAll(), redisHosts}
|
||||||
return hosts
|
return hosts
|
||||||
|
@ -69,17 +76,26 @@ type RedisHosts struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *RedisHosts) GetAll() map[string]string {
|
func (r *RedisHosts) GetAll() map[string]string {
|
||||||
|
if r.redis == nil {
|
||||||
|
return map[string]string{}
|
||||||
|
}
|
||||||
var hosts = make(map[string]string)
|
var hosts = make(map[string]string)
|
||||||
r.redis.Hgetall(r.key, hosts)
|
r.redis.Hgetall(r.key, hosts)
|
||||||
return hosts
|
return hosts
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *RedisHosts) Get(domain string) (ip string, ok bool) {
|
func (r *RedisHosts) Get(domain string) (ip string, ok bool) {
|
||||||
|
if r.redis == nil {
|
||||||
|
return "", false
|
||||||
|
}
|
||||||
b, err := r.redis.Hget(r.key, domain)
|
b, err := r.redis.Hget(r.key, domain)
|
||||||
return string(b), err == nil
|
return string(b), err == nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *RedisHosts) Set(domain, ip string) (bool, error) {
|
func (r *RedisHosts) Set(domain, ip string) (bool, error) {
|
||||||
|
if r.redis == nil {
|
||||||
|
return false, errors.New("Redis not enabled")
|
||||||
|
}
|
||||||
return r.redis.Hset(r.key, domain, []byte(ip))
|
return r.redis.Hset(r.key, domain, []byte(ip))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,7 @@ type DNSServerSettings struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type RedisSettings struct {
|
type RedisSettings struct {
|
||||||
|
Enable bool
|
||||||
Host string
|
Host string
|
||||||
Port int
|
Port int
|
||||||
DB int
|
DB int
|
||||||
|
|
Loading…
Reference in New Issue