Skip to content

Instantly share code, notes, and snippets.

@icelander
Created March 15, 2022 18:30
Show Gist options
  • Save icelander/1815ebb06a3f93e8bb640aca50acc38f to your computer and use it in GitHub Desktop.
Save icelander/1815ebb06a3f93e8bb640aca50acc38f to your computer and use it in GitHub Desktop.
Sends IRC messages as quickly as possible, used for testing Matterbridge relays
#!/usr/bin/env ruby
require 'socket'
require 'net/http'
require 'uri'
require 'json'
num_messages=100
uri = URI.parse("https://mattermost.example.com/hooks/hazopetx1iym5d1trtezo6e4ow")
request = Net::HTTP::Post.new(uri)
request.content_type = "application/json"
request.body = JSON.dump({
"text" => "Sending #{num_messages} IRC messages"
})
req_options = {
use_ssl: uri.scheme == "https",
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(request)
end
server='192.168.0.218'
port='6667'
user='user'
pass='password'
channel='#irc-bridge'
connection = TCPSocket.open(server, port)
connection.puts("NICK #{user}")
loop do
r = connection.gets
puts r
break if r.end_with?("hostname\r\n")
end
connection.puts("PASS #{user}:#{pass}")
loop do
r = connection.gets
puts r
break if r.end_with?("successful\r\n")
end
connection.puts("USER #{user} 8 * :#{user}")
loop do
r = connection.gets
puts r
break if r.end_with?("disconnect.\r\n")
end
connection.puts("JOIN #{channel}")
loop do
r = connection.gets
puts r
break if r.end_with?("list\r\n")
end
for i in 1..num_messages do
time = Time.now.strftime('%Y-%m-%d %H:%M:%S.%N')
puts "Message ##{i} - #{time}"
connection.puts("PRIVMSG #{channel} : Message ##{i} - #{time}")
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment