3
0
mirror of https://github.com/ergochat/ergo.git synced 2024-11-13 23:49:30 +01:00

modes: Remove channel.Persist mode

It's broken anyways, and we'll be replacing it with our custom channel ownership stuff later.
This commit is contained in:
Daniel Oaks 2016-10-14 21:04:04 +10:00
parent 7b50f64d7e
commit 06028e0117
5 changed files with 7 additions and 76 deletions

View File

@ -12,13 +12,14 @@ Improved compatibility, more features, etc.
### Security ### Security
### Added ### Added
* Add integrated help. * Added integrated help.
* Support for IRCv3 capability [`account-notify`](http://ircv3.net/specs/extensions/account-notify-3.1.html) * Support for IRCv3 capability [`account-notify`](http://ircv3.net/specs/extensions/account-notify-3.1.html)
### Changed ### Changed
* Casemapping changed from custom unicode mapping to preliminary [rfc7700](https://github.com/ircv3/ircv3-specifications/pull/272) mapping. * Casemapping changed from custom unicode mapping to preliminary [rfc7700](https://github.com/ircv3/ircv3-specifications/pull/272) mapping.
### Removed ### Removed
* Removed channel persistence with the `+P` mode (not too useful as currently implemented, to be replaced later).
### Fixed ### Fixed

View File

@ -22,7 +22,6 @@ This project adheres to [Semantic Versioning](http://semver.org/). For the purpo
* IRC operators * IRC operators
* ident lookups for usernames * ident lookups for usernames
* passwords stored in [bcrypt][go-crypto] format * passwords stored in [bcrypt][go-crypto] format
* channels that persist between restarts (+P)
* client accounts and SASL * client accounts and SASL
* IRCv3 support * IRCv3 support

View File

@ -220,7 +220,7 @@ func (channel *Channel) Join(client *Client, key string) {
client.channels.Add(channel) client.channels.Add(channel)
channel.members.Add(client) channel.members.Add(client)
if !channel.flags[Persistent] && (len(channel.members) == 1) { if len(channel.members) == 1 {
channel.createdTime = time.Now() channel.createdTime = time.Now()
channel.members[client][ChannelFounder] = true channel.members[client][ChannelFounder] = true
channel.members[client][ChannelOperator] = true channel.members[client][ChannelOperator] = true
@ -284,8 +284,6 @@ func (channel *Channel) SetTopic(client *Client, topic string) {
for member := range channel.members { for member := range channel.members {
member.Send(nil, client.nickMaskString, "TOPIC", channel.name, channel.topic) member.Send(nil, client.nickMaskString, "TOPIC", channel.name, channel.topic)
} }
channel.Persist()
} }
func (channel *Channel) CanSpeak(client *Client) bool { func (channel *Channel) CanSpeak(client *Client) bool {
@ -424,34 +422,6 @@ func (channel *Channel) applyModeMask(client *Client, mode ChannelMode, op ModeO
return false return false
} }
func (channel *Channel) Persist() (err error) {
return
//TODO(dan): Fix persistence
/*
if channel.flags[Persistent] {
//TODO(dan): Save topicSetBy/topicSetTime and createdTime
_, err = channel.server.db.Exec(`
INSERT OR REPLACE INTO channel
(name, flags, key, topic, user_limit, ban_list, except_list,
invite_list)
VALUES (?, ?, ?, ?, ?, ?, ?, ?)`,
channel.name.String(), channel.flags.String(), channel.key,
channel.topic, channel.userLimit, channel.lists[BanMask].String(),
channel.lists[ExceptMask].String(), channel.lists[InviteMask].String())
} else {
_, err = channel.server.db.Exec(`
DELETE FROM channel WHERE name = ?`, channel.name.String())
}
if err != nil {
Log.error.Println("Channel.Persist:", channel, err)
}
return
*/
}
func (channel *Channel) Notice(client *Client, message string) { func (channel *Channel) Notice(client *Client, message string) {
if !channel.CanSpeak(client) { if !channel.CanSpeak(client) {
client.Send(nil, client.server.name, ERR_CANNOTSENDTOCHAN, channel.name, "Cannot send to channel") client.Send(nil, client.server.name, ERR_CANNOTSENDTOCHAN, channel.name, "Cannot send to channel")
@ -469,7 +439,7 @@ func (channel *Channel) Quit(client *Client) {
channel.members.Remove(client) channel.members.Remove(client)
client.channels.Remove(channel) client.channels.Remove(channel)
if !channel.flags[Persistent] && channel.IsEmpty() { if channel.IsEmpty() {
channel.server.channels.Remove(channel) channel.server.channels.Remove(channel)
} }
} }
@ -511,7 +481,6 @@ func (channel *Channel) Invite(invitee *Client, inviter *Client) {
if channel.flags[InviteOnly] { if channel.flags[InviteOnly] {
channel.lists[InviteMask].Add(invitee.UserHost()) channel.lists[InviteMask].Add(invitee.UserHost())
channel.Persist()
} }
//TODO(dan): should inviter.server.name here be inviter.nickMaskString ? //TODO(dan): should inviter.server.name here be inviter.nickMaskString ?

View File

@ -170,7 +170,6 @@ const (
Moderated ChannelMode = 'm' // flag Moderated ChannelMode = 'm' // flag
NoOutside ChannelMode = 'n' // flag NoOutside ChannelMode = 'n' // flag
OpOnlyTopic ChannelMode = 't' // flag OpOnlyTopic ChannelMode = 't' // flag
Persistent ChannelMode = 'P' // flag
Secret ChannelMode = 's' // flag Secret ChannelMode = 's' // flag
UserLimit ChannelMode = 'l' // flag arg UserLimit ChannelMode = 'l' // flag arg
) )
@ -178,7 +177,7 @@ const (
var ( var (
SupportedChannelModes = ChannelModes{ SupportedChannelModes = ChannelModes{
BanMask, ExceptMask, InviteMask, InviteOnly, Key, NoOutside, BanMask, ExceptMask, InviteMask, InviteOnly, Key, NoOutside,
OpOnlyTopic, Persistent, Secret, UserLimit, OpOnlyTopic, Secret, UserLimit,
} }
// supportedChannelModesString acts as a cache for when we introduce users // supportedChannelModesString acts as a cache for when we introduce users
supportedChannelModesString = SupportedChannelModes.String() supportedChannelModesString = SupportedChannelModes.String()
@ -429,7 +428,7 @@ func cmodeHandler(server *Server, client *Client, msg ircmsg.IrcMessage) bool {
} }
applied = append(applied, change) applied = append(applied, change)
case InviteOnly, Moderated, NoOutside, OpOnlyTopic, Persistent, Secret: case InviteOnly, Moderated, NoOutside, OpOnlyTopic, Secret:
switch change.op { switch change.op {
case Add: case Add:
if channel.flags[change.mode] { if channel.flags[change.mode] {

View File

@ -154,8 +154,6 @@ func NewServer(config *Config) *Server {
server.password = config.Server.PasswordBytes() server.password = config.Server.PasswordBytes()
} }
server.loadChannels()
for _, addr := range config.Server.Listen { for _, addr := range config.Server.Listen {
server.listen(addr, config.TLSListeners()) server.listen(addr, config.TLSListeners())
} }
@ -175,7 +173,7 @@ func NewServer(config *Config) *Server {
server.isupport = NewISupportList() server.isupport = NewISupportList()
server.isupport.Add("AWAYLEN", strconv.Itoa(server.limits.AwayLen)) server.isupport.Add("AWAYLEN", strconv.Itoa(server.limits.AwayLen))
server.isupport.Add("CASEMAPPING", "rfc7700") server.isupport.Add("CASEMAPPING", "rfc7700")
server.isupport.Add("CHANMODES", strings.Join([]string{ChannelModes{BanMask, ExceptMask, InviteMask}.String(), "", ChannelModes{UserLimit, Key}.String(), ChannelModes{InviteOnly, Moderated, NoOutside, OpOnlyTopic, Persistent, Secret}.String()}, ",")) server.isupport.Add("CHANMODES", strings.Join([]string{ChannelModes{BanMask, ExceptMask, InviteMask}.String(), "", ChannelModes{UserLimit, Key}.String(), ChannelModes{InviteOnly, Moderated, NoOutside, OpOnlyTopic, Secret}.String()}, ","))
server.isupport.Add("CHANNELLEN", strconv.Itoa(config.Limits.ChannelLen)) server.isupport.Add("CHANNELLEN", strconv.Itoa(config.Limits.ChannelLen))
server.isupport.Add("CHANTYPES", "#") server.isupport.Add("CHANTYPES", "#")
server.isupport.Add("EXCEPTS", "") server.isupport.Add("EXCEPTS", "")
@ -217,41 +215,6 @@ func loadChannelList(channel *Channel, list string, maskMode ChannelMode) {
channel.lists[maskMode].AddAll(strings.Split(list, " ")) channel.lists[maskMode].AddAll(strings.Split(list, " "))
} }
func (server *Server) loadChannels() {
//TODO(dan): Fix channel persistence
/*
rows, err := server.db.Query(`
SELECT name, flags, key, topic, user_limit, ban_list, except_list,
invite_list
FROM channel`)
if err != nil {
log.Fatal("error loading channels: ", err)
}
for rows.Next() {
var name, flags, key, topic string
var userLimit uint64
var banList, exceptList, inviteList string
err = rows.Scan(&name, &flags, &key, &topic, &userLimit, &banList,
&exceptList, &inviteList)
if err != nil {
log.Println("Server.loadChannels:", err)
continue
}
channel := NewChannel(server, NewName(name), false)
for _, flag := range flags {
channel.flags[ChannelMode(flag)] = true
}
channel.key = key
channel.topic = topic
channel.userLimit = userLimit
loadChannelList(channel, banList, BanMask)
loadChannelList(channel, exceptList, ExceptMask)
loadChannelList(channel, inviteList, InviteMask)
}
*/
}
func (server *Server) Shutdown() { func (server *Server) Shutdown() {
//TODO(dan): Make sure we disallow new nicks //TODO(dan): Make sure we disallow new nicks
for _, client := range server.clients.byNick { for _, client := range server.clients.byNick {