Skip to content

Commit

Permalink
Add crontab
Browse files Browse the repository at this point in the history
  • Loading branch information
cp-i-pc committed Dec 1, 2018
1 parent 7dc6fde commit a597912
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 10 deletions.
6 changes: 6 additions & 0 deletions config.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@ func (c *UserConfig) UnmarshalJSON(data []byte) error {
return err
}

// set default value
if cfg.SecurityStr == "" {
cfg.SecurityStr = "AUTO"
}

cfg.securityConfig = &protocol.SecurityConfig{
Type: protocol.SecurityType(protocol.SecurityType_value[strings.ToUpper(cfg.SecurityStr)]),
}
Expand All @@ -54,6 +59,7 @@ type myPluginConfig struct {
TrafficRate float64 `json:"trafficRate"`
MySQL *MySQLConfig `json:"mysql"`
UserConfig *UserConfig `json:"user"`
GRPCAddr string `json:"gRPCAddr"`
}

type Config struct {
Expand Down
25 changes: 18 additions & 7 deletions panel.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ package v2ray_ssrpanel_plugin

import (
"fmt"
"github.com/robfig/cron"
"google.golang.org/grpc"
"time"
"v2ray.com/core/common/protocol"
"v2ray.com/core/common/serial"
"v2ray.com/core/proxy/vmess"
Expand All @@ -25,17 +25,28 @@ func NewPanel(gRPCConn *grpc.ClientConn, db *DB, globalConfig *Config) *Panel {
}

func (p *Panel) Start() {
for {
doFunc := func() {
if err := p.do(); err != nil {
newError("panel#do").Base(err).AtError().WriteToLog()
}
time.Sleep(10 * time.Second)
}
doFunc()

c := cron.New()
c.AddFunc(fmt.Sprintf("@every %ds", p.globalConfig.myPluginConfig.CheckRate), doFunc)
c.Start()
c.Run()
}

func (p *Panel) do() error {
newError("start doing ssr panel jobs").AtWarning().WriteToLog()
defer newError("finished doing ssr panel jobs").AtWarning().WriteToLog()
var addedUserCount, deletedUserCount int
var uplinkTraffic, downlinkTraffic int64
newError("start jobs").AtDebug().WriteToLog()
defer func() {
// todo
newError(fmt.Sprintf("jobs info: addded %d users, deleteted %d users, downlink traffic %d KB, uplink traffic %d KB",
addedUserCount, deletedUserCount, downlinkTraffic, uplinkTraffic)).AtInfo().WriteToLog()
}()

userModels, err := p.db.GetAllUsers()
if err != nil {
Expand Down Expand Up @@ -69,14 +80,14 @@ func (p *Panel) do() error {
p.handlerServiceClient.DelUser(userModel.Email)
}
}
deletedUserCount = len(delUserModels)

fmt.Println(addUserModels)
fmt.Println(delUserModels)
// Add
p.userModels = append(p.userModels, addUserModels...)
for _, userModel := range addUserModels {
p.handlerServiceClient.AddUser(p.convertUser(userModel))
}
addedUserCount = len(addUserModels)

return nil
}
Expand Down
8 changes: 5 additions & 3 deletions plugin.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package v2ray_ssrpanel_plugin

import (
"fmt"
"os"
"time"
"v2ray.com/core/common/errors"
Expand Down Expand Up @@ -30,11 +31,12 @@ func run() error {
}

go func() {
grpcAddr := "localhost:10086"
gRPCConn, err := connectGRPC(grpcAddr, 45*time.Second)
gRPCAddr := globalCfg.myPluginConfig.GRPCAddr
gRPCConn, err := connectGRPC(gRPCAddr, 45*time.Second)
if err != nil {
fatal("connect to gRPC server: ", err)
fatal(fmt.Sprintf("connect to gRPC server \"%s\"", gRPCAddr), err)
}
newError(fmt.Sprintf("Connected gRPC server \"%s\"", gRPCAddr)).AtWarning().WriteToLog()

p := NewPanel(gRPCConn, db, globalCfg)
p.Start()
Expand Down

0 comments on commit a597912

Please sign in to comment.