latest, needs adjustment for server responses

This commit is contained in:
Jeffrey Paul 2019-08-21 21:07:47 +02:00
parent e1fc2f11d7
commit 65a8d8d082
3 changed files with 231 additions and 17 deletions

31
main.go
View File

@ -13,7 +13,6 @@ var Buildarch string
func main() {
c := viper.New()
// default config variables
c.SetDefault("myhostname", "irc.example.com")
@ -35,24 +34,24 @@ func main() {
panic(fmt.Errorf("Fatal error config file: %s \n", err))
}
// this is the only config settable by env var by design
// do everything else in the config file
if os.Getenv("DEBUG") != "" {
c.Set("loglevel", "debug")
}
// this is the only config settable by env var by design
// do everything else in the config file
if os.Getenv("DEBUG") != "" {
c.Set("loglevel", "debug")
}
// set up logging
log := logrus.New()
log.SetReportCaller(false)
switch c.GetString("loglevel") {
case "error":
log.SetLevel(logrus.ErrorLevel)
case "info":
log.SetLevel(logrus.InfoLevel)
default:
log.SetLevel(logrus.DebugLevel)
log.SetReportCaller(true)
}
log.SetReportCaller(false)
switch c.GetString("loglevel") {
case "error":
log.SetLevel(logrus.ErrorLevel)
case "info":
log.SetLevel(logrus.InfoLevel)
default:
log.SetLevel(logrus.DebugLevel)
log.SetReportCaller(true)
}
// instantiate server
s := sircd.New(c)
// give it our logger

208
sircd/responses.go Normal file
View File

@ -0,0 +1,208 @@
package sircd
import log "github.com/sirupsen/logrus"
type ircServerResponse struct {
code uint16
symbol string
longtext string
params *[]string
}
func NewIrcServerResponse(code uint16, params *[]string) {
codes := ircResponseCodes()
r := new(ircServerResponse)
r.code = code
r.symbol = (*codes)[code]
r.params = params
}
func ircResponseCodes() *map[uint16]string {
responseCodeList := map[uint16]string{
1: "RPL_WELCOME",
2: "RPL_YOURHOST",
3: "RPL_CREATED",
4: "RPL_MYINFO",
5: "RPL_ISUPPORT",
10: "RPL_BOUNCE",
15: "RPL_MAP",
17: "RPL_MAPEND",
18: "RPL_MAPSTART",
20: "RPL_HELLO",
42: "RPL_YOURID",
43: "RPL_SAVENICK",
200: "RPL_TRACELINK",
201: "RPL_TRACECONNECTING",
202: "RPL_TRACEHANDSHAKE",
203: "RPL_TRACEUNKNOWN",
204: "RPL_TRACEOPERATOR",
205: "RPL_TRACEUSER",
206: "RPL_TRACESERVER",
207: "RPL_TRACESERVICE",
208: "RPL_TRACENEWTYPE",
209: "RPL_TRACECLASS",
211: "RPL_STATSLINKINFO",
212: "RPL_STATSCOMMANDS",
213: "RPL_STATSCLINE",
214: "RPL_STATSNLINE",
215: "RPL_STATSILINE",
216: "RPL_STATSKLINE",
217: "RPL_STATSQLINE",
218: "RPL_STATSYLINE",
219: "RPL_ENDOFSTATS",
221: "RPL_UMODEIS",
231: "RPL_SERVICEINFO",
232: "RPL_ENDOFSERVICES",
233: "RPL_SERVICE",
234: "RPL_SERVLIST",
235: "RPL_SERVLISTEND",
239: "RPL_STATSIAUTH",
240: "RPL_STATSVLINE",
241: "RPL_STATSLLINE",
242: "RPL_STATSUPTIME",
243: "RPL_STATSOLINE",
244: "RPL_STATSHLINE",
245: "RPL_STATSSLINE",
246: "RPL_STATSPING",
247: "RPL_STATSBLINE",
248: "RPL_STATSDEFINE",
249: "RPL_STATSDEBUG",
250: "RPL_STATSDLINE",
251: "RPL_LUSERCLIENT",
252: "RPL_LUSEROP",
253: "RPL_LUSERUNKNOWN",
254: "RPL_LUSERCHANNELS",
255: "RPL_LUSERME",
256: "RPL_ADMINME",
257: "RPL_ADMINLOC1",
258: "RPL_ADMINLOC2",
259: "RPL_ADMINEMAIL",
261: "RPL_TRACELOG",
262: "RPL_TRACEEND",
263: "RPL_TRYAGAIN",
265: "RPL_LOCALUSERS",
266: "RPL_GLOBALUSERS",
300: "RPL_NONE",
301: "RPL_AWAY",
302: "RPL_USERHOST",
303: "RPL_ISON",
304: "RPL_TEXT",
305: "RPL_UNAWAY",
306: "RPL_NOWAWAY",
311: "RPL_WHOISUSER",
312: "RPL_WHOISSERVER",
313: "RPL_WHOISOPERATOR",
314: "RPL_WHOWASUSER",
315: "RPL_ENDOFWHO",
316: "RPL_WHOISCHANOP",
317: "RPL_WHOISIDLE",
318: "RPL_ENDOFWHOIS",
319: "RPL_WHOISCHANNELS",
321: "RPL_LISTSTART",
322: "RPL_LIST",
323: "RPL_LISTEND",
324: "RPL_CHANNELMODEIS",
325: "RPL_UNIQOPIS",
331: "RPL_NOTOPIC",
332: "RPL_TOPIC",
333: "RPL_TOPIC_WHO_TIME",
341: "RPL_INVITING",
342: "RPL_SUMMONING",
344: "RPL_REOPLIST",
345: "RPL_ENDOFREOPLIST",
346: "RPL_INVITELIST",
347: "RPL_ENDOFINVITELIST",
348: "RPL_EXCEPTLIST",
349: "RPL_ENDOFEXCEPTLIST",
351: "RPL_VERSION",
352: "RPL_WHOREPLY",
353: "RPL_NAMREPLY",
361: "RPL_KILLDONE",
362: "RPL_CLOSING",
363: "RPL_CLOSEEND",
364: "RPL_LINKS",
365: "RPL_ENDOFLINKS",
366: "RPL_ENDOFNAMES",
367: "RPL_BANLIST",
368: "RPL_ENDOFBANLIST",
369: "RPL_ENDOFWHOWAS",
371: "RPL_INFO",
372: "RPL_MOTD",
373: "RPL_INFOSTART",
374: "RPL_ENDOFINFO",
375: "RPL_MOTDSTART",
376: "RPL_ENDOFMOTD",
381: "RPL_YOUREOPER",
382: "RPL_REHASHING",
383: "RPL_YOURESERVICE",
384: "RPL_MYPORTIS",
385: "RPL_NOTOPERANYMORE",
391: "RPL_TIME",
392: "RPL_USERSSTART",
393: "RPL_USERS",
394: "RPL_ENDOFUSERS",
395: "RPL_NOUSERS",
401: "ERR_NOSUCHNICK",
402: "ERR_NOSUCHSERVER",
403: "ERR_NOSUCHCHANNEL",
404: "ERR_CANNOTSENDTOCHAN",
405: "ERR_TOOMANYCHANNELS",
406: "ERR_WASNOSUCHNICK",
407: "ERR_TOOMANYTARGETS",
408: "ERR_NOSUCHSERVICE",
409: "ERR_NOORIGIN",
411: "ERR_NORECIPIENT",
412: "ERR_NOTEXTTOSEND",
413: "ERR_NOTOPLEVEL",
414: "ERR_WILDTOPLEVEL",
415: "ERR_BADMASK",
416: "ERR_TOOMANYMATCHES",
421: "ERR_UNKNOWNCOMMAND",
422: "ERR_NOMOTD",
423: "ERR_NOADMININFO",
424: "ERR_FILEERROR",
431: "ERR_NONICKNAMEGIVEN",
432: "ERR_ERRONEOUSNICKNAME",
433: "ERR_NICKNAMEINUSE",
434: "ERR_SERVICENAMEINUSE",
435: "ERR_SERVICECONFUSED",
436: "ERR_NICKCOLLISION",
437: "ERR_UNAVAILRESOURCE",
441: "ERR_USERNOTINCHANNEL",
442: "ERR_NOTONCHANNEL",
443: "ERR_USERONCHANNEL",
444: "ERR_NOLOGIN",
445: "ERR_SUMMONDISABLED",
446: "ERR_USERSDISABLED",
451: "ERR_NOTREGISTERED",
461: "ERR_NEEDMOREPARAMS",
462: "ERR_ALREADYREGISTRED",
463: "ERR_NOPERMFORHOST",
464: "ERR_PASSWDMISMATCH",
465: "ERR_YOUREBANNEDCREEP",
466: "ERR_YOUWILLBEBANNED",
467: "ERR_KEYSET",
471: "ERR_CHANNELISFULL",
472: "ERR_UNKNOWNMODE",
473: "ERR_INVITEONLYCHAN",
474: "ERR_BANNEDFROMCHAN",
475: "ERR_BADCHANNELKEY",
476: "ERR_BADCHANMASK",
477: "ERR_NOCHANMODES",
478: "ERR_BANLISTFULL",
481: "ERR_NOPRIVILEGES",
482: "ERR_CHANOPRIVSNEEDED",
483: "ERR_CANTKILLSERVER",
484: "ERR_RESTRICTED",
485: "ERR_UNIQOPRIVSNEEDED",
491: "ERR_NOOPERHOST",
492: "ERR_NOSERVICEHOST",
499: "ERR_STATSKLINE",
501: "ERR_UMODEUNKNOWNFLAG",
502: "ERR_USERSDONTMATCH",
708: "RPL_ETRACEFULL",
759: "RPL_ETRACEEND",
}
log.Fatalf("%+v", responseCodeList)
return &responseCodeList
}

View File

@ -19,6 +19,7 @@ type ircd struct {
c *viper.Viper
}
// FIXME pull these from the config
const (
CONN_HOST = "localhost"
CONN_PORT = "6667"
@ -43,7 +44,13 @@ func (s *ircd) SetServerName(name string) {
}
func (s *ircd) Start() {
s.log.Infof("sircd version %s (%s) built %s by %s starting.", s.c.GetString("version"), s.c.GetString("buildarch"), s.c.GetString("buildtime"), s.c.GetString("builduser"))
s.log.Infof(
"sircd version %s (%s) built %s by %s starting.",
s.c.GetString("version"),
s.c.GetString("buildarch"),
s.c.GetString("buildtime"),
s.c.GetString("builduser"),
)
s.newClients = make(chan *ircClient, 128)
s.deadClients = make(chan *ircClient, 128)
s.messageQueue = make(chan *ircMessage, 128)