Commit Graph

461 Commits

Author SHA1 Message Date
Daniel Oaks 0087de6092 client: Add AWAYLEN 2016-09-12 12:40:09 +10:00
Daniel Oaks bc42960552 strings: Remove CTCP stuff, unused 2016-09-12 12:33:37 +10:00
Daniel Oaks 266c534af9 theater: Remove THEATER command for now 2016-09-12 12:31:25 +10:00
Daniel Oaks 79d831bbb7 channel: Add KICKLEN and TOPICLEN 2016-09-12 12:22:50 +10:00
Daniel Oaks 3321243486 server: Add away-notify capability 2016-09-12 11:56:20 +10:00
Daniel Oaks 754b74c21c accounts: Add account-tag capability 2016-09-12 11:25:31 +10:00
Daniel Oaks c2aa31001a client: Fix initial RPL_UMODEIS 2016-09-07 21:50:42 +10:00
Daniel Oaks 220bc2c609 server-time: Fix time format 2016-09-07 21:48:03 +10:00
Daniel Oaks b5e7d8968f accounts: Add SASL EXTERNAL handler 2016-09-07 21:32:58 +10:00
Daniel Oaks 70665850aa accounts: Add SASL PLAIN handler 2016-09-07 20:46:01 +10:00
Daniel Oaks 1679bc9ac2 accounts: Add initial SASL handler, still need to write mechanism handlers 2016-09-06 16:31:59 +10:00
Daniel Oaks 5d6b4127ff registration: Fix comment 2016-09-05 23:00:21 +10:00
Daniel Oaks e3fbdebc48 registration: Hook up reg to actual accounts 2016-09-05 22:54:09 +10:00
Daniel Oaks 5269dc8776 accounts: Very roughly introduce account type 2016-09-05 22:35:13 +10:00
Daniel Oaks 739f8d71d2 server: Close db and store more properly 2016-09-05 22:14:20 +10:00
Daniel Oaks 90d5f7d6a2 registration: Very initial, very skodgy 'working' account reg 2016-09-05 19:43:32 +10:00
Daniel Oaks 4cb196f50a server: Close store properly, on shutdown 2016-09-05 19:39:16 +10:00
Daniel Oaks 6e96a175d6 registration: Add new password manager, integrate registration and credential types 2016-09-05 18:45:42 +10:00
Daniel Oaks 68c83a95d4 WHOIS: Fixes, add certfp 2016-09-05 14:23:57 +10:00
Daniel Oaks 49034cb20e certfp: Add certfp retrieval from client 2016-09-05 13:53:39 +10:00
Daniel Oaks d3d88cfa0c registration: Move REG CREATE to its' own function 2016-09-04 21:42:19 +10:00
Daniel Oaks 6e9722dee5 accounts: Rename some args, check credential type 2016-09-04 21:15:28 +10:00
Daniel Oaks e7fced804e accounts: Fix broken numeric, write more framework for reg 2016-09-04 20:08:53 +10:00
Daniel Oaks e4b6c1852b accounts: Add very initial, extremely broken account work (not including config changes) 2016-09-04 19:25:33 +10:00
Daniel Oaks 1746be2bb8 db: Add very initial buntdb datastore 2016-08-19 23:21:52 +10:00
Daniel Oaks 2ab8d4cb6e names: Allow more characters in channel names -- from jlatt/ergonomadic#39 <3 2016-08-14 14:15:31 +10:00
Daniel Oaks a177ca36b1 server: Add some comments and clean up a bit -- from jlatt/ergonomadic#39 <3 2016-08-14 14:13:01 +10:00
Daniel Oaks 43553390d6 WHOWAS: Make maximum number of entries configurable 2016-08-14 14:07:50 +10:00
Daniel Oaks 6e66c5c8a7 channel: Prevent duping error code in channel.Persist -- from jlatt/ergonomadic#39 <3 2016-08-14 13:34:24 +10:00
Daniel Oaks e33a810522 capability: Add extended-join and userhost-in-names 2016-08-14 11:59:33 +10:00
Daniel Oaks ef592d160c capability: Add server-time 2016-08-13 22:04:21 +10:00
Daniel Oaks e04ef1ca11 NICK: Fix setting nicks after registration 2016-08-13 20:54:15 +10:00
Daniel Oaks 842f0d05ab strings: Only allow # channels, since we only implement those 2016-08-13 20:53:56 +10:00
Daniel Oaks 5a8e7709b2 strings: Disallow more broken nicknames 2016-08-13 20:53:23 +10:00
Daniel Oaks 1b67af7e85 strings: Also explicitly disallow . in nicknames 2016-08-12 23:38:19 +10:00
Daniel Oaks 9d853d5be7 strings: Don't allow nicks to start with dashes or 0-9 2016-08-12 23:33:44 +10:00
Daniel Oaks 5e55e35774 OPER: Fix sent MODE string 2016-08-12 22:26:45 +10:00
Daniel Oaks a5911ad14c server: Add configurable NICKLEN and CHANNELLEN 2016-08-12 22:20:32 +10:00
Daniel Oaks d810033a02 client: Timeout ident more nicely 2016-07-02 19:12:00 +10:00
Daniel Oaks 199f8bd8ae USER: disallow usernames that break the protocol 2016-06-30 23:55:44 +10:00
Daniel Oaks 19c2bb69fc Allow looking up usernames with ident on connection 2016-06-30 19:28:34 +10:00
Daniel Oaks 1d51bb450a constants: Make SEM_VER the actual version number conforming to Semantec Versioning, and VER the composed number 2016-06-30 17:42:24 +10:00
Daniel Oaks 748bc759cb Cleanups reported by goreportcard 2016-06-30 15:43:27 +10:00
Daniel Oaks 5d3b185881 client: Use more accurate QUIT message for ping timeouts 2016-06-30 15:35:34 +10:00
Daniel Oaks b820559050 modes: Add TLS umode (+Z) 2016-06-29 01:09:07 +10:00
Daniel Oaks 2874d4f897 remove empty file 2016-06-28 16:25:11 +10:00
Daniel Oaks 138f61d852 remove empty file 2016-06-28 16:24:28 +10:00
Daniel Oaks 670cf51452 modes: Migrating useful mode structs and functions directly to modes 2016-06-28 16:22:35 +10:00
Daniel Oaks 41473bb444 Fix PASS handling 2016-06-28 16:06:17 +10:00
Daniel Oaks bded3202c2 channels: send RPL_CHANNELCREATED and RPL_TOPICTIME 2016-06-26 21:06:28 +10:00
Daniel Oaks 34a099b61a Fix PING and PONG 2016-06-22 22:04:13 +10:00
Daniel Oaks e19c1527a4 modes: Fix modes, re-add channel modes 2016-06-22 21:35:26 +10:00
Daniel Oaks 04442ddef1 Stuff is no longer completely broken. Just mostly. 2016-06-20 22:53:45 +10:00
Daniel Oaks b8dc10f92d nickname: Fix 2016-06-20 10:04:53 +10:00
Daniel Oaks 9e7a590f23 server: Fix 2016-06-19 21:59:18 +10:00
Daniel Oaks 2a519c8061 use server.name and server.nameString, name for checking and getting nice comparison, nameString for reply outputs 2016-06-19 15:43:16 +10:00
Daniel Oaks 7b13858f8c client: Fix 2016-06-19 15:37:29 +10:00
Daniel Oaks 7fcc6bdbc4 channels: Fix 2016-06-19 14:55:24 +10:00
Daniel Oaks c2e5386966 commands: Fix comment 2016-06-19 12:53:52 +10:00
Daniel Oaks 08225c201d continue work reorganising and redoing EVERYTHING 2016-06-19 10:01:30 +10:00
Daniel Oaks e83283e7fd urgh this should not even be commited yet, this will all be squashed out 2016-06-17 22:17:42 +10:00
Daniel Oaks dbca03e948 Split numerics into their own new file 2016-06-16 19:41:07 +10:00
Daniel Oaks 3a5314bd8e Add basic ClientSocket work 2016-06-15 22:16:07 +10:00
Daniel Oaks 2f08401a0f Attempt to add mostly-correct license info at the top of each file... track this stuff a bit better 2016-06-15 21:50:56 +10:00
Daniel Oaks 9860094020 socket: Use updated socket code 2016-06-15 21:21:45 +10:00
Daniel Oaks fd6ed36995 strings: Restrict *? explicitly as they are used for mask matching 2016-06-15 17:41:53 +10:00
Daniel Oaks 3a9a643d30 server: Let websocket listeners also be TLS 2016-04-28 20:41:26 +10:00
Daniel Oaks 2fb6acb92a restructure SSL/TLS a bit, name config items better 2016-04-28 20:12:23 +10:00
Daniel Oaks cfcecd0101 tests: Start net tests 2016-04-21 22:32:17 +10:00
Daniel Oaks cd7d30a997 Set default channel modes to +nt 2016-04-21 19:29:50 +10:00
Daniel Oaks 8885f14f19 PROXY: Restrict to specified addresses/hostnames 2016-04-21 16:53:55 +10:00
Daniel Oaks 77bf7173ff Require that server names must be hostnames, and nicks cannot be hostnames 2016-04-21 10:48:15 +10:00
Daniel Oaks 4a8d526c4d strings: Nicks and usernames can't contain ! or @ 2016-04-21 10:21:36 +10:00
Daniel Oaks ed95f09725 Fix clients no longer being able to send commands after a single command errors out 2016-04-15 19:08:52 +10:00
Daniel Oaks fb345a2dd4 user: Don't parse the second and third params anymore 2016-04-15 18:45:05 +10:00
Daniel Oaks 9acdeedec6 commands: Simplify and unify minimum required number of args handling 2016-04-15 15:57:08 +10:00
Daniel Oaks 8b79662f1a modes: use secret instead of private, it's the standard these days. fix secret channel hiding in whois 2016-04-14 22:33:38 +10:00
Daniel Oaks a715882a75 Remove RplCurrentMode NOTICE on successful MODE commands. Fixes #22 2016-04-14 21:53:45 +10:00
Daniel Oaks 4177522e74 modes: Correct mode argument handling, only first param is the modestring 2016-04-14 21:22:17 +10:00
Daniel Oaks 9b32d7d6b8 mode: Parse more advanced mode changes 2016-04-14 18:41:58 +10:00
Daniel Oaks 63f5f34f28 version: Clarify semantic versioning "public API" and reset ver number on Oragono 2016-04-14 15:31:51 +10:00
Daniel Oaks 0ccabead31 cap: Properly suspend registration for CAP negotiation 2016-04-14 11:25:23 +10:00
Daniel Oaks b028b6929c reply: Include param on RPL_ENDOFWHOIS. Fixes #18 2016-04-14 10:16:32 +10:00
Daniel Oaks a241ea7dd6 version: Return RPL_ISUPPORT tokens, as standard 2016-04-14 09:55:22 +10:00
Daniel Oaks 3972fc49ed privileges: Add founder/admin/halfop (qah), remove owner (O)
channel owner is from 2812 and unused in the real world
2016-04-14 09:36:02 +10:00
Daniel Oaks 5ee0f1c205 capability: Remove CAP CLEAR as per IRCv3 recommendations, allow CAP command after registration 2016-04-14 07:30:14 +10:00
Daniel Oaks c3288823af Add native SSL/TLS listener support from @enmand for our new config 2016-04-13 20:45:09 +10:00
Daniel Oaks 8dc2732137 server: Store MOTD in memory rather than reading it from disk every time. Fixes #3 2016-04-13 15:49:30 +10:00
Daniel Oaks 56641ff650 isupport: Don't advertise stuff that's still TODO 2016-04-13 08:59:00 +10:00
Daniel Oaks 78928c0322 isupport: STATUSMSG isn't supported, don't advertise it 2016-04-13 08:58:52 +10:00
Daniel Oaks a013205fd1 Support network name 2016-04-13 08:58:41 +10:00
Daniel Oaks c88cd328f8 Very initial RPL_ISUPPORT numeric support 2016-04-13 08:57:34 +10:00
Daniel Oaks c0c16c72f0 ergonomadic -> oragono. I'm making lots of changes and this is AN EXPERIMENT. I want to differentiate this from Ergonomadic proper 2016-04-13 08:55:37 +10:00
Daniel Oaks 29d80366a6 Use docopt for command-line processing and new YAML configuration format 2016-04-13 08:46:14 +10:00
Daniel Oaks c705bdaac5 irc/server: MOTD does not need to be clipped at 80 chars, has not been standard for a long while now 2016-04-13 08:46:14 +10:00
Daniel Oaks 7ce62444de strings: Disallow nicknames that mess with the protocol in bad ways 2016-04-12 22:42:17 +10:00
John Soros 65539a593b this is related to https://github.com/fluffle/goirc/pull/71: common irc server behaviour is to reply with an empty + 2016-02-20 22:19:32 -08:00
Roberto Besser 404151fe9d code.google.com is shutting down, change import to use gopkg.in 2016-02-20 18:16:04 -08:00
Robin Burchell 6ad97f7e5d irc: Switch to golang.org versions, not google code versions of dependencies.
This has a few advantages:
* the google code versions are no longer maintained
* the google code versions are using mercurial (which I don't have installed)
2015-07-04 12:19:33 +02:00
Edmund Huber 67a6247377 Merge pull request #14 from edmund-huber/websocket
add support for WebSocket connections
2015-06-09 10:30:04 -07:00
Edmund Huber 02dca1dd89 fix array overrun panic bug, #13 2015-06-06 18:26:28 -07:00
Edmund Huber a16cc84e41 don't shadow the second error 2015-06-06 16:15:09 -07:00
Edmund Huber fce54343ea touchups to irc/websocket.go per review comments 2015-06-06 16:11:06 -07:00
Edmund Huber 62302ec92e fail WebSockets with subprotocols here, because gorilla leaves it up for us to deal with subprotocols 2015-06-06 15:19:07 -07:00
Edmund Huber 23d7c81684 comment for CheckOrigin 2015-06-06 14:05:29 -07:00
Niels Freier 6a69a65860 WebSocket layer to be able to connect "web" client
Currently working with a mini irc js implem, the flow:

* PASS
* NICK
* USER
* JOIN
* PRIVMSG

works and the ping/pong timeout keep the communication open.
2015-05-04 09:47:26 +04:00
Edmund Huber 846543c180 try including the prefix in the PONG to a client PING, maybe fix #5 2015-02-19 02:09:25 -08:00
Jeremy Latt 84eed13f1d v1.4.4 2014-04-15 21:25:55 -07:00
Jeremy Latt 4ce4ba31c5 keep track of whether sockets are closed 2014-04-15 12:10:02 -07:00
Jeremy Latt 6c10add399 improve performance by using less goroutines
- get rid of command channel in Client
- get rid of loginTimer; use other timers instead
- move debugging code to debug.go
2014-04-15 12:10:02 -07:00
Jeremy Latt cab21782b4 fix crash in whowas circular buffer 2014-04-10 11:53:34 -07:00
Jeremy Latt 142bf3d3bb don't async buffer flushing 2014-03-31 10:00:59 -07:00
Edmund Huber b4edcea6e3 pretty up the notice a bit, and use RplNotice 2014-03-29 19:46:44 +01:00
Edmund Huber e1c235a9ea fix up MODE behavior to allow /mode <not-your-nick> and show per-channel modes, fixes #29 2014-03-29 19:36:42 +01:00
Jeremy Latt 37e15d7f62 v1.4.1 2014-03-28 14:41:24 -07:00
Jeremy Latt 2e212e3692 Merge pull request #35 from jlatt/fix-goroutine-leak
fix two bugs
2014-03-28 14:41:00 -07:00
Jeremy Latt 2d2e63a1b7 Merge pull request #33 from jlatt/async-write-flush
async all write buffer flushes
2014-03-28 14:34:37 -07:00
Jeremy Latt b0bb0faadc remove unnecessary String()s; rename parse functions 2014-03-28 14:33:31 -07:00
Jeremy Latt 21a86c3216 fix gcstats debugging command 2014-03-28 13:03:06 -07:00
Jeremy Latt f32df20a83 get rid of useless assignment 2014-03-28 12:11:01 -07:00
Jeremy Latt 63a46498ce reuse replies where possible 2014-03-27 19:04:34 -07:00
Jeremy Latt 3b12dec207 cleanup 2014-03-27 18:58:12 -07:00
Jeremy Latt 2dc69c7e3d use a Scanner instead of ReadString 2014-03-27 18:53:01 -07:00
Jeremy Latt 5f268e4847 async all write buffer flushes 2014-03-27 18:34:31 -07:00
Jeremy Latt d696f2313e stop leaking client goroutines; closes #34 2014-03-27 16:49:22 -07:00
Jeremy Latt c2e3bbe494 fix whois; closes #32 2014-03-27 16:48:13 -07:00
Edmund Huber 2272aae213 spelling and gofmt 2014-03-23 06:50:07 +01:00
Edmund Huber 34b01b115e add a type for CTCP-encoded strings, and NOTICEs for error cases 2014-03-23 06:47:21 +01:00
Edmund Huber 6267b6a40c clean up /theater so that it doesn't need a bunch of pointers and that it reuses channel-scoped-user-modes machinery 2014-03-22 22:25:24 +01:00
Jeremy Latt bffad06a26 v1.4 2014-03-21 23:25:19 -07:00
Edmund Huber d5bdc78d55 adding theater-mode, fixes #15 2014-03-20 05:05:18 +01:00
Jeremy Latt 8c44bb9ff3 ONICK command to allow operators to change users' nicks 2014-03-17 12:56:35 -07:00
Jeremy Latt abf00e22ec LIKE quoting should convert to string for SQL 2014-03-17 12:56:12 -07:00
Jeremy Latt 874f3628c9 fix another Name => string conversion 2014-03-15 19:18:57 -07:00
Jeremy Latt 7a9f1d750b explain why CheckPassword happens in client thread 2014-03-15 15:12:29 -07:00
Jeremy Latt 7db4347419 bind to listening sockets before asyncing 2014-03-13 17:19:39 -07:00
Jeremy Latt d85e6681d9 move modes code to its own file; fix SQL (un)marshalling 2014-03-13 13:22:38 -07:00
Jeremy Latt 39b7c2a915 Merge remote-tracking branch 'origin/master' into cleanup
Conflicts:
	irc/client.go
	irc/commands.go
	irc/constants.go
	irc/reply.go
	irc/server.go
	irc/types.go
2014-03-13 12:38:44 -07:00
Jeremy Latt 2006aff9f7 break up types.go
- remove old interfaces, move to relevant files
- remove Phase in favor of a boolean flag
2014-03-12 17:52:25 -07:00
Jeremy Latt 0126edc7af move capability handling code to a single file 2014-03-12 17:38:11 -07:00
Jeremy Latt e15f47c766 move to channel-based logging 2014-03-12 17:17:26 -07:00
Jeremy Latt 77d053ccac get rid of editableCommand 2014-03-12 17:10:48 -07:00
Jeremy Latt d1a299792e don't buffer channels (except signal channel) 2014-03-12 16:58:11 -07:00
Jeremy Latt 4268c4a936 don't set CapNegotiating for blind CAP REQ 2014-03-12 16:57:15 -07:00
Jeremy Latt 96a108f8da mark unicode normalization with type 2014-03-12 16:45:22 -07:00
Jeremy Latt 97886dd00f relax regex restrictions for nicknames 2014-03-08 20:03:36 -08:00
Jeremy Latt f1b610e1c1 v1.3 2014-03-08 19:24:55 -08:00
Jeremy Latt 465313c9ac Merge remote-tracking branch 'origin/master' into user-mask
Conflicts:
	irc/types.go
2014-03-08 19:23:10 -08:00
Jeremy Latt 81df7b4a5c comments and improvements for client set 2014-03-08 19:22:04 -08:00
Jeremy Latt 33df043961 fix CAP messages 2014-03-08 14:00:13 -08:00