goircd requires only standard Go's libraries and consists of single main
-package. You can install it using either:
+package. You can install it like that:
- % go get github.com/stargrave/goircd
- % go install github.com/stargrave/goircd
+ % git clone https://github.com/stargrave/goircd.git
+ % gmake -C goircd
-or if you are already inside goircd directory:
-
- % go install
-
-You should found goircd executable binary in your $GOPATH/bin/goircd.
Just run it with -help argument to see available options.
+++ /dev/null
-LDFLAGS="-X main.version \"$(shell git describe --tags)\""
-
-goircd:
- go install -ldflags $(LDFLAGS) $(BUILD_FLAGS)
goircd -- minimalistic simple Internet Relay Chat (IRC) server
==============================================================
-SYNOPSIS
-
-goircd is very simple IRC server, written on Go.
-
DESCRIPTION
goircd is very simple IRC server, written on Go.
* It can not connect to other servers. Just standalone installation
* It has few basic IRC commands
* There is no support for channel operators, modes, votes, invites
- and so on
* No ident lookups, reverse DNS queries
But it has some convincing features:
* Optional permanent channel's state saving in plain text files
(so you can reload daemon and all channels topics and keys won't
disappear)
-* Optional ability to authenticate users by nickname↔password
+* Optional ability to authenticate users by nickname and password
Some remarks and recommendations related to it's simplicity:
/*
goircd -- minimalistic simple Internet Relay Chat (IRC) server
-Copyright (C) 2014 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2014-2015 Sergey Matveev <stargrave@stargrave.org>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+
package main
import (
/*
goircd -- minimalistic simple Internet Relay Chat (IRC) server
-Copyright (C) 2014 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2014-2015 Sergey Matveev <stargrave@stargrave.org>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+
package main
import (
/*
goircd -- minimalistic simple Internet Relay Chat (IRC) server
-Copyright (C) 2014 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2014-2015 Sergey Matveev <stargrave@stargrave.org>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+
package main
import (
)
const (
- PingTimeout = time.Second * 180 // Max time deadline for client's unresponsiveness
- PingThreshold = time.Second * 90 // Max idle client's time before PING are sent
- AlivenessCheck = time.Second * 10 // Client's aliveness check period
+ // Max time deadline for client's unresponsiveness
+ PingTimeout = time.Second * 180
+ // Max idle client's time before PING are sent
+ PingThreshold = time.Second * 90
+ // Client's aliveness check period
+ AlivenessCheck = time.Second * 10
)
var (
}
func NewDaemon(version string, hostname, motd, passwords *string, logSink chan<- LogEvent, stateSink chan<- StateEvent) *Daemon {
- daemon := Daemon{version: version, hostname: hostname, motd: motd, passwords: passwords}
+ daemon := Daemon{
+ version: version,
+ hostname: hostname,
+ motd: motd,
+ passwords: passwords,
+ }
daemon.clients = make(map[*Client]bool)
daemon.clientAliveness = make(map[*Client]*ClientAlivenessState)
daemon.rooms = make(map[string]*Room)
switch event.eventType {
case EventNew:
daemon.clients[client] = true
- daemon.clientAliveness[client] = &ClientAlivenessState{pingSent: false, timestamp: now}
+ daemon.clientAliveness[client] = &ClientAlivenessState{
+ pingSent: false,
+ timestamp: now,
+ }
case EventDel:
delete(daemon.clients, client)
delete(daemon.clientAliveness, client)
if !found {
client.ReplyNoNickChan(target)
}
- daemon.roomSinks[r] <- ClientEvent{client, EventMsg, command + " " + strings.TrimLeft(cols[1], ":")}
+ daemon.roomSinks[r] <- ClientEvent{
+ client,
+ EventMsg,
+ command + " " + strings.TrimLeft(cols[1], ":"),
+ }
case "TOPIC":
if len(cols) == 1 {
client.ReplyNotEnoughParameters("TOPIC")
/*
goircd -- minimalistic simple Internet Relay Chat (IRC) server
-Copyright (C) 2014 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2014-2015 Sergey Matveev <stargrave@stargrave.org>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+
package main
import (
/*
goircd -- minimalistic simple Internet Relay Chat (IRC) server
-Copyright (C) 2014 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2014-2015 Sergey Matveev <stargrave@stargrave.org>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+
package main
import (
/*
goircd -- minimalistic simple Internet Relay Chat (IRC) server
-Copyright (C) 2014 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2014-2015 Sergey Matveev <stargrave@stargrave.org>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+
package main
import (
--- /dev/null
+LDFLAGS=-X main.version \"$(shell git describe --tags)\"
+
+goircd:
+ go build -ldflags "$(LDFLAGS)" $(BUILD_FLAGS)
/*
goircd -- minimalistic simple Internet Relay Chat (IRC) server
-Copyright (C) 2014 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2014-2015 Sergey Matveev <stargrave@stargrave.org>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+
package main
import (