Skip to content

Refactoring of log levels #5

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 28 additions & 5 deletions src/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ var Version string
var Build string
var Date string

var logLevel string

var authClient *http.Client

func main() {
Expand All @@ -53,7 +55,8 @@ func main() {
formatter.FullTimestamp = true
formatter.TimestampFormat = "2006-01-02 15:04:05.000000000"
log.SetFormatter(formatter)
log.SetLevel(log.DebugLevel)

flag.String(flag.DefaultConfigFlagname, "", "Path to config file")

flag.IntVar(&mqttPort, "mqtt-port", 1883, "Mqtt port to listen to.")
flag.StringVar(&mqttHost, "mqtt-host", "0.0.0.0", "Mqtt interface to listen to.")
Expand Down Expand Up @@ -82,17 +85,37 @@ func main() {

flag.StringVar(&authURL, "auth-url", "", "URL to the authz/authn service")
flag.StringVar(&authCAFile, "auth-ca-file", "", "PEM encoded CA's certificate file for the authz/authn service")

flag.StringVar(&logLevel, "log-level", "info", "Log level [debug, info, warn, error](default: info)")
flag.Parse()


switch logLevel{
case "debug":
log.SetLevel(log.DebugLevel)
case "info":
log.SetLevel(log.InfoLevel)
case "warn":
log.SetLevel(log.WarnLevel)
case "error":
log.SetLevel(log.ErrorLevel)
default:
log.SetLevel(log.DebugLevel)
logLevel = "debug"
}

log.Println("Starting mqtt-proxy @ ", Version, Build, Date)
log.Println("mqtt server ", mqttBrokerHost, mqttBrokerPort, mqttBrokerUsername, mqttBrokerPassword)

log.Println("LogLevel:", logLevel)

if authURL != "" {
log.Println("auth connect : ", authURL+"/connect")
log.Println("auth publish : ", authURL+"/publish")
log.Println("auth subscribe : ", authURL+"/subscribe")
log.Println("auth url : ", authURL)
log.Debugln("auth connect : ", authURL+"/connect")
log.Debugln("auth publish : ", authURL+"/publish")
log.Debugln("auth subscribe : ", authURL+"/subscribe")
} else {
log.Println("auth : no auth url configured : bypassing!")
log.Warnln("auth : no auth url configured : bypassing!")
}

// Load CA cert
Expand Down
20 changes: 10 additions & 10 deletions src/mqtt-auth.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ func (session *Session) request(way string, uri string, request interface{}, res
return 0, err
}

log.Println("Session", session.id, way, "- Auth response", authURL+uri, resp.StatusCode, string(body))
log.Debugln("Session", session.id, way, "- Auth response", authURL+uri, resp.StatusCode, string(body))
if response != nil {
err = json.Unmarshal(body, response)
if err != nil {
Expand Down Expand Up @@ -112,15 +112,15 @@ func (session *Session) HandleConnect(way string, p *packets.ConnectPacket, r ne

//Override information
if resp.ClientIdentifier != "" && resp.ClientIdentifier != p.ClientIdentifier {
log.Println("Session", session.id, way, "- CONNECT alter ClientIdentifier", p.ClientIdentifier, "-->", resp.ClientIdentifier)
log.Debugln("Session", session.id, way, "- CONNECT alter ClientIdentifier", p.ClientIdentifier, "-->", resp.ClientIdentifier)
p.ClientIdentifier = resp.ClientIdentifier
}
if resp.Username != "" && resp.Username != p.Username {
log.Println("Session", session.id, way, "- CONNECT alter Username", p.Username, "-->", resp.Username)
log.Debugln("Session", session.id, way, "- CONNECT alter Username", p.Username, "-->", resp.Username)
p.Username = resp.Username
}
if resp.Password != "" && resp.Password != string(p.Password) {
log.Println("Session", session.id, way, "- CONNECT alter Password")
log.Debugln("Session", session.id, way, "- CONNECT alter Password")
p.Password = []byte(resp.Password)
}
session.Username = p.Username
Expand All @@ -130,7 +130,7 @@ func (session *Session) HandleConnect(way string, p *packets.ConnectPacket, r ne
}

func (session *Session) HandleSubscribe(way string, p *packets.SubscribePacket, r net.Conn, w net.Conn) error {
log.Println("Session", session.id, way, "- SUBSCRIBE", p.Topics, p.Qos)
log.Debugln("Session", session.id, way, "- SUBSCRIBE", p.Topics, p.Qos)
var resp MQTTSubscribeResponse
topics := p.Topics
for i := range p.Topics {
Expand All @@ -153,7 +153,7 @@ func (session *Session) HandleSubscribe(way string, p *packets.SubscribePacket,
}

if resp.Topic != "" && resp.Topic != topics[i] {
log.Println("Session", session.id, way, "- SUBSCRIBE alter topic", i, topics[i], "-->", resp.Topic)
log.Debugln("Session", session.id, way, "- SUBSCRIBE alter topic", i, topics[i], "-->", resp.Topic)
topics[i] = resp.Topic
}
}
Expand All @@ -170,8 +170,8 @@ func (session *Session) HandlePublish(way string, p *packets.PublishPacket, r ne
action = "RECEIVE"
uri = "/receive"
}
log.Println("Session", session.id, way, "- "+action, r.RemoteAddr().String(), w.RemoteAddr().String())
log.Println("Session", session.id, way, "- "+action, p.TopicName, p.Qos, string(p.Payload))
log.Debugln("Session", session.id, way, "- "+action, r.RemoteAddr().String(), w.RemoteAddr().String())
log.Debugln("Session", session.id, way, "- "+action, p.TopicName, p.Qos, string(p.Payload))
rq := MQTTPublish{session.id, session.Username, session.ClientIdentifier, p.TopicName, int(p.Qos), string(p.Payload)}
var resp MQTTPublishResponse
code, err := session.request(way, uri, rq, &resp)
Expand All @@ -184,11 +184,11 @@ func (session *Session) HandlePublish(way string, p *packets.PublishPacket, r ne
return errors.New(action + " Not Authorized")
}
if resp.Topic != "" && resp.Topic != p.TopicName {
log.Println("Session", session.id, way, "- "+action+" alter topic", p.TopicName, "-->", resp.Topic)
log.Debugln("Session", session.id, way, "- "+action+" alter topic", p.TopicName, "-->", resp.Topic)
p.TopicName = resp.Topic
}
if resp.Payload != "" && resp.Payload != string(p.Payload) {
log.Println("Session", session.id, way, "- "+action+"alter topic", p.Payload, "-->", resp.Payload)
log.Debugln("Session", session.id, way, "- "+action+"alter topic", p.Payload, "-->", resp.Payload)
p.Payload = []byte(resp.Payload)
}
return nil
Expand Down
6 changes: 3 additions & 3 deletions src/mqtt-packet.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@ func (session *Session) ForwardMQTTPacket(way string, r net.Conn, w net.Conn) er
cp, err := packets.ReadPacket(r)
if err != nil {
if !session.closed {
log.Errorln("Session", session.id, way, "- Error reading MQTT packet", err)
log.Warnln("Session", session.id, way, "- Error reading MQTT packet", err)
}
return err
}
log.Println("Session", session.id, way, "- Forward MQTT packet", cp.String())
log.Debugln("Session", session.id, way, "- Forward MQTT packet", cp.String())

if authURL != "" {
switch p := cp.(type) {
Expand All @@ -33,7 +33,7 @@ func (session *Session) ForwardMQTTPacket(way string, r net.Conn, w net.Conn) er
}

if err != nil {
log.Println("Session", session.id, way, "- Forward MQTT packet", err)
log.Debugln("Session", session.id, way, "- Forward MQTT packet", err)
return err
}

Expand Down
8 changes: 4 additions & 4 deletions src/mqtt-session.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ func (session *Session) forwardHalf(way string, c1 net.Conn, c2 net.Conn) {
//io.Copy(c1, c2)

for {
log.Println("Session", session.id, way, "- Wait Packet", c1.RemoteAddr().String(), c2.RemoteAddr().String())
log.Debugln("Session", session.id, way, "- Wait Packet", c1.RemoteAddr().String(), c2.RemoteAddr().String())
err := session.ForwardMQTTPacket(way, c1, c2)
if err != nil {
session.closed = true
Expand Down Expand Up @@ -84,7 +84,7 @@ func mqttAccept(l net.Listener) {
// Listen for an incoming connection.
conn, err := l.Accept()
if err != nil {
log.Println("Error accepting: ", err.Error())
log.Errorln("Error accepting: ", err.Error())
os.Exit(1)
}
// Handle connections in a new goroutine.
Expand All @@ -98,7 +98,7 @@ func mqttListen() {
addr := mqttHost + ":" + strconv.Itoa(mqttPort)
l, err := net.Listen("tcp", addr)
if err != nil {
log.Println("mqtt: Error listening mqtt://"+addr, err.Error())
log.Errorln("mqtt: Error listening mqtt://"+addr, err.Error())
os.Exit(1)
}
// Close the listener when the application closes.
Expand All @@ -119,7 +119,7 @@ func mqttsListen() {
addr := mqttsHost + ":" + strconv.Itoa(mqttsPort)
l, err := tls.Listen("tcp", addr, &config)
if err != nil {
log.Println("mqtts: Error listening mqtts://"+addr, err.Error())
log.Errorln("mqtts: Error listening mqtts://"+addr, err.Error())
os.Exit(1)
}
// Close the listener when the application closes.
Expand Down