Commit Graph

56 Commits

Author SHA1 Message Date
Alex Bramley 762ba1e599 Type inference proves too costly for ragel-based config...
On the one hand, the complex ragel solution is explicit about the config syntax
and requires little heavy lifting on the Go side, but the ragel definition is
overly complex, too rigid and produces bloody huge binary output. On the other
the simple ragel solution can provide pretty much the same syntax with some
type conversion, but the reflection magic to pack this into objects correctly
is done much better by the JSON module. Forcing parsing of everything tostrings
results in lots of nasty if/case statements in the Go code.

JSON has another benefit in that the config serialisation is two-way, allowing
for web or IRC based configuration. It's a pity it's a bugger to edit by hand.
2011-02-22 21:26:48 +00:00
Alex Bramley f99a2c6bb8 Make sure we're using SVN ragel; add default Link constructor. 2010-12-01 23:07:49 +00:00
Alex Bramley 7e90299992 Add parser.go so people don't have to build SVN ragel ;) 2010-11-28 18:09:33 +00:00
Alex Bramley 1566d7772c Add oper parsing, standardise ragel naming, change config. 2010-11-28 18:08:11 +00:00
Alex Bramley 22ccce6bb2 Ragel based config file parser, ftw. 2010-11-28 16:48:02 +00:00
Alex Bramley 377fbcd3af WIP on config parser before attempting to learn FSMs 2010-11-27 14:12:12 +00:00
Alex Bramley b3f98e762e Merge branch 'master' into ircd-devel 2010-11-23 22:18:25 +00:00
Alex Bramley bea2395160 Make timestamp format twiddleable; cosmetic re-arrangement of *Conn struct. 2010-11-23 22:18:08 +00:00
Graham Lyon 623247c995 Generalise timestamp code and default to using time.LocalTime 2010-11-23 22:08:25 +00:00
Alex Bramley 08b7d63c27 Refactor to remove line.Text and use line.Args[-1] instead. 2010-11-23 22:07:21 +00:00
Graham Lyon 8ad6e67467 Added timestamps to irc.Line and debug output 2010-11-23 20:22:35 +00:00
Alex Bramley b2539c0063 Initial commit of vague hackery for a go IRCd. 2010-11-21 20:07:31 +00:00
Alex Bramley 83e1f9ca74 Update README for release. 2010-11-21 19:59:57 +00:00
Alex Bramley bedbfc2899 Move irc/ to client/ and set up for goinstall. 2010-11-21 19:53:14 +00:00
Alex Bramley 00d25810b5 De-duplicate mode parsing and move to nickchan.go. 2010-11-04 01:22:49 +00:00
Alex Bramley e611672b06 Reorganise handlers into separate methods rather than anonymous functions. 2010-11-04 00:54:26 +00:00
Alex Bramley c419ef1ead Run gofmt over everything, for great justice. 2010-11-04 00:25:46 +00:00
Alex Bramley 6bb5558c46 Bugfix -- there could be other integer modes than +l. 2010-11-04 00:06:27 +00:00
Alex Bramley ff61bc9ea1 Update README with slight changes. 2010-11-04 00:02:26 +00:00
Alex Bramley 419dba1e75 Update example client with changes. 2010-11-03 23:53:14 +00:00
Alex Bramley 961e38d7bf Handle ircu's non-conformist attitude to JOIN/PART formatting(h/t raylu again). 2010-11-03 23:51:36 +00:00
Alex Bramley 7935d2e939 Use append() instead of doing it manually. 2010-11-03 23:50:43 +00:00
Alex Bramley 38eb150850 Somewhat better SSL handling. It'll improve moar if my patches get looked at. 2010-11-03 23:49:28 +00:00
Alex Bramley a9d47d1a25 Sneakier handling of variadic optional args for commands. 2010-11-03 23:48:28 +00:00
Alex Bramley f829eeab9b Merge in some other niceties from raylu. 2010-11-03 23:46:58 +00:00
Alex Bramley 04db2e2c8d Revert "Use default root CAs for SSL connections, h/t raylu."
This reverts commit 7515f11470.

This doesn't use the "default" CAs, it explicitly turns off CA verification.
Probably not the best of ideas. Patch to enable optional verification coming.

Conflicts:

	irc/connection.go
2010-11-03 20:42:39 +00:00
Alex Bramley 34b3299d41 Bring in Ray Lu's Debug patches. 2010-11-02 21:47:05 +00:00
Alex Bramley 9b9197f5f6 *cough* I should pay more attention when merging... 2010-10-24 10:06:18 +01:00
raylu 036cc4c3eb Fix a bug that prevented adding multiple handlers 2010-10-24 09:54:23 +01:00
Alex Bramley 7515f11470 Use default root CAs for SSL connections, h/t raylu. 2010-10-24 09:53:52 +01:00
Alex Bramley 05e3500a3c Enable SSL IRC for goirc. 2010-08-30 12:16:20 +01:00
Alex Bramley c4d09cd228 Missed strings.Split() invocation; h/t jessta. 2010-08-30 12:03:01 +01:00
Alex Bramley 36b7645577 Makefile fixes to build with more recent Go releases. 2010-08-29 21:24:47 +01:00
Yves Junqueira 1503d7b9db Fixes for recent versions of Go.
Simplifying getStringMsg().
2010-08-29 23:59:16 +08:00
Alex Bramley cc35817517 Add a few more commands that might end up being useful 2009-12-19 22:15:11 +00:00
Alex Bramley 17e5216144 fix race and reinit conn.Me on disconnect
* due to the blocking nature of channel reads, by the time the runLoop()
  for loop exits in that goroutine, we might well be half-way through
  reconnecting to the server -- a bad time to run conn.initialise().
  move the call to initialise() into shutdown() to ensure it happens
  in a timely manner.

* On a related note, conn.Me was retaining old channel objects in it's
  Channels map. All other references to nicks and channels are erased
  in conn.initialise(), but as we keep a seperate reference to our Nick
  object in conn.Me, we need to reinit that at the same time.
2009-12-19 19:05:32 +00:00
Alex Bramley 03e5b3a84e add flood testing capability to test client 2009-12-19 18:36:12 +00:00
Alex Bramley 38f1cd9388 minor handler bug fixes in 433 and MODE
* sending NICK after 433 -- but before 001 from server -- does not
  result in a confirmation NICK message back from server, so we need
  to change Conn.Me.Nick in the 433 handler in this case.
* Nick MODE changes are transmitted back to us in line.Text not
  line.Args[1], so make sure error messages use this when needed.
2009-12-19 18:33:54 +00:00
Alex Bramley 2b1d7068b1 Less naive flood-protection algorithm in *Conn.send() 2009-12-19 18:09:29 +00:00
Alex Bramley af8dfdb6f3 change channel reads to use 'for v := range ch {}' idiom 2009-12-19 15:30:54 +00:00
Alex Bramley 7f6c8fc232 should probably be reading from conn.out after the test for closedness 2009-12-19 14:58:41 +00:00
Alex Bramley 36976f59d0 time.Sleep() requires forced int64 type 2009-12-19 13:44:36 +00:00
Alex Bramley 2942cf2093 Add naive flood protection code to *Conn.send() 2009-12-19 13:40:50 +00:00
Alex Bramley 30fbdda75e Update 352 WHOREPLY handler to set +o and +i user modes for nick 2009-12-19 13:05:10 +00:00
Alex Bramley cdc715735f Use WHO instead of WHOIS to find information about nicks
Send a single WHO on joining channel rather than triggering a WHOIS of
every nick in the 353 RPL_NAMES handler. Avoids 'Excess Flood' when
joining a large channel ;-)
2009-12-19 12:33:54 +00:00
Alex Bramley dc1dd0333a Remove extraneous (and quite spammy) debug printing. 2009-12-18 23:59:12 +00:00
Alex Bramley 05e665bec7 add irc_test.go, update Makefile and .gitignore
add simple test code to make building this package within src/pkg happy;
update irc/Makefile whitespace -- s/    /\t/;
update .gitignore to ignore _test directory created in test build;
2009-12-18 22:50:13 +00:00
Alex Bramley e5131515b8 update README and comments so godoc creates nice helpful html documentation 2009-12-18 22:48:58 +00:00
Alex Bramley 07ff350dd0 Updated README with synopsis code 2009-12-17 21:47:33 +00:00
Alex Bramley ae8e34ff0e reformat source with gofmt to nuke all of those unneeded semicolons 2009-12-17 21:30:18 +00:00