Capabilities command and documentation update.
This commit is contained in:
parent
5452ea5b1a
commit
4e614c094e
44
commands/capabilities/exported.go
Normal file
44
commands/capabilities/exported.go
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
package capabilities
|
||||||
|
|
||||||
|
import (
|
||||||
|
// stdlib
|
||||||
|
"log"
|
||||||
|
|
||||||
|
// local
|
||||||
|
"develop.pztrn.name/gonews/gonews/eventer"
|
||||||
|
"develop.pztrn.name/gonews/gonews/networker"
|
||||||
|
)
|
||||||
|
|
||||||
|
var capabilities = []string{
|
||||||
|
"VERSION 2",
|
||||||
|
}
|
||||||
|
|
||||||
|
func Initialize() {
|
||||||
|
log.Println("Initializing capabilities command...")
|
||||||
|
|
||||||
|
eventer.AddEventHandler(&eventer.EventHandler{
|
||||||
|
Command: "internal/capability_add",
|
||||||
|
Handler: addCapability,
|
||||||
|
})
|
||||||
|
|
||||||
|
eventer.AddEventHandler(&eventer.EventHandler{
|
||||||
|
Command: "commands/capabilities",
|
||||||
|
Handler: handler,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func addCapability(data interface{}) interface{} {
|
||||||
|
capabilities = append(capabilities, data.(string))
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func handler(data interface{}) interface{} {
|
||||||
|
dataToReturn := "Capability list:\r\n"
|
||||||
|
|
||||||
|
for _, cap := range capabilities {
|
||||||
|
dataToReturn += cap + "\r\n"
|
||||||
|
}
|
||||||
|
dataToReturn += ".\r\n"
|
||||||
|
return &networker.Reply{Code: "101", Data: dataToReturn}
|
||||||
|
}
|
@ -5,6 +5,7 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
|
|
||||||
// local
|
// local
|
||||||
|
"develop.pztrn.name/gonews/gonews/commands/capabilities"
|
||||||
"develop.pztrn.name/gonews/gonews/commands/greeting"
|
"develop.pztrn.name/gonews/gonews/commands/greeting"
|
||||||
"develop.pztrn.name/gonews/gonews/commands/quit"
|
"develop.pztrn.name/gonews/gonews/commands/quit"
|
||||||
)
|
)
|
||||||
@ -14,4 +15,5 @@ func Initialize() {
|
|||||||
|
|
||||||
greeting.Initialize()
|
greeting.Initialize()
|
||||||
quit.Initialize()
|
quit.Initialize()
|
||||||
|
capabilities.Initialize()
|
||||||
}
|
}
|
||||||
|
@ -13,10 +13,10 @@ This document will be updated with new RFCs data in process of development.
|
|||||||
RFC3977:
|
RFC3977:
|
||||||
|
|
||||||
* [ ] Connection handling ([section 5](https://tools.ietf.org/html/rfc3977#section-5)):
|
* [ ] Connection handling ([section 5](https://tools.ietf.org/html/rfc3977#section-5)):
|
||||||
* [ ] Concurrent connection handling
|
* [x] Concurrent connection handling
|
||||||
* [ ] CAPABILITIES command ([section 5.2](https://tools.ietf.org/html/rfc3977#section-5.2))
|
* [x] CAPABILITIES command ([section 5.2](https://tools.ietf.org/html/rfc3977#section-5.2))
|
||||||
* [ ] MODE command ([section 5.3](https://tools.ietf.org/html/rfc3977#section-5.3))
|
* [ ] MODE command ([section 5.3](https://tools.ietf.org/html/rfc3977#section-5.3))
|
||||||
* [ ] QUIT command ([section 5.4](https://tools.ietf.org/html/rfc3977#section-5.4))
|
* [x] QUIT command ([section 5.4](https://tools.ietf.org/html/rfc3977#section-5.4))
|
||||||
* [ ] Article retrieval and posting, working with groups ([section 6](https://tools.ietf.org/html/rfc3977#section-6)):
|
* [ ] Article retrieval and posting, working with groups ([section 6](https://tools.ietf.org/html/rfc3977#section-6)):
|
||||||
* [ ] Group selection and information retrieval ([section 6.1.1](https://tools.ietf.org/html/rfc3977#section-6.1.1))
|
* [ ] Group selection and information retrieval ([section 6.1.1](https://tools.ietf.org/html/rfc3977#section-6.1.1))
|
||||||
* [ ] Group selection and information retrieval with articles numbers ([section 6.1.2](https://tools.ietf.org/html/rfc3977#section-6.1.2))
|
* [ ] Group selection and information retrieval with articles numbers ([section 6.1.2](https://tools.ietf.org/html/rfc3977#section-6.1.2))
|
||||||
|
@ -57,7 +57,7 @@ func connectionWorker(conn net.Conn) {
|
|||||||
// ToDo: what if we'll upload binary data here?
|
// ToDo: what if we'll upload binary data here?
|
||||||
// Not supported yet.
|
// Not supported yet.
|
||||||
data := strings.Split(scanr.Text(), " ")
|
data := strings.Split(scanr.Text(), " ")
|
||||||
replyRaw, err := eventer.LaunchEvent("commands/"+data[0], data[1:])
|
replyRaw, err := eventer.LaunchEvent("commands/"+strings.ToLower(data[0]), data[1:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// We won't break here as this is just logging of appeared error.
|
// We won't break here as this is just logging of appeared error.
|
||||||
log.Println("Error appeared while processing command '" + data[0] + "' for " + remoteAddr.String() + ": " + err.Error())
|
log.Println("Error appeared while processing command '" + data[0] + "' for " + remoteAddr.String() + ": " + err.Error())
|
||||||
|
Loading…
Reference in New Issue
Block a user