latest, needs adjustment for server responses
This commit is contained in:
parent
e1fc2f11d7
commit
65a8d8d082
31
main.go
31
main.go
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue