diff --git a/controllers/viewLog.go b/controllers/viewLog.go index 0af9f52..2076983 100644 --- a/controllers/viewLog.go +++ b/controllers/viewLog.go @@ -19,7 +19,7 @@ type WebSocketController struct { func (c *WebSocketController) Prepare() { sess := c.GetSession(variables.SessionName) if sess == nil { - c.Redirect(variables.LoginRouteNoRegex+variables.UserRoute, 302) + c.Redirect(variables.LoginRouteNoRegex+variables.ViewLogRoute, 302) } else { c.Data["IsAuthentificated"] = true } diff --git a/main.go b/main.go index 256cfc4..84d2735 100644 --- a/main.go +++ b/main.go @@ -7,6 +7,7 @@ import ( _ "git.kingpenguin.tk/chteufleur/datahouse.git/routers" "git.kingpenguin.tk/chteufleur/datahouse.git/xmpp" "git.kingpenguin.tk/chteufleur/datahouse.git/watchlog" + "git.kingpenguin.tk/chteufleur/datahouse.git/models" "git.kingpenguin.tk/chteufleur/datahouse.git/models/variables" "github.com/astaxie/beego" @@ -14,6 +15,8 @@ import ( "github.com/astaxie/beego/orm" _ "github.com/go-sql-driver/mysql" _ "github.com/mattn/go-sqlite3" + + "time" ) var ( @@ -54,7 +57,32 @@ func main() { if !user.IsUserExist("admin") { user.AddUser("admin", "8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918") } + /* go xmpp_manager.Run() go watchlog.Run() + */ + go reborn() + + time.Sleep(1 * time.Second) + models.ChanRuns <- xmpp_manager.EndRun + time.Sleep(1 * time.Second) + models.ChanRuns <- watchlog.EndRun + beego.Run() } + +func reborn() { + for { + action := <- models.ChanRuns + + switch action { + case xmpp_manager.EndRun: + go xmpp_manager.Run() + log.Info("XMPP Started") + + case watchlog.EndRun: + go watchlog.Run() + log.Info("Watchlog Started") + } + } +} diff --git a/watchlog/watchlog.go b/watchlog/watchlog.go index b7dbd57..51f9692 100644 --- a/watchlog/watchlog.go +++ b/watchlog/watchlog.go @@ -4,9 +4,15 @@ import ( "github.com/gorilla/websocket" "github.com/hpcloud/tail" + "git.kingpenguin.tk/chteufleur/datahouse.git/models" "git.kingpenguin.tk/chteufleur/datahouse.git/models/variables" "container/list" + "time" +) + +const ( + EndRun = "EndRunWatchlog" ) var ( @@ -19,6 +25,8 @@ func Run() { for line := range t.Lines { broadcastWebSocket(line.Text) } + time.Sleep(30 * time.Second) + models.ChanRuns <- EndRun } diff --git a/xmpp/xmpp.go b/xmpp/xmpp.go index 63d443d..1473e8c 100644 --- a/xmpp/xmpp.go +++ b/xmpp/xmpp.go @@ -6,10 +6,9 @@ import ( "github.com/astaxie/beego/logs" "git.kingpenguin.tk/chteufleur/go-xmpp.git" + "git.kingpenguin.tk/chteufleur/datahouse.git/models" "git.kingpenguin.tk/chteufleur/datahouse.git/models/relay" "git.kingpenguin.tk/chteufleur/datahouse.git/models/variables" - - "time" ) @@ -29,6 +28,8 @@ const ( Type_unsubscribed = "unsubscribed" Type_probe = "probe" Type_error = "error" + + EndRun = "EndRunXMPP" ) var ( @@ -42,7 +43,7 @@ var ( stream = new(xmpp.Stream) client = new(xmpp.XMPP) - Debug = false + Debug = true ) func init() { @@ -59,14 +60,14 @@ func must(v interface{}, err error) interface{} { func Run() { // Create stream and configure it as a component connection. + log.Info("XMPP Run()") jid = must(xmpp.ParseJID(JidStr)).(xmpp.JID) stream = must(xmpp.NewStream(jid.Domain+":"+serverPort, &xmpp.StreamConfig{LogStanzas: Debug})).(*xmpp.Stream) client = must(xmpp.NewClientXMPP(stream, jid, passwdStr, &xmpp.ClientConfig{InsecureSkipVerify: true})).(*xmpp.XMPP) mainXMPP() - - time.Sleep(5 * time.Second) - Run() + log.Debug("xmpp.Run Ended") + models.ChanRuns <- EndRun } @@ -75,11 +76,6 @@ func mainXMPP() { for x := range client.In { switch v := x.(type) { - case *xmpp.Presence: - - case *xmpp.Message: - log.Info("Message received : %s", v.Body) - case *xmpp.Iq: // TODO check if the caller has privilege to ask switch v.PayloadName().Space { @@ -94,6 +90,10 @@ func mainXMPP() { log.Info("recv: %v", x) } } + + // Send deconnexion + SendPresence(Status_offline, Type_unavailable, "") + log.Debug("mainXMPP Ended") }