James Lu
852bd74c3b
core: enumerate our server after calling proto.connect()
...
This gives protocol modules a chance to manipulate their SID before it's added to the internal server list, replacing hacks previously used by the Nefarious and Clientbot modules.
This is the first step to sid-less servers :)
2016-07-28 21:50:51 -07:00
James Lu
c410de2fad
Make server config validation protocol specific
...
Closes #282 .
2016-07-28 21:34:00 -07:00
James Lu
0e535a916c
Irc: rework TS handling again
2016-07-26 23:30:55 -07:00
James Lu
39675e15e8
Irc: use int values for ircmatch casemapping
...
The ircmatch version with casemapping variables hasn't been released on pip yet.
2016-07-23 21:51:26 -07:00
James Lu
c6fcdd854c
parseModes: give prefix modes precedence over mode types
2016-07-21 19:11:19 -07:00
James Lu
eef54cd77d
classes: Move ISUPPORT-style PREFIX and capabilities handling to Protocol
2016-07-20 23:59:22 -07:00
James Lu
de618393c0
Fix SQUIT handling from 2f1a338
2016-07-20 23:55:34 -07:00
James Lu
154421ffde
Move SQUIT abstraction into core
2016-07-20 23:55:34 -07:00
James Lu
1770058e1b
Move ts6_common.parseTS6Args to ts6_common.parsePrefixedArgs
2016-07-20 23:55:34 -07:00
James Lu
3381dda884
Throw specific errors for missing ircmatch/setuptools libraries
2016-07-19 17:44:22 -07:00
James Lu
51457f3550
Irc: treat unicode case sensitively in toLower()
2016-07-13 13:38:56 -07:00
James Lu
35a9d7ccba
Irc: move self.aborted.clear() to connect()
2016-07-13 00:38:19 -07:00
James Lu
58d71b0907
classes.Protocol: use a lock with updateTS to ensure thread-safety
...
Closes #274 .
2016-07-12 22:08:01 -07:00
James Lu
2a08ae98b0
Irc: consistently sort getPrefixModes output
2016-07-11 15:21:17 -07:00
James Lu
c1cd6f42a0
updateTS: Fix mode tracking again
...
It looks like we actually do need to track whether we're sending or receiving modes. This time, do so /properly/.
2016-07-10 21:36:18 -07:00
James Lu
50d30d4e20
Irc: implement exttarget inversion ( #170 )
2016-07-07 11:18:06 -07:00
James Lu
183a4cbd75
core: add extban support in matchHost, and $account matching ( #170 )
...
The following forms are supported in $account, with groups separated by a
literal colon. All account and network name matching is currently case sensitive:
$account -> Returns True (a match) if the target is registered.
$account:accountname -> Returns True if the target's account name matches the one given, and the target is connected to the local network..
$account:accountname:netname -> Returns True if both the target's account name and origin network name match the ones given.
$account:*:netname -> Matches all logged in users on the given network.
2016-07-07 00:26:52 -07:00
James Lu
d3877b0194
Irc: introduce matchHost() wrapper around ircmatch
...
This makes the latter a core dependency. Refactor changehost and opercmds plugins to take advantage of this new core function.
2016-07-06 23:11:36 -07:00
James Lu
e0f050c195
Irc: add getFriendlyName() abstraction
...
Closes #260 .
2016-07-06 22:30:21 -07:00
James Lu
f8ca65cabc
Irc: warn when applyModes target doesn't exist
...
This can happen when a network disconnects while spawnClient is setting modes on a newly spawned client, for example...
2016-07-05 00:42:00 -07:00
James Lu
72c48502c6
Generate __init__.py with package version on runtime
...
Closes #259 . This removes world.version and replaces it with pylinkirc.__version__ where the former was used.
2016-07-03 00:26:03 -07:00
James Lu
e63a1bc739
Irc: remove leading 'pylinkirc.protocols.' from protoname values
2016-07-03 00:12:23 -07:00
James Lu
cc40cacb7a
Irc.joinModes(): sort mode list before formatting
2016-06-30 19:52:06 -07:00
James Lu
1ac1e3eca6
Irc: fix wrong target for reply()
2016-06-30 18:36:40 -07:00
James Lu
02405c36b5
core, fantasy: redo handling of noticed and/or private replies
...
New behaviour for command responses in general: FANTASY commands reply in channel as PRIVMSG, while all commands sent in PM reply as private notices.
- The old irc.called_by is now irc.called_in (PLACE last command was called)
- irc.called_by is now used to store the CALLER of the last command
- notice=True/False toggle is dropped from ServiceBot.call_cmd()
- New private=True/False option added to ServiceBot.reply() and irc.reply(), which controls whether replies should be sent privately or not.
2016-06-30 18:22:45 -07:00
James Lu
e4b400042e
core: make maxnicklen optional, defaulting it to 30
2016-06-27 22:39:18 -07:00
James Lu
9374bccb6f
Merge remote-tracking branch 'origin/master' into devel
2016-06-27 21:47:55 -07:00
James Lu
0fbf9e165c
Irc: forcibly disable SSLv2 and SSLv3
2016-06-26 10:02:27 -07:00
James Lu
9d7fb4ed70
updateTS: fix typo in error message
2016-06-25 14:00:26 -07:00
James Lu
fbeb3a3747
protocols: fix ts actually defaulting to None in sjoin()
2016-06-25 13:56:24 -07:00
James Lu
9ea6769c54
parseModes: allow type str as modestring
2016-06-25 13:08:49 -07:00
James Lu
5e16eeea41
updateTS: skip applying modes if there aren't any
2016-06-25 12:54:56 -07:00
James Lu
f009a739bc
Merge remote-tracking branch 'origin/master' into devel
2016-06-25 11:36:55 -07:00
James Lu
51f1506f90
updateTS: remove mentions of 'outbound' variable from logging
2016-06-25 11:34:14 -07:00
James Lu
4c00479d78
Irc: lower ping frequency & timeout to 90/180
...
180*3 seconds is equivalent to 9 minutes. That's a long time for a dead network to stay connected.
2016-06-24 18:14:03 -07:00
James Lu
167963ddc4
updateTS: fix handling for outbound modes
...
Outgoing and incoming modes should be handled the same way - we're only dealing with a "received TS" which could originate from PyLink (sjoin() in protocols) OR the uplink.
2016-06-24 13:24:44 -07:00
James Lu
7f829ba0ec
updateTS: apply TS on channel regardless of whether mode changes pass
2016-06-24 13:15:26 -07:00
James Lu
f2b139c828
core: make inbound SJOINs also respect the updateTS() rules
2016-06-22 22:28:15 -07:00
James Lu
6b8e80cd5b
core/protocols: add modes option in sjoin(), TS6 BMASK, and mode TS rules in updateTS()
...
Closes #249 .
Closes #250 .
2016-06-22 21:34:16 -07:00
James Lu
dd08c01791
Irc: default pingTimer to None before starting connections
...
(cherry picked from commit 42ec6f2502
)
2016-06-21 20:34:48 -07:00
James Lu
42ec6f2502
Irc: default pingTimer to None before starting connections
2016-06-21 10:54:07 -07:00
James Lu
481d70eff8
New import paths for properly installed pylinkirc
2016-06-20 18:18:54 -07:00
James Lu
f555a484f9
Irc: unconditionally call disconnect() on errors or ping timeouts
...
This prevents duplicated ping timer threads from spawning, I think...
2016-06-15 10:55:47 -07:00
James Lu
b1a5f864d8
Irc: resolve hostnames when connecting
...
Cloeses #158 .
2016-06-11 11:29:11 -07:00
James Lu
eeca570cc4
classes: make pingfreq consistent, bump timeouts
2016-06-06 07:34:48 -07:00
James Lu
553415f6f7
classes: higher default pingfreq (90)
2016-05-25 16:19:35 -07:00
James Lu
2e1163fdb8
Irc: introduce isServiceBot checker
2016-05-14 16:17:12 -07:00
Daniel Oaks
c3e4cfa2de
games: Create BotClient class, use bot_clients instead of games_user
2016-05-14 14:53:19 -07:00
James Lu
32bc5f120b
core: migrate the main client to ServiceBot ( #216 )
...
- irc.spawnMain is dropped. Clients are now spawned in the endburst loop, after protocol negotiation completes. This allows PyLink to spawn clients with hideoper, etc., closing #194 .
- utils.add_cmd and irc.callCommand are now just wrappers around world.services['pylink'].add_cmd and call_cmd respectively.
- coreplugin registers the main client while it is loaded up, before any commands are added.
2016-05-14 13:29:23 -07:00
James Lu
9236f7e095
Irc: fix NameError caused by 0c7faed
2016-05-14 12:19:38 -07:00