new code for login
This commit is contained in:
parent
db41a32a5b
commit
ebdf1336a1
80
TCPClient.go
80
TCPClient.go
@ -18,6 +18,7 @@ type TCPClient struct {
|
|||||||
Password string
|
Password string
|
||||||
Address string
|
Address string
|
||||||
Port string
|
Port string
|
||||||
|
LoggedIn bool
|
||||||
Timeout time.Duration
|
Timeout time.Duration
|
||||||
LogWriter *bufio.Writer
|
LogWriter *bufio.Writer
|
||||||
Reader *bufio.Reader
|
Reader *bufio.Reader
|
||||||
@ -55,6 +56,7 @@ func (c *TCPClient) setDefaultParams() {
|
|||||||
if c.LogWriter == nil {
|
if c.LogWriter == nil {
|
||||||
c.LogWriter = bufio.NewWriter(os.Stdout)
|
c.LogWriter = bufio.NewWriter(os.Stdout)
|
||||||
}
|
}
|
||||||
|
c.LoggedIn = false
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *TCPClient) StartClient() {
|
func (c *TCPClient) StartClient() {
|
||||||
@ -72,10 +74,10 @@ func (c *TCPClient) StartClient() {
|
|||||||
}
|
}
|
||||||
Log.Infof("Connected to DX cluster %s:%s", c.Address, c.Port)
|
Log.Infof("Connected to DX cluster %s:%s", c.Address, c.Port)
|
||||||
|
|
||||||
err = c.Conn.SetKeepAlive(true)
|
// err = c.Conn.SetKeepAlive(true)
|
||||||
if err != nil {
|
// if err != nil {
|
||||||
Log.Error("Error while setting keep alive:", err)
|
// Log.Error("Error while setting keep alive:", err)
|
||||||
}
|
// }
|
||||||
|
|
||||||
c.Reader = bufio.NewReader(c.Conn)
|
c.Reader = bufio.NewReader(c.Conn)
|
||||||
c.Writer = bufio.NewWriter(c.Conn)
|
c.Writer = bufio.NewWriter(c.Conn)
|
||||||
@ -132,34 +134,56 @@ func (c *TCPClient) ReadLine() {
|
|||||||
|
|
||||||
for {
|
for {
|
||||||
|
|
||||||
message, err := c.Reader.ReadString('\n')
|
// Need to check data with space first to find login and then use \n
|
||||||
message, _ = strings.CutSuffix(message, "\n")
|
if !c.LoggedIn {
|
||||||
message, _ = strings.CutSuffix(message, "\r")
|
message, err := c.Reader.ReadString(' ')
|
||||||
|
message, _ = strings.CutSuffix(message, "\n")
|
||||||
|
message, _ = strings.CutSuffix(message, "\r")
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
Log.Errorf("Error reading message: %s", err)
|
Log.Errorf("Error reading message: %s", err)
|
||||||
c.Conn.Close()
|
c.Conn.Close()
|
||||||
c.StartClient()
|
c.StartClient()
|
||||||
}
|
}
|
||||||
|
|
||||||
if strings.Contains(message, Cfg.Cluster.LoginPrompt) {
|
if strings.Contains(message, Cfg.Cluster.LoginPrompt) {
|
||||||
Log.Debug("Found login prompt...sending callsign")
|
Log.Debug("Found login prompt...sending callsign")
|
||||||
c.Write([]byte(c.Login + "\r\n"))
|
c.Write([]byte(c.Login + "\r\n"))
|
||||||
c.SetFilters()
|
c.SetFilters()
|
||||||
if Cfg.Cluster.Command != "" {
|
if Cfg.Cluster.Command != "" {
|
||||||
c.WriteString(Cfg.Cluster.Command + "\n\r")
|
c.WriteString(Cfg.Cluster.Command + "\n\r")
|
||||||
|
}
|
||||||
|
Log.Infof("Connected to cluster %s", Cfg.Cluster.Server)
|
||||||
|
Log.Info("Start receiving spots")
|
||||||
|
c.LoggedIn = true
|
||||||
}
|
}
|
||||||
Log.Info("Start receiving spots")
|
|
||||||
} else if strings.Contains(message, "Error reading from server: read tcp") {
|
|
||||||
Log.Error("Disconnected from Telnet Server, reconnecting")
|
|
||||||
c.Close()
|
|
||||||
c.StartClient()
|
|
||||||
} else {
|
|
||||||
ProcessTelnetSpot(spotRe, message, c.SpotChanToFlex, c.SpotChanToHTTPServer, c.Countries)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send the spot message to TCP server
|
if c.LoggedIn {
|
||||||
c.MsgChan <- message
|
message, err := c.Reader.ReadString('\n')
|
||||||
|
message, _ = strings.CutSuffix(message, "\n")
|
||||||
|
message, _ = strings.CutSuffix(message, "\r")
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
Log.Errorf("Error reading message: %s", err)
|
||||||
|
c.Conn.Close()
|
||||||
|
c.StartClient()
|
||||||
|
}
|
||||||
|
|
||||||
|
if strings.Contains(message, "Error reading from server: read tcp") {
|
||||||
|
Log.Error("Disconnected from Telnet Server, reconnecting")
|
||||||
|
c.Close()
|
||||||
|
c.StartClient()
|
||||||
|
} else {
|
||||||
|
if c.LoggedIn && strings.Contains(message, "DX") {
|
||||||
|
ProcessTelnetSpot(spotRe, message, c.SpotChanToFlex, c.SpotChanToHTTPServer, c.Countries)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Send the spot message to TCP server
|
||||||
|
c.MsgChan <- message
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,14 +8,14 @@ sqlite:
|
|||||||
sqlite_path: 'C:\Perso\Seafile\Radio\Logs\Log4OM\F4BPO.SQLite' # SQLite Db oath of Log4OM
|
sqlite_path: 'C:\Perso\Seafile\Radio\Logs\Log4OM\F4BPO.SQLite' # SQLite Db oath of Log4OM
|
||||||
callsign: F4BPO # Log4OM Callsign used to check if you get spotted by someone
|
callsign: F4BPO # Log4OM Callsign used to check if you get spotted by someone
|
||||||
cluster:
|
cluster:
|
||||||
server: db0sue.de # dxc.k0xm.net
|
server: dxc.sm7iun.se # dxc.k0xm.net
|
||||||
port: 8000
|
port: 23
|
||||||
login: f4bpo
|
login: f4bpo
|
||||||
skimmer: true
|
skimmer: true
|
||||||
ft8: false
|
ft8: false
|
||||||
ft4: false
|
ft4: false
|
||||||
command: SET/NOFILTER
|
command: SET/NOFILTER
|
||||||
login_prompt: "login: "
|
login_prompt: "login:"
|
||||||
flex:
|
flex:
|
||||||
discovery: true # Radio must be on same LAN than the program
|
discovery: true # Radio must be on same LAN than the program
|
||||||
ip: 10.10.10.120 # if discovery is true no need to put an IP
|
ip: 10.10.10.120 # if discovery is true no need to put an IP
|
||||||
|
Loading…
x
Reference in New Issue
Block a user