hid: add support for customized replies
This commit is contained in:
parent
4d8376fd3c
commit
4cd460886e
46
hid/main.go
46
hid/main.go
|
@ -1081,8 +1081,10 @@ func (c *client) setPingTimer() {
|
||||||
|
|
||||||
func (c *client) makeReply(id int, ap ...interface{}) string {
|
func (c *client) makeReply(id int, ap ...interface{}) string {
|
||||||
s := fmt.Sprintf(":%s %03d %s ", serverName, id, c.nicknameOrStar())
|
s := fmt.Sprintf(":%s %03d %s ", serverName, id, c.nicknameOrStar())
|
||||||
a := fmt.Sprintf(defaultReplies[id], ap...)
|
if reply, ok := catalog[id]; ok {
|
||||||
return s + a
|
return s + fmt.Sprintf(reply, ap...)
|
||||||
|
}
|
||||||
|
return s + fmt.Sprintf(defaultReplies[id], ap...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// XXX: This way simple static analysis cannot typecheck the arguments, so we
|
// XXX: This way simple static analysis cannot typecheck the arguments, so we
|
||||||
|
@ -3150,9 +3152,43 @@ func ircInitializeTLS() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func ircInitializeCatalog() error {
|
func ircInitializeCatalog() error {
|
||||||
// TODO: Not going to use catgets but a simple text file with basic
|
configCatalog := config["catalog"]
|
||||||
// checking whether the index is used by this daemon at all should do.
|
if configCatalog == "" {
|
||||||
return nil
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
path := resolveFilename(configCatalog, resolveRelativeConfigFilename)
|
||||||
|
if path == "" {
|
||||||
|
return fmt.Errorf("cannot find file: %s", configCatalog)
|
||||||
|
}
|
||||||
|
|
||||||
|
f, err := os.Open(path)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed reading the MOTD file: %s", err)
|
||||||
|
}
|
||||||
|
defer f.Close()
|
||||||
|
|
||||||
|
scanner := bufio.NewScanner(f)
|
||||||
|
catalog = make(map[int]string)
|
||||||
|
for lineNo := 1; scanner.Scan(); lineNo++ {
|
||||||
|
line := strings.TrimLeft(scanner.Text(), " \t")
|
||||||
|
if line == "" || strings.HasPrefix(line, "#") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
delim := strings.IndexAny(line, " \t")
|
||||||
|
if delim < 0 {
|
||||||
|
return fmt.Errorf("%s:%d: malformed line", path, lineNo)
|
||||||
|
}
|
||||||
|
|
||||||
|
id, err := strconv.ParseUint(line[:delim], 10, 16)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("%s:%d: %s", path, lineNo, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
catalog[int(id)] = line[delim+1:]
|
||||||
|
}
|
||||||
|
return scanner.Err()
|
||||||
}
|
}
|
||||||
|
|
||||||
func ircInitializeMOTD() error {
|
func ircInitializeMOTD() error {
|
||||||
|
|
Loading…
Reference in New Issue