tkellem 0.9.4 → 0.9.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +5 -3
- data/Gemfile.lock +3 -1
- data/lib/tkellem/bouncer.rb +11 -0
- data/lib/tkellem/bouncer_connection.rb +24 -0
- data/lib/tkellem/irc_message.rb +25 -0
- data/lib/tkellem/plugins/backlog.rb +1 -22
- data/lib/tkellem/version.rb +1 -1
- metadata +7 -2
    
        data/Gemfile
    CHANGED
    
    | @@ -4,14 +4,16 @@ source "https://rubygems.org" | |
| 4 4 | 
             
            gemspec
         | 
| 5 5 |  | 
| 6 6 | 
             
            group :test do
         | 
| 7 | 
            -
              gem ' | 
| 7 | 
            +
              gem 'coveralls', require: false
         | 
| 8 8 | 
             
              gem 'mocha', '0.14.0', require: false
         | 
| 9 | 
            +
              gem 'rake'
         | 
| 10 | 
            +
              gem 'rspec', '~> 2.13.0'
         | 
| 9 11 | 
             
              gem 'simplecov', require: false
         | 
| 10 | 
            -
              gem 'coveralls', require: false
         | 
| 11 12 | 
             
            end
         | 
| 12 13 |  | 
| 13 14 | 
             
            group :development do
         | 
| 15 | 
            +
              gem 'debugger'
         | 
| 14 16 | 
             
              gem 'guard-rspec'
         | 
| 17 | 
            +
              gem 'rake'
         | 
| 15 18 | 
             
              gem 'rspec-nc'
         | 
| 16 | 
            -
              gem 'debugger'
         | 
| 17 19 | 
             
            end
         | 
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            PATH
         | 
| 2 2 | 
             
              remote: .
         | 
| 3 3 | 
             
              specs:
         | 
