Create & Init Project...
This commit is contained in:
78
app/interface/main/app-wall/service/mobile/service.go
Normal file
78
app/interface/main/app-wall/service/mobile/service.go
Normal file
@ -0,0 +1,78 @@
|
||||
package mobile
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"io"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"go-common/app/interface/main/app-wall/conf"
|
||||
mobileDao "go-common/app/interface/main/app-wall/dao/mobile"
|
||||
"go-common/app/interface/main/app-wall/model"
|
||||
"go-common/app/interface/main/app-wall/model/mobile"
|
||||
"go-common/library/log"
|
||||
"go-common/library/stat/prom"
|
||||
)
|
||||
|
||||
type Service struct {
|
||||
c *conf.Config
|
||||
dao *mobileDao.Dao
|
||||
tick time.Duration
|
||||
mobileIpCache []*mobile.MobileIP
|
||||
ipPath string
|
||||
// prom
|
||||
pHit *prom.Prom
|
||||
pMiss *prom.Prom
|
||||
}
|
||||
|
||||
func New(c *conf.Config) (s *Service) {
|
||||
s = &Service{
|
||||
c: c,
|
||||
dao: mobileDao.New(c),
|
||||
tick: time.Duration(c.Tick),
|
||||
mobileIpCache: []*mobile.MobileIP{},
|
||||
ipPath: c.IPLimit.MobileIPFile,
|
||||
// prom
|
||||
pHit: prom.CacheHit,
|
||||
pMiss: prom.CacheMiss,
|
||||
}
|
||||
s.loadIP()
|
||||
return
|
||||
}
|
||||
|
||||
func (s *Service) loadIP() {
|
||||
var (
|
||||
ip *mobile.MobileIP
|
||||
file *os.File
|
||||
line string
|
||||
err error
|
||||
ips []*mobile.MobileIP
|
||||
)
|
||||
if file, err = os.Open(s.ipPath); err != nil {
|
||||
log.Error("mobileIPFile is null")
|
||||
return
|
||||
}
|
||||
defer file.Close()
|
||||
reader := bufio.NewReader(file)
|
||||
for {
|
||||
if line, err = reader.ReadString('\n'); err != nil {
|
||||
if err == io.EOF {
|
||||
err = nil
|
||||
break
|
||||
}
|
||||
continue
|
||||
}
|
||||
lines := strings.Fields(line)
|
||||
if len(lines) < 3 {
|
||||
continue
|
||||
}
|
||||
ip = &mobile.MobileIP{
|
||||
IPStartUint: model.InetAtoN(lines[1]),
|
||||
IPEndUint: model.InetAtoN(lines[2]),
|
||||
}
|
||||
ips = append(ips, ip)
|
||||
}
|
||||
s.mobileIpCache = ips
|
||||
log.Info("loadMobileIPCache success")
|
||||
}
|
Reference in New Issue
Block a user