修改:简化工程包结构
git-svn-id: svn://47.119.165.148/zhub@132 e63fbceb-bcc3-4977-ac22-735b83d8d0f4
This commit is contained in:
157
cli_test.go
157
cli_test.go
@@ -1,157 +0,0 @@
|
|||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"log"
|
|
||||||
"strconv"
|
|
||||||
"testing"
|
|
||||||
"time"
|
|
||||||
"zhub/cli"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
//addr = "47.111.150.118:6066"
|
|
||||||
addr = "127.0.0.1:1216"
|
|
||||||
//addr = "122.112.180.156:6066"
|
|
||||||
//addr = "39.108.56.246:1216"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestCli(t *testing.T) {
|
|
||||||
//client, err := cli.Create("39.108.56.246:7070", "")
|
|
||||||
client, err := cli.Create(addr, "xx")
|
|
||||||
//client, err := cli.Create(addr, "topic-x")
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 订阅主题 消息
|
|
||||||
client.Subscribe("ax", func(v string) {
|
|
||||||
log.Println("收到主题 ax 消息 " + v)
|
|
||||||
})
|
|
||||||
|
|
||||||
// 定时调度
|
|
||||||
client.Timer("a", func() {
|
|
||||||
log.Println("收到 a 定时消息")
|
|
||||||
})
|
|
||||||
|
|
||||||
client.Subscribe("a", func(v string) {
|
|
||||||
log.Println("收到主题 a 消息 " + v)
|
|
||||||
})
|
|
||||||
client.Delay("a", "x", 3000)
|
|
||||||
|
|
||||||
time.Sleep(time.Hour * 3)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestTimer(t *testing.T) {
|
|
||||||
go func() {
|
|
||||||
client, _ := cli.Create(addr, "topic-1")
|
|
||||||
|
|
||||||
client.Subscribe("ax1", func(v string) {
|
|
||||||
log.Println("topic-1-ax: " + v)
|
|
||||||
})
|
|
||||||
}()
|
|
||||||
go func() {
|
|
||||||
client, _ := cli.Create(addr, "topic-1")
|
|
||||||
|
|
||||||
client.Subscribe("ax1", func(v string) {
|
|
||||||
log.Println("topic-2-ax: " + v)
|
|
||||||
})
|
|
||||||
}()
|
|
||||||
|
|
||||||
go func() {
|
|
||||||
client, _ := cli.Create(addr, "topic-1")
|
|
||||||
|
|
||||||
client.Subscribe("ax1", func(v string) {
|
|
||||||
log.Println("topic-3-ax: " + v)
|
|
||||||
})
|
|
||||||
}()
|
|
||||||
|
|
||||||
/*go func() {
|
|
||||||
client, _ := cli.Create(addr, "topic-1")
|
|
||||||
|
|
||||||
client.Subscribe("ax", func(v string) {
|
|
||||||
log.Println("topic-4-ax: " + v)
|
|
||||||
})
|
|
||||||
}()
|
|
||||||
go func() {
|
|
||||||
client, _ := cli.Create(addr, "topic-1")
|
|
||||||
|
|
||||||
client.Subscribe("ax", func(v string) {
|
|
||||||
log.Println("topic-5-ax: " + v)
|
|
||||||
})
|
|
||||||
}()*/
|
|
||||||
|
|
||||||
/*go func() {
|
|
||||||
client, _ := cli.Create(addr, "topic-2")
|
|
||||||
client.Timer("a", func() {
|
|
||||||
log.Println("client-2 收到 a 的定时消息")
|
|
||||||
})
|
|
||||||
}()
|
|
||||||
|
|
||||||
go func() {
|
|
||||||
client, _ := cli.Create(addr, "topic-3")
|
|
||||||
client.Timer("c", func() {
|
|
||||||
log.Println("client-2 收到 c 的定时消息")
|
|
||||||
})
|
|
||||||
|
|
||||||
client.Timer("b", func() {
|
|
||||||
log.Println("client-2 收到 b 的定时消息")
|
|
||||||
})
|
|
||||||
client.Timer("LOAD-LIVE-ROOM-UNBANNED", func() {
|
|
||||||
log.Println("client-2 收到 LOAD-LIVE-ROOM-UNBANNED 的定时消息")
|
|
||||||
})
|
|
||||||
client.Timer("VIP-EXP-EXPIRE", func() {
|
|
||||||
log.Println("client-2 收到 VIP-EXP-EXPIRE 的定时消息")
|
|
||||||
})
|
|
||||||
}()*/
|
|
||||||
|
|
||||||
time.Sleep(time.Hour * 3)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSendCmd(t *testing.T) {
|
|
||||||
client, err := cli.Create(addr, "group-admin")
|
|
||||||
if err != nil {
|
|
||||||
log.Println(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
//client.Cmd("reload-timer")
|
|
||||||
client.Cmd("shutdown")
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestPublish(t *testing.T) {
|
|
||||||
client, err := cli.Create(addr, "")
|
|
||||||
if err != nil {
|
|
||||||
log.Println(err)
|
|
||||||
}
|
|
||||||
for i := 0; i < 10000; i++ {
|
|
||||||
client.Publish("ax1", strconv.Itoa(i))
|
|
||||||
}
|
|
||||||
|
|
||||||
time.Sleep(time.Second)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestLock(t *testing.T) {
|
|
||||||
client, _ := cli.Create(addr, "xx")
|
|
||||||
|
|
||||||
client.Subscribe("lock", func(v string) {
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
var fun = func(x string) {
|
|
||||||
log.Println("lock", time.Now().UnixNano()/1e6)
|
|
||||||
lock := client.Lock("a", 30)
|
|
||||||
defer client.Unlock(lock)
|
|
||||||
//client.Lock("a", 5)
|
|
||||||
|
|
||||||
for i := 0; i < 5; i++ {
|
|
||||||
time.Sleep(time.Second * 1)
|
|
||||||
fmt.Println(x + ":" + strconv.Itoa(i+1))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
go fun("x")
|
|
||||||
go fun("y")
|
|
||||||
go fun("z")
|
|
||||||
|
|
||||||
time.Sleep(time.Second * 30 * 10)
|
|
||||||
}
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package cli
|
package cmd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
@@ -5,9 +5,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
"zhub/cli"
|
"zhub/cmd"
|
||||||
"zhub/conf"
|
|
||||||
"zhub/monitor"
|
|
||||||
"zhub/zsub"
|
"zhub/zsub"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -25,13 +23,13 @@ func main() {
|
|||||||
confPath = arg[3:]
|
confPath = arg[3:]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
conf.Load(confPath)
|
zsub.LoadConf(confPath)
|
||||||
if len(addr) == 0 {
|
if len(addr) == 0 {
|
||||||
addr = conf.GetStr("service.zhub.servers", "127.0.0.1:1216")
|
addr = zsub.GetStr("service.zhub.servers", "127.0.0.1:1216")
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(os.Args) == 3 && strings.EqualFold(os.Args[1], "-r") {
|
if len(os.Args) == 3 && strings.EqualFold(os.Args[1], "-r") {
|
||||||
if cli, err := cli.Create(addr, "group-admin"); err != nil {
|
if cli, err := cmd.Create(addr, "group-admin"); err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
} else {
|
} else {
|
||||||
switch os.Args[2] {
|
switch os.Args[2] {
|
||||||
@@ -47,10 +45,10 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if server {
|
if server {
|
||||||
go monitor.StartHttp()
|
go zsub.StartHttp()
|
||||||
zsub.ServerStart(addr) // 服务进程启动
|
zsub.ServerStart(addr) // 服务进程启动
|
||||||
} else {
|
} else {
|
||||||
cli.ClientRun(addr)
|
cmd.ClientRun(addr)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -2,9 +2,120 @@
|
|||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>Title</title>
|
<title>ZHub</title>
|
||||||
|
<link rel="stylesheet" href="http://rep.1216.top/repo/zui-dist/css/zui.css">
|
||||||
|
<link href="http://meta.1216.top/res/css/zui-theme.css" rel="stylesheet">
|
||||||
|
<style type="text/css">
|
||||||
|
body {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.panel {
|
||||||
|
padding-left: 0;
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.board {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.board-success {
|
||||||
|
background-color: #ddf4df;
|
||||||
|
color: #329d38;
|
||||||
|
}
|
||||||
|
|
||||||
|
.board-danger {
|
||||||
|
background-color: #ffe5e0;
|
||||||
|
color: #e75033;
|
||||||
|
}
|
||||||
|
|
||||||
|
.board-item {
|
||||||
|
width: 50%;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.center-block {
|
||||||
|
width:100%;
|
||||||
|
height:50px;
|
||||||
|
position:absolute;
|
||||||
|
top:100%;
|
||||||
|
margin-top:-50px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body style="text-align: center;padding: 10px">
|
<body style="text-align: center;padding: 10px">
|
||||||
<h2>welcome zhub!</h2>
|
<h1 class="">welcome zhub!</h1>
|
||||||
|
|
||||||
|
<div class="example">
|
||||||
|
<a class="label">Topic: 698</a>
|
||||||
|
<span class="label label-primary">Timer: 65</span>
|
||||||
|
<span class="label label-success">Conns: 45</span>
|
||||||
|
<span class="label label-info">Lock: 12/1122</span>
|
||||||
|
<span class="label label-warning">Delay: 12/3000</span>
|
||||||
|
<!--<span class="label label-danger">Danger</span>-->
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<div class="col-md-12">
|
||||||
|
|
||||||
|
<ul class="nav nav-secondary nav-justified">
|
||||||
|
<li class="active"><a data-tab href="#Issues"><b>Issues</b> </a></li>
|
||||||
|
<li><a data-tab href="#Topic"><b>Topic</b></a></li>
|
||||||
|
<li><a data-tab href="#Timer"><b>Timer</b> </a></li>
|
||||||
|
<li><a data-tab href="#Conns"><b>Conns</b> </a></li>
|
||||||
|
<li><a data-tab href="#Lock"><b>Lock</b> </a></li>
|
||||||
|
<li><a data-tab href="#Delay"><b>Delay</b> </a></li>
|
||||||
|
<li><a data-tab href="#Releases"><b>Releases</b> </a></li>
|
||||||
|
<li><a data-tab href="#Releases"><b>Q&A</b> </a></li>
|
||||||
|
<li><a data-tab href="#Releases"><b>Docs</b> </a></li>
|
||||||
|
</ul>
|
||||||
|
<div class="tab-content pull-left">
|
||||||
|
<div class="tab-pane active" id="Issues">
|
||||||
|
Issues
|
||||||
|
</div>
|
||||||
|
<div class="tab-pane" id="Topic">
|
||||||
|
Topic
|
||||||
|
</div>
|
||||||
|
<div class="tab-pane" id="Timer">
|
||||||
|
Timer
|
||||||
|
</div>
|
||||||
|
<div class="tab-pane" id="Conns">
|
||||||
|
Conns
|
||||||
|
</div>
|
||||||
|
<div class="tab-pane" id="Lock">
|
||||||
|
Lock
|
||||||
|
</div>
|
||||||
|
<div class="tab-pane" id="Delay">
|
||||||
|
Delay
|
||||||
|
</div>
|
||||||
|
<div class="tab-pane" id="Releases">
|
||||||
|
Releases
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
|
||||||
|
<br>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<H6 class="center-block">
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<a href="#" title="ZHub">ZHub</a>
|
||||||
|
<br>
|
||||||
|
<a href="index.html" title="开发者工具">Dev-Kit</a> |
|
||||||
|
<a href="https://gitee.com/tc608/JKit" target="_blank" title="Excel处理">JKit</a> |
|
||||||
|
<a href="http://meta.1216.top" target="_blank" title="元数据引擎">Meta-Kit</a> |
|
||||||
|
<a href="https://gitee.com/tc608/redtimer" target="_blank" title="徒手编写,精简时间调度">Red-timer</a> |
|
||||||
|
<a href="https://www.1216.top" target="_blank" title="redkale 实现论坛博客系统">Redbbs</a> |
|
||||||
|
<a href="https://gitee.com/tc608/jfly" target="_blank" title="jfinal 实现论坛博客系统">JFly</a>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
© TCCN <span href="">京ICP备16065761号</span>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
</H6>
|
||||||
|
|
||||||
|
<script src="http://meta.1216.top/res/zui/lib/jquery/jquery.js" defer></script>
|
||||||
|
<script src="http://meta.1216.top/res/zui/js/zui.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package conf
|
package zsub
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
@@ -15,7 +15,7 @@ var (
|
|||||||
DataDir = ""
|
DataDir = ""
|
||||||
)
|
)
|
||||||
|
|
||||||
func Load(path string) {
|
func LoadConf(path string) {
|
||||||
f, err := os.Open(path)
|
f, err := os.Open(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Panicln(err)
|
log.Panicln(err)
|
||||||
@@ -1,13 +1,17 @@
|
|||||||
package monitor
|
package zsub
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"zhub/zsub"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
// 1.日志文件 定期分割归档
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func StartHttp() {
|
func StartHttp() {
|
||||||
dir, _ := os.Getwd()
|
dir, _ := os.Getwd()
|
||||||
webDir := path.Join(dir, "/public")
|
webDir := path.Join(dir, "/public")
|
||||||
@@ -24,22 +28,23 @@ func StartHttp() {
|
|||||||
func publish(w http.ResponseWriter, r *http.Request) {
|
func publish(w http.ResponseWriter, r *http.Request) {
|
||||||
topic := r.FormValue("topic")
|
topic := r.FormValue("topic")
|
||||||
value := r.FormValue("value")
|
value := r.FormValue("value")
|
||||||
zsub.ZSubx().Publish(topic, value)
|
zsub.Publish(topic, value)
|
||||||
renderJson(w, "+ok")
|
renderJson(w, "+ok")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// retimer 重载定时调度
|
||||||
func retimer(w http.ResponseWriter, r *http.Request) {
|
func retimer(w http.ResponseWriter, r *http.Request) {
|
||||||
zsub.ZSubx().ReloadTimer()
|
zsub.ReloadTimer()
|
||||||
renderJson(w, "+reload timer ok")
|
renderJson(w, "+reload timer ok")
|
||||||
}
|
}
|
||||||
|
|
||||||
func cleanup(w http.ResponseWriter, r *http.Request) {
|
func cleanup(w http.ResponseWriter, r *http.Request) {
|
||||||
zsub.ZSubx().Clearup()
|
zsub.Clearup()
|
||||||
renderJson(w, "+OK")
|
renderJson(w, "+OK")
|
||||||
}
|
}
|
||||||
|
|
||||||
func info(w http.ResponseWriter, r *http.Request) {
|
func info(w http.ResponseWriter, r *http.Request) {
|
||||||
info := zsub.Info()
|
info := Info()
|
||||||
renderJson(w, info)
|
renderJson(w, info)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -6,7 +6,6 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
"zhub/conf"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var funChan = make(chan func(), 1000)
|
var funChan = make(chan func(), 1000)
|
||||||
@@ -30,7 +29,7 @@ func msgAccept(v Message) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if conf.LogDebug {
|
if LogDebug {
|
||||||
log.Println("[", v.Conn.sn, "] rcmd: "+strings.Join(rcmd, " "))
|
log.Println("[", v.Conn.sn, "] rcmd: "+strings.Join(rcmd, " "))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
23
zsub/zdb.go
23
zsub/zdb.go
@@ -10,7 +10,6 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"time"
|
"time"
|
||||||
"zhub/conf"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -50,11 +49,11 @@ func (s *ZSub) dataStorage() {
|
|||||||
s.delayup = false
|
s.delayup = false
|
||||||
}()
|
}()
|
||||||
|
|
||||||
err := os.Remove(conf.DataDir + "/delay.z")
|
err := os.Remove(DataDir + "/delay.z")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
}
|
}
|
||||||
file, err := os.OpenFile(conf.DataDir+"/delay.z", os.O_CREATE|os.O_WRONLY, os.ModeAppend)
|
file, err := os.OpenFile(DataDir+"/delay.z", os.O_CREATE|os.O_WRONLY, os.ModeAppend)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
@@ -75,7 +74,7 @@ func (s *ZSub) dataStorage() {
|
|||||||
|
|
||||||
// ========================== lock save ===========================
|
// ========================== lock save ===========================
|
||||||
func() {
|
func() {
|
||||||
err := os.Remove(conf.DataDir + "/lock.z")
|
err := os.Remove(DataDir + "/lock.z")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
}
|
}
|
||||||
@@ -86,12 +85,12 @@ func (s *ZSub) dataStorage() {
|
|||||||
break // 只记录获得锁的记录
|
break // 只记录获得锁的记录
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Append(str, conf.DataDir+"/lock.z")
|
Append(str, DataDir+"/lock.z")
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *ZSub) loadDelay() {
|
func (s *ZSub) loadDelay() {
|
||||||
f, err := os.Open(conf.DataDir + "/delay.z")
|
f, err := os.Open(DataDir + "/delay.z")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -126,7 +125,7 @@ func (s *ZSub) loadDelay() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *ZSub) loadLock() {
|
func (s *ZSub) loadLock() {
|
||||||
f, err := os.Open(conf.DataDir + "/lock.z")
|
f, err := os.Open(DataDir + "/lock.z")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -172,12 +171,12 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
conf.Load("app.conf")
|
LoadConf("app.conf")
|
||||||
_db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8",
|
_db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8",
|
||||||
conf.GetStr("ztimer.db.user", "root"),
|
GetStr("ztimer.db.user", "root"),
|
||||||
conf.GetStr("ztimer.db.pwd", "123456"),
|
GetStr("ztimer.db.pwd", "123456"),
|
||||||
conf.GetStr("ztimer.db.addr", "127.0.0.1:3306"),
|
GetStr("ztimer.db.addr", "127.0.0.1:3306"),
|
||||||
conf.GetStr("ztimer.db.database", "zhub"),
|
GetStr("ztimer.db.database", "zhub"),
|
||||||
))
|
))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import (
|
|||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"time"
|
"time"
|
||||||
"unicode/utf8"
|
"unicode/utf8"
|
||||||
"zhub/conf"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -251,7 +250,7 @@ ServerStart
|
|||||||
2、init server
|
2、init server
|
||||||
*/
|
*/
|
||||||
func ServerStart(addr string) {
|
func ServerStart(addr string) {
|
||||||
conf.GetStr("data.dir", "data")
|
GetStr("data.dir", "data")
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
for {
|
for {
|
||||||
@@ -523,7 +522,3 @@ func (s *ZSub) noSubscribe(topic string) bool {
|
|||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
func ZSubx() *ZSub {
|
|
||||||
return zsub
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"text/template"
|
"text/template"
|
||||||
"time"
|
"time"
|
||||||
"zhub/conf"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type ZTimer struct {
|
type ZTimer struct {
|
||||||
@@ -167,10 +166,10 @@ func executeShell(command string) (string, error, string) {
|
|||||||
|
|
||||||
func (s *ZSub) ReloadTimer() {
|
func (s *ZSub) ReloadTimer() {
|
||||||
db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8",
|
db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8",
|
||||||
conf.GetStr("ztimer.db.user", "root"),
|
GetStr("ztimer.db.user", "root"),
|
||||||
conf.GetStr("ztimer.db.pwd", "123456"),
|
GetStr("ztimer.db.pwd", "123456"),
|
||||||
conf.GetStr("ztimer.db.addr", "127.0.0.1:3306"),
|
GetStr("ztimer.db.addr", "127.0.0.1:3306"),
|
||||||
conf.GetStr("ztimer.db.database", "zhub"),
|
GetStr("ztimer.db.database", "zhub"),
|
||||||
))
|
))
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user