From ec8ff5ee9231595789c87c4792b90f1858f31ba8 Mon Sep 17 00:00:00 2001 From: Chteufleur Date: Sun, 19 Jun 2016 14:14:19 +0200 Subject: [PATCH] Add debug command to allow/diallow debug messages --- database/database.go | 30 ++++++++++++++++++++++-------- gateway/gateway.go | 1 + gateway/xmpp.go | 14 ++++++++------ main.go | 2 +- servers.addr | 2 +- xmpp/commands.go | 29 ++++++++++++++++++++++++++++- xmpp/xmpp.go | 3 ++- 7 files changed, 63 insertions(+), 18 deletions(-) diff --git a/database/database.go b/database/database.go index 7337365..8cd966e 100644 --- a/database/database.go +++ b/database/database.go @@ -9,11 +9,11 @@ import ( const ( databaseFile = "go_xmpp4steam.db" - createDatabaseStmt = "create table if not exists users (jid text not null primary key, steamLogin text, steamPwd text);" - insertDatabaseStmt = "insert into users (jid, steamLogin, steamPwd) values(?, ?, ?)" + createDatabaseStmt = "create table if not exists users (jid text not null primary key, steamLogin text, steamPwd text, debug int);" + insertDatabaseStmt = "insert into users (jid, steamLogin, steamPwd, debug) values(?, ?, ?, ?)" deleteDatabaseStmt = "delete from users where jid=?" - selectDatabaseStmt = "select jid, steamLogin, steamPwd from users where jid=?" - updateDatabaseStmt = "update users set steamLogin=?, steamPwd=? where jid=?" + selectDatabaseStmt = "select jid, steamLogin, steamPwd, debug from users where jid=?" + updateDatabaseStmt = "update users set steamLogin=?, steamPwd=?, debug=? where jid=?" LogInfo = "\t[SQLITE INFO]\t" LogError = "\t[SQLITE ERROR]\t" @@ -24,6 +24,7 @@ type DatabaseLine struct { Jid string SteamLogin string SteamPwd string + Debug bool } var ( @@ -61,7 +62,11 @@ func (newLine *DatabaseLine) AddLine() bool { return false } defer stmt.Close() - _, err = stmt.Exec(newLine.Jid, newLine.SteamLogin, newLine.SteamPwd) + debug := 0 + if newLine.Debug { + debug = 1 + } + _, err = stmt.Exec(newLine.Jid, newLine.SteamLogin, newLine.SteamPwd, debug) if err != nil { log.Printf("%sError on creating SQL statement", LogError, err) return false @@ -78,7 +83,11 @@ func (newLine *DatabaseLine) UpdateLine() bool { return false } defer stmt.Close() - _, err = stmt.Exec(newLine.SteamLogin, newLine.SteamPwd, newLine.Jid) + debug := 0 + if newLine.Debug { + debug = 1 + } + _, err = stmt.Exec(newLine.SteamLogin, newLine.SteamPwd, debug, newLine.Jid) if err != nil { log.Printf("%sError on updating SQL statement", LogError, err) return false @@ -141,12 +150,17 @@ func getLine(jid string) *DatabaseLine { return nil } defer stmt.Close() - - err = stmt.QueryRow(jid).Scan(&ret.Jid, &ret.SteamLogin, &ret.SteamPwd) + debug := 0 + err = stmt.QueryRow(jid).Scan(&ret.Jid, &ret.SteamLogin, &ret.SteamPwd, &debug) if err != nil { log.Printf("%sError on select scan", LogError, err) return nil } + if debug == 1 { + ret.Debug = true + } else { + ret.Debug = false + } return ret } diff --git a/gateway/gateway.go b/gateway/gateway.go index 5e878a1..324f0c3 100644 --- a/gateway/gateway.go +++ b/gateway/gateway.go @@ -24,6 +24,7 @@ type GatewayInfo struct { XMPP_JID_Client string XMPP_Out chan interface{} XMPP_Connected_Client map[string]bool + DebugMessage bool } type StatusSteamFriend struct { diff --git a/gateway/xmpp.go b/gateway/xmpp.go index 46b470a..2a3b07e 100644 --- a/gateway/xmpp.go +++ b/gateway/xmpp.go @@ -163,12 +163,14 @@ func (g *GatewayInfo) SendXmppPresence(status, tpye, to, from, message, nick str } func (g *GatewayInfo) SendXmppMessage(from, subject, message string) { - m := xmpp.Message{To: g.XMPP_JID_Client, From: from, Body: message, Type: "chat"} + if from != XmppJidComponent || from == XmppJidComponent && g.DebugMessage { + m := xmpp.Message{To: g.XMPP_JID_Client, From: from, Body: message, Type: "chat"} - if subject != "" { - m.Subject = subject + if subject != "" { + m.Subject = subject + } + + log.Printf("%sSend message %v", LogXmppInfo, m) + g.XMPP_Out <- m } - - log.Printf("%sSend message %v", LogXmppInfo, m) - g.XMPP_Out <- m } diff --git a/main.go b/main.go index b7530dd..3fe3099 100644 --- a/main.go +++ b/main.go @@ -41,7 +41,7 @@ func init() { func main() { allDbUsers := database.GetAllLines() for _, dbUser := range allDbUsers { - xmpp.AddNewUser(dbUser.Jid, dbUser.SteamLogin, dbUser.SteamPwd) + xmpp.AddNewUser(dbUser.Jid, dbUser.SteamLogin, dbUser.SteamPwd, dbUser.Debug) } go xmpp.Run() diff --git a/servers.addr b/servers.addr index 524d10c..ae56787 100644 --- a/servers.addr +++ b/servers.addr @@ -1 +1 @@ -{"Addresses":[{"IP":"146.66.152.11","Port":27020},{"IP":"162.254.197.41","Port":27020},{"IP":"162.254.197.40","Port":27019},{"IP":"162.254.197.41","Port":27017},{"IP":"146.66.152.10","Port":27020},{"IP":"146.66.152.11","Port":27017},{"IP":"146.66.152.11","Port":27019},{"IP":"146.66.152.10","Port":27018},{"IP":"162.254.197.42","Port":27021},{"IP":"162.254.197.42","Port":27020},{"IP":"162.254.197.42","Port":27018},{"IP":"162.254.197.41","Port":27019},{"IP":"162.254.197.40","Port":27020},{"IP":"146.66.152.10","Port":27017},{"IP":"162.254.197.42","Port":27017},{"IP":"162.254.197.41","Port":27021},{"IP":"162.254.197.40","Port":27021},{"IP":"162.254.197.41","Port":27018},{"IP":"146.66.152.11","Port":27018},{"IP":"146.66.152.10","Port":27019},{"IP":"162.254.197.40","Port":27018},{"IP":"162.254.197.40","Port":27017},{"IP":"162.254.197.42","Port":27019},{"IP":"162.254.196.42","Port":27021},{"IP":"162.254.196.42","Port":27019},{"IP":"162.254.196.43","Port":27018},{"IP":"162.254.196.41","Port":27018},{"IP":"162.254.196.43","Port":27020},{"IP":"162.254.196.42","Port":27020},{"IP":"162.254.196.41","Port":27017},{"IP":"162.254.196.42","Port":27018},{"IP":"162.254.196.41","Port":27019},{"IP":"162.254.196.41","Port":27020},{"IP":"162.254.196.42","Port":27017},{"IP":"162.254.196.40","Port":27021},{"IP":"162.254.196.43","Port":27021},{"IP":"162.254.196.40","Port":27020},{"IP":"162.254.196.40","Port":27017},{"IP":"162.254.196.41","Port":27021},{"IP":"162.254.196.40","Port":27018},{"IP":"162.254.196.40","Port":27019},{"IP":"162.254.196.43","Port":27019},{"IP":"162.254.196.43","Port":27017},{"IP":"146.66.155.8","Port":27019},{"IP":"155.133.242.9","Port":27019},{"IP":"185.25.180.14","Port":27020},{"IP":"185.25.182.10","Port":27020},{"IP":"185.25.180.14","Port":27019},{"IP":"146.66.155.8","Port":27020},{"IP":"146.66.155.8","Port":27018},{"IP":"185.25.180.15","Port":27020},{"IP":"155.133.242.9","Port":27018},{"IP":"155.133.242.9","Port":27020},{"IP":"146.66.155.8","Port":27017},{"IP":"185.25.182.10","Port":27017},{"IP":"185.25.182.10","Port":27018},{"IP":"185.25.180.14","Port":27018},{"IP":"185.25.180.14","Port":27017},{"IP":"155.133.242.9","Port":27017},{"IP":"155.133.242.8","Port":27017},{"IP":"185.25.180.15","Port":27018},{"IP":"185.25.182.10","Port":27019},{"IP":"185.25.180.15","Port":27017},{"IP":"155.133.242.8","Port":27019},{"IP":"185.25.180.15","Port":27019},{"IP":"155.133.242.8","Port":27018},{"IP":"155.133.242.8","Port":27020},{"IP":"208.78.164.12","Port":27018},{"IP":"208.78.164.9","Port":27017},{"IP":"208.78.164.9","Port":27019},{"IP":"208.78.164.13","Port":27019},{"IP":"208.78.164.12","Port":27019},{"IP":"208.78.164.10","Port":27018},{"IP":"208.78.164.14","Port":27017},{"IP":"208.78.164.11","Port":27019},{"IP":"208.78.164.13","Port":27018},{"IP":"208.78.164.12","Port":27017},{"IP":"208.78.164.11","Port":27018},{"IP":"208.78.164.10","Port":27017},{"IP":"208.78.164.9","Port":27018}]} \ No newline at end of file +{"Addresses":[{"IP":"146.66.152.10","Port":27019},{"IP":"146.66.152.11","Port":27017},{"IP":"146.66.152.10","Port":27017},{"IP":"146.66.152.11","Port":27020},{"IP":"146.66.152.10","Port":27018},{"IP":"146.66.152.10","Port":27020},{"IP":"162.254.197.42","Port":27020},{"IP":"162.254.197.40","Port":27018},{"IP":"162.254.197.42","Port":27021},{"IP":"146.66.152.11","Port":27018},{"IP":"162.254.197.42","Port":27018},{"IP":"162.254.197.41","Port":27018},{"IP":"162.254.197.41","Port":27017},{"IP":"162.254.197.42","Port":27019},{"IP":"162.254.197.40","Port":27019},{"IP":"162.254.197.40","Port":27017},{"IP":"162.254.197.41","Port":27021},{"IP":"162.254.197.40","Port":27020},{"IP":"162.254.197.40","Port":27021},{"IP":"162.254.197.42","Port":27017},{"IP":"146.66.152.11","Port":27019},{"IP":"162.254.197.41","Port":27020},{"IP":"162.254.196.42","Port":27018},{"IP":"162.254.196.41","Port":27017},{"IP":"162.254.196.43","Port":27020},{"IP":"162.254.197.41","Port":27019},{"IP":"162.254.196.42","Port":27017},{"IP":"162.254.196.40","Port":27017},{"IP":"162.254.196.43","Port":27018},{"IP":"162.254.196.42","Port":27019},{"IP":"162.254.196.40","Port":27018},{"IP":"162.254.196.40","Port":27019},{"IP":"162.254.196.41","Port":27019},{"IP":"162.254.196.42","Port":27020},{"IP":"162.254.196.41","Port":27021},{"IP":"162.254.196.40","Port":27020},{"IP":"162.254.196.43","Port":27019},{"IP":"162.254.196.42","Port":27021},{"IP":"162.254.196.41","Port":27018},{"IP":"162.254.196.41","Port":27020},{"IP":"162.254.196.43","Port":27017},{"IP":"162.254.196.40","Port":27021},{"IP":"162.254.196.43","Port":27021},{"IP":"185.25.182.10","Port":27018},{"IP":"146.66.155.8","Port":27019},{"IP":"185.25.182.10","Port":27017},{"IP":"146.66.155.8","Port":27018},{"IP":"146.66.155.8","Port":27017},{"IP":"185.25.182.10","Port":27019},{"IP":"146.66.155.8","Port":27020},{"IP":"185.25.180.15","Port":27019},{"IP":"185.25.180.15","Port":27020},{"IP":"185.25.180.15","Port":27018},{"IP":"155.133.242.9","Port":27020},{"IP":"185.25.180.15","Port":27017},{"IP":"155.133.242.8","Port":27018},{"IP":"155.133.242.8","Port":27019},{"IP":"185.25.180.14","Port":27017},{"IP":"185.25.180.14","Port":27019},{"IP":"185.25.180.14","Port":27018},{"IP":"185.25.180.14","Port":27020},{"IP":"185.25.182.10","Port":27020},{"IP":"155.133.242.8","Port":27017},{"IP":"155.133.242.8","Port":27020},{"IP":"155.133.242.9","Port":27018},{"IP":"155.133.242.9","Port":27019},{"IP":"155.133.242.9","Port":27017},{"IP":"208.78.164.9","Port":27018},{"IP":"208.78.164.11","Port":27019},{"IP":"208.78.164.10","Port":27019},{"IP":"208.78.164.10","Port":27018},{"IP":"208.78.164.12","Port":27017},{"IP":"208.78.164.11","Port":27018},{"IP":"208.78.164.9","Port":27019},{"IP":"208.78.164.14","Port":27018},{"IP":"208.78.164.11","Port":27017},{"IP":"208.78.164.13","Port":27019},{"IP":"208.78.164.10","Port":27017},{"IP":"208.78.164.14","Port":27019},{"IP":"208.78.164.12","Port":27019}]} \ No newline at end of file diff --git a/xmpp/commands.go b/xmpp/commands.go index 44cbce7..c93382f 100644 --- a/xmpp/commands.go +++ b/xmpp/commands.go @@ -13,6 +13,7 @@ const ( CommandGetIdentifiants = "steamGetIdentifiants" CommandDisconnectSteam = "disconnectSteam" CommandRemoveRegistration = "removeRegistration" + CommandToggleDebugMode = "toggleDebugMode" ) var ( @@ -33,6 +34,8 @@ func execDiscoCommand(iq *xmpp.Iq) { discoItem.Item = append(discoItem.Item, *discoI) discoI = &xmpp.DiscoItem{JID: jid.Domain, Node: CommandRemoveRegistration, Name: "Remove registration"} discoItem.Item = append(discoItem.Item, *discoI) + discoI = &xmpp.DiscoItem{JID: jid.Domain, Node: CommandToggleDebugMode, Name: "Toggle debug mode"} + discoItem.Item = append(discoItem.Item, *discoI) reply.PayloadEncode(discoItem) comp.Out <- reply @@ -96,6 +99,29 @@ func execCommandAdHoc(iq *xmpp.Iq) { note.Value = "Failed to remove your registration." } + cmd.Note = *note + } else if adHoc.Node == CommandToggleDebugMode { + cmd.Status = xmpp.StatusAdHocCompleted + cmdXForm := &xmpp.AdHocXForm{Type: xmpp.TypeAdHocResult, Title: "Toggle debug mode"} + cmd.XForm = *cmdXForm + note := &xmpp.AdHocNote{Type: xmpp.TypeAdHocNoteInfo} + + jidBare := strings.SplitN(iq.From, "/", 2)[0] + dbUser := database.GetLine(jidBare) + dbUser.Debug = !dbUser.Debug + g := MapGatewayInfo[jidBare] + ok := dbUser.UpdateLine() + if ok && g != nil { + g.DebugMessage = dbUser.Debug + if dbUser.Debug { + note.Value = "Debug activated." + } else { + note.Value = "Debug desactivated." + } + } else { + note.Value = "Failed to update your profile. :(" + } + cmd.Note = *note } reply.PayloadEncode(cmd) @@ -159,6 +185,7 @@ func execCommandAdHoc(iq *xmpp.Iq) { dbUser.Jid = jidBare dbUser.SteamLogin = steamLogin dbUser.SteamPwd = steamPwd + dbUser.Debug = false isUserRegistred := database.GetLine(dbUser.Jid) != nil var isSqlSuccess bool @@ -168,7 +195,7 @@ func execCommandAdHoc(iq *xmpp.Iq) { isSqlSuccess = dbUser.AddLine() } if isSqlSuccess { - AddNewUser(dbUser.Jid, dbUser.SteamLogin, dbUser.SteamPwd) + AddNewUser(dbUser.Jid, dbUser.SteamLogin, dbUser.SteamPwd, dbUser.Debug) note.Value = "Command succeded !" } else { note.Value = "Error append while executing command" diff --git a/xmpp/xmpp.go b/xmpp/xmpp.go index f4f9806..7644df5 100644 --- a/xmpp/xmpp.go +++ b/xmpp/xmpp.go @@ -187,7 +187,7 @@ func SendMessage(to, subject, message string) { comp.Out <- m } -func AddNewUser(jid, steamLogin, steamPwd string) { +func AddNewUser(jid, steamLogin, steamPwd string, debugMessage bool) { log.Printf("%sAdd user %s to the map", LogInfo, jid) g := new(gateway.GatewayInfo) @@ -200,6 +200,7 @@ func AddNewUser(jid, steamLogin, steamPwd string) { g.XMPP_Out = comp.Out g.XMPP_Connected_Client = make(map[string]bool) + g.DebugMessage = debugMessage MapGatewayInfo[jid] = g go g.Run()