| 4 | 
            -
                tkellem (0.9. | 
| 4 | 
            +
                tkellem (0.9.5)
         | 
| 5 5 | 
             
                  activerecord (~> 4.0.0.rc2)
         | 
| 6 6 | 
             
                  eventmachine (~> 1.0.3)
         | 
| 7 7 | 
             
                  geoip (~> 1.3.2)
         | 
| @@ -78,6 +78,7 @@ GEM | |
| 78 78 | 
             
                  slop (~> 3.4)
         | 
| 79 79 | 
             
                rails-observers (0.1.2)
         | 
| 80 80 | 
             
                  activemodel (~> 4.0)
         | 
| 81 | 
            +
                rake (10.1.0)
         | 
| 81 82 | 
             
                rb-fsevent (0.9.3)
         | 
| 82 83 | 
             
                rb-inotify (0.9.0)
         | 
| 83 84 | 
             
                  ffi (>= 0.5.0)
         | 
| @@ -116,6 +117,7 @@ DEPENDENCIES | |
| 116 117 | 
             
              debugger
         | 
| 117 118 | 
             
              guard-rspec
         | 
| 118 119 | 
             
              mocha (= 0.14.0)
         | 
| 120 | 
            +
              rake
         | 
| 119 121 | 
             
              rspec (~> 2.13.0)
         | 
| 120 122 | 
             
              rspec-nc
         | 
| 121 123 | 
             
              simplecov
         | 
    
        data/lib/tkellem/bouncer.rb
    CHANGED
    
    | @@ -101,6 +101,17 @@ class Bouncer | |
| 101 101 | 
             
                if forward
         | 
| 102 102 | 
             
                  # send to server
         | 
| 103 103 | 
             
                  send_msg(msg)
         | 
| 104 | 
            +
             | 
| 105 | 
            +
                  # replay to other connected clients
         | 
| 106 | 
            +
                  if msg.command == "PRIVMSG" && (!msg.ctcp? || msg.action?)
         | 
| 107 | 
            +
                    msg.readdress_to(nick)
         | 
| 108 | 
            +
             | 
| 109 | 
            +
                    @active_conns.each do |c,s|
         | 
| 110 | 
            +
                      next if c == client
         | 
| 111 | 
            +
                      c.send_msg(msg)
         | 
| 112 | 
            +
                    end
         | 
| 113 | 
            +
                  end
         | 
| 114 | 
            +
             | 
| 104 115 | 
             
                  flag_for_reply(msg.command, forward) if forward != true
         | 
| 105 116 | 
             
                end
         | 
| 106 117 | 
             
              end
         | 
| @@ -45,6 +45,21 @@ module BouncerConnection | |
| 45 45 | 
             
              def ssl_handshake_completed
         | 
| 46 46 | 
             
              end
         | 
| 47 47 |  | 
| 48 | 
            +
              def schedule_ping_client
         | 
| 49 | 
            +
                EM::Timer.new(60) { ping_client }
         | 
| 50 | 
            +
              end
         | 
| 51 | 
            +
             | 
| 52 | 
            +
              def ping_client
         | 
| 53 | 
            +
                failsafe("ping_client") do
         | 
| 54 | 
            +
                  send_msg("PING tkellem")
         | 
| 55 | 
            +
                  @ping_timer = EM::Timer.new(10) do
         | 
| 56 | 
            +
                    # ping timeout
         | 
| 57 | 
            +
                    info("PING timeout, closing connection")
         | 
| 58 | 
            +
                    close_connection
         | 
| 59 | 
            +
                  end
         | 
| 60 | 
            +
                end
         | 
| 61 | 
            +
              end
         | 
| 62 | 
            +
             | 
| 48 63 | 
             
              def error!(msg)
         | 
| 49 64 | 
             
                info("ERROR :#{msg}")
         | 
| 50 65 | 
             
                say_as_tkellem(msg)
         | 
| @@ -57,6 +72,7 @@ module BouncerConnection | |
| 57 72 | 
             
                return error!("Unknown connection: #{@conn_name}") unless @bouncer
         | 
| 58 73 | 
             
                @state = :connected
         | 
| 59 74 | 
             
                info "connected"
         | 
| 75 | 
            +
                schedule_ping_client
         | 
| 60 76 | 
             
                @bouncer.connect_client(self)
         | 
| 61 77 | 
             
              end
         | 
| 62 78 |  | 
| @@ -102,6 +118,14 @@ module BouncerConnection | |
| 102 118 | 
             
                    msg_tkellem(IrcMessage.new(nil, 'TKELLEM', [msg.args.last]))
         | 
| 103 119 | 
             
                  elsif command == 'TKELLEM' || command == 'TK'
         | 
| 104 120 | 
             
                    msg_tkellem(msg)
         | 
| 121 | 
            +
                  elsif command == 'PONG'
         | 
| 122 | 
            +
                    if @ping_timer
         | 
| 123 | 
            +
                      @ping_timer.cancel
         | 
| 124 | 
            +
                      @ping_timer = nil
         | 
| 125 | 
            +
                      # only schedule again if @ping_timer existed, so we don't schedule
         | 
| 126 | 
            +
                      # multiple if the client just randomly sends PONGs
         | 
| 127 | 
            +
                      schedule_ping_client
         | 
| 128 | 
            +
                    end
         | 
| 105 129 | 
             
                  elsif command == 'CAP'
         | 
| 106 130 | 
             
                    # TODO: full support for CAP -- this just gets mobile colloquy connecting
         | 
| 107 131 | 
             
                    if msg.args.first =~ /req/i
         | 
    
        data/lib/tkellem/irc_message.rb
    CHANGED
    
    | @@ -91,6 +91,31 @@ class IrcMessage < Struct.new(:prefix, :command, :args, :ctcp) | |
| 91 91 | 
             
                IrcMessage.new(prefix, command, args, ctcp)
         | 
| 92 92 | 
             
              end
         | 
| 93 93 |  | 
| 94 | 
            +
              def readdress_to(nick)
         | 
| 95 | 
            +
                privmsg = args.first[0] != '#'[0]
         | 
| 96 | 
            +
             | 
| 97 | 
            +
                if msg.prefix
         | 
| 98 | 
            +
                  # to this user
         | 
| 99 | 
            +
                  if privmsg
         | 
| 100 | 
            +
                    args[0] = nick
         | 
| 101 | 
            +
                  else
         | 
| 102 | 
            +
                    # do nothing, it's good to send
         | 
| 103 | 
            +
                  end
         | 
| 104 | 
            +
                else
         | 
| 105 | 
            +
                  # from this user
         | 
| 106 | 
            +
                  if privmsg
         | 
| 107 | 
            +
                    # a one-on-one chat -- every client i've seen doesn't know how to
         | 
| 108 | 
            +
                    # display messages from themselves here, so we fake it by just
         | 
| 109 | 
            +
                    # adding an arrow and pretending the other user said it. shame.
         | 
| 110 | 
            +
                    prefix = msg.args.first
         | 
| 111 | 
            +
                    args[0] = nick
         | 
| 112 | 
            +
                    args[-1] = "-> #{msg.args.last}"
         | 
| 113 | 
            +
                  else
         | 
| 114 | 
            +
                    # it's a room, we can just replay
         | 
| 115 | 
            +
                    prefix = nick
         | 
| 116 | 
            +
                  end
         | 
| 117 | 
            +
                end
         | 
| 118 | 
            +
              end
         | 
| 94 119 | 
             
            end
         | 
| 95 120 |  | 
| 96 121 | 
             
            end
         | 
| @@ -230,28 +230,7 @@ class Backlog | |
| 230 230 | 
             
                  timestamp = timestamp.in_time_zone(time_zone) if timestamp && time_zone
         | 
| 231 231 | 
             
                  timestamp = timestamp.localtime if timestamp && !time_zone
         | 
| 232 232 | 
             
                  next unless msg
         | 
| 233 | 
            -
                   | 
| 234 | 
            -
                  if msg.prefix
         | 
| 235 | 
            -
                    # to this user
         | 
| 236 | 
            -
                    if privmsg
         | 
| 237 | 
            -
                      msg.args[0] = @bouncer.nick
         | 
| 238 | 
            -
                    else
         | 
| 239 | 
            -
                      # do nothing, it's good to send
         | 
| 240 | 
            -
                    end
         | 
| 241 | 
            -
                  else
         | 
| 242 | 
            -
                    # from this user
         | 
| 243 | 
            -
                    if privmsg
         | 
| 244 | 
            -
                      # a one-on-one chat -- every client i've seen doesn't know how to
         | 
| 245 | 
            -
                      # display messages from themselves here, so we fake it by just
         | 
| 246 | 
            -
                      # adding an arrow and pretending the other user said it. shame.
         | 
| 247 | 
            -
                      msg.prefix = msg.args.first
         | 
| 248 | 
            -
                      msg.args[0] = @bouncer.nick
         | 
| 249 | 
            -
                      msg.args[-1] = "-> #{msg.args.last}"
         | 
| 250 | 
            -
                    else
         | 
| 251 | 
            -
                      # it's a room, we can just replay
         | 
| 252 | 
            -
                      msg.prefix = @bouncer.nick
         | 
| 253 | 
            -
                    end
         | 
| 254 | 
            -
                  end
         | 
| 233 | 
            +
                  msg.readdress_to(@bouncer.nick)
         | 
| 255 234 | 
             
                  conn.send_msg(msg.with_timestamp(timestamp))
         | 
| 256 235 | 
             
                end
         | 
| 257 236 | 
             
              end
         | 
    
        data/lib/tkellem/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: tkellem
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.9. | 
| 4 | 
            +
              version: 0.9.5
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -184,12 +184,18 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 184 184 | 
             
              - - ! '>='
         | 
| 185 185 | 
             
                - !ruby/object:Gem::Version
         | 
| 186 186 | 
             
                  version: '0'
         | 
| 187 | 
            +
                  segments:
         | 
| 188 | 
            +
                  - 0
         | 
| 189 | 
            +
                  hash: 4535993549696292820
         | 
| 187 190 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 188 191 | 
             
              none: false
         | 
| 189 192 | 
             
              requirements:
         | 
| 190 193 | 
             
              - - ! '>='
         | 
| 191 194 | 
             
                - !ruby/object:Gem::Version
         | 
| 192 195 | 
             
                  version: '0'
         | 
| 196 | 
            +
                  segments:
         | 
| 197 | 
            +
                  - 0
         | 
| 198 | 
            +
                  hash: 4535993549696292820
         | 
| 193 199 | 
             
            requirements: []
         | 
| 194 200 | 
             
            rubyforge_project: 
         | 
| 195 201 | 
             
            rubygems_version: 1.8.23
         | 
| @@ -203,4 +209,3 @@ test_files: | |
| 203 209 | 
             
            - spec/irc_server_spec.rb
         | 
| 204 210 | 
             
            - spec/plugins/backlog_spec.rb
         | 
| 205 211 | 
             
            - spec/spec_helper.rb
         | 
| 206 | 
            -
            has_rdoc: 
         |