aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristine Dodrill <me@christine.website>2018-11-26 17:53:37 -0800
committerChristine Dodrill <me@christine.website>2018-11-26 17:53:37 -0800
commit60edbc1b67bb57a6351def2b6bf091f88e6e5af6 (patch)
tree77117b15066ecb624e7a976008dc2822fb509743
parentded87ea20901aece9dbe2d70ebbb7092d622c87a (diff)
downloadx-60edbc1b67bb57a6351def2b6bf091f88e6e5af6.tar.xz
x-60edbc1b67bb57a6351def2b6bf091f88e6e5af6.zip
remove irc stuff
-rw-r--r--irc/bncadmin/.gitignore1
-rw-r--r--irc/bncadmin/box.rb13
-rw-r--r--irc/bncadmin/main.go191
-rw-r--r--irc/bncadmin/run.sh11
-rw-r--r--irc/clevelandbrown/.gitignore1
-rw-r--r--irc/clevelandbrown/main.go395
6 files changed, 0 insertions, 612 deletions
diff --git a/irc/bncadmin/.gitignore b/irc/bncadmin/.gitignore
deleted file mode 100644
index 2eea525..0000000
--- a/irc/bncadmin/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-.env \ No newline at end of file
diff --git a/irc/bncadmin/box.rb b/irc/bncadmin/box.rb
deleted file mode 100644
index ee751c6..0000000
--- a/irc/bncadmin/box.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-from "xena/go"
-
-workdir "/"
-copy "main.go", "/go/src/github.com/Xe/tools/irc/bncadmin/main.go"
-copy "vendor", "/go/src/github.com/Xe/tools/irc/bncadmin/"
-run "go install github.com/Xe/tools/irc/bncadmin && cp /go/bin/bncadmin /usr/bin/bncadmin"
-
-run "rm -rf /usr/local/go /go && apk del bash gcc musl-dev openssl go"
-flatten
-
-cmd "/usr/bin/bncadmin"
-
-tag "xena/bncadmin"
diff --git a/irc/bncadmin/main.go b/irc/bncadmin/main.go
deleted file mode 100644
index f584a16..0000000
--- a/irc/bncadmin/main.go
+++ /dev/null
@@ -1,191 +0,0 @@
-package main
-
-import (
- "crypto/tls"
- "fmt"
- "log"
- "os"
- "strings"
- "sync"
- "time"
-
- "github.com/belak/irc"
- _ "github.com/joho/godotenv/autoload"
-)
-
-var (
- bncUsername = needEnv("BNC_USERNAME")
- bncPassword = needEnv("BNC_PASSWORD")
- bncServer = needEnv("BNC_SERVER")
- serverSuffixExpected = needEnv("SERVER_SUFFIX")
-)
-
-func needEnv(key string) string {
- v := os.Getenv(key)
- if v == "" {
- log.Fatal("need value for " + key)
- }
-
- return v
-}
-
-func main() {
- log.Println("Bot connecting to " + bncServer)
- conn, err := tls.Dial("tcp", bncServer, &tls.Config{
- InsecureSkipVerify: true,
- })
- if err != nil {
- log.Fatal(err)
- }
- defer conn.Close()
-
- c := irc.NewClient(conn, irc.ClientConfig{
- Nick: "admin",
- Pass: fmt.Sprintf("%s:%s", bncUsername, bncPassword),
- User: "BNCbot",
- Name: "BNC admin bot",
-
- Handler: NewBot(),
- })
-
- for _, cap := range []string{"userhost-in-names", "multi-prefix", "znc.in/server-time-iso"} {
- c.Writef("CAP REQ %s", cap)
- }
-
- err = c.Run()
- if err != nil {
- main()
- }
-}
-
-type Bot struct {
- setupDaemon sync.Once
- lookingForUserNetworks bool
-
- // i am sorry
- launUsername string
-}
-
-func NewBot() *Bot {
- return &Bot{}
-}
-
-func (b *Bot) Handle(c *irc.Client, m *irc.Message) {
- b.setupDaemon.Do(func() {
- go func() {
- for {
- b.lookingForUserNetworks = true
- c.Writef("PRIVMSG *status ListAllUserNetworks")
- time.Sleep(2 * time.Second) // always sleep 2
- b.lookingForUserNetworks = false
-
- time.Sleep(1 * time.Hour)
- }
- }()
- })
-
- // log.Printf("in >> %s", m)
-
- switch m.Command {
- case "PRIVMSG":
- if m.Prefix.Name == "*status" {
- b.HandleStarStatus(c, m)
- }
-
- if strings.HasPrefix(m.Prefix.Name, "?") {
- b.HandlePartyLineCommand(c, m)
- }
-
- if m.Params[0] == "#bnc" {
- b.HandleCommand(c, m)
- }
-
- case "NOTICE":
- if m.Prefix.Name == "*status" {
- f := strings.Fields(m.Trailing())
- if f[0] == "***" {
- log.Println(m.Trailing())
- // look up geoip and log here
- }
- }
- }
-}
-
-func (b *Bot) HandleStarStatus(c *irc.Client, m *irc.Message) {
- if b.lookingForUserNetworks {
- if strings.HasPrefix(m.Trailing(), "| ") {
- f := strings.Fields(m.Trailing())
-
- switch len(f) {
- case 11: // user name line
- // 11: []string{"|", "AzureDiamond", "|", "N/A", "|", "0", "|", "|", "|", "|", "|"}
- username := f[1]
- b.launUsername = username
-
- case 15: // server and nick!user@host line
- // 15: []string{"|", "`-", "|", "PonyChat", "|", "0", "|", "Yes", "|", "amethyststar.ponychat.net", "|", "test!test@lypbmzxixk.ponychat.net", "|", "1", "|"}
- server := f[9]
- network := f[3]
- if !strings.HasSuffix(server, serverSuffixExpected) {
- log.Printf("%s is using the BNC to connect to unknown server %s, removing permissions", b.launUsername, server)
- b.RemoveNetwork(c, b.launUsername, network)
- c.Writef("PRIVMSG ?%s :You have violated the terms of the BNC service and your account has been disabled. Please contact PonyChat staff to appeal this.", b.launUsername)
- c.Writef("PRIVMSG *blockuser block %s", b.launUsername)
- }
- }
- }
- }
-}
-
-func (b *Bot) HandlePartyLineCommand(c *irc.Client, m *irc.Message) {
- split := strings.Fields(m.Trailing())
- username := m.Prefix.Name[1:]
-
- if len(split) == 0 {
- return
- }
-
- switch strings.ToLower(split[0]) {
- case "help":
- c.Writef("PRIVMSG ?%s :Commands available:", username)
- c.Writef("PRIVMSG ?%s :- ChangeName <new desired \"real name\">", username)
- c.Writef("PRIVMSG ?%s : Changes your IRC \"real name\" to a new value instead of the default", username)
- c.Writef("PRIVMSG ?%s :- Reconnect", username)
- c.Writef("PRIVMSG ?%s : Disconnects from PonyChat and connects to PonyChat again", username)
- c.Writef("PRIVMSG ?%s :- Help", username)
- c.Writef("PRIVMSG ?%s : Shows this Message", username)
- case "changename":
- if len(split) < 1 {
- c.Writef("NOTICE %s :Usage: ChangeName <new desired \"real name\">")
- return
- }
-
- gecos := strings.Join(split[1:], " ")
- c.Writef("PRIVMSG *controlpanel :Set RealName %s %s", username, gecos)
- c.Writef("PRIVMSG ?%s :Please reply %q to confirm changing your \"real name\" to: %s", username, "Reconnect", gecos)
- case "reconnect":
- c.Writef("PRIVMSG ?%s :Reconnecting...", username)
- c.Writef("PRIVMSG *controlpanel Reconnect %s PonyChat", username)
- }
-}
-
-func (b *Bot) HandleCommand(c *irc.Client, m *irc.Message) {
- split := strings.Fields(m.Trailing())
- if split[0][0] == ';' {
- switch strings.ToLower(split[0][1:]) {
- case "request":
- c.Write("PRIVMSG #bnc :In order to request a BNC account, please connect to the bouncer server (bnc.ponychat.net, ssl port 6697, allow untrusted certs) with your nickserv username and passsword in the server password field (example: AzureDiamond:hunter2)")
- case "help":
- c.Write("PRIVMSG #bnc :PonyChat bouncer help is available here: https://ponychat.net/help/bnc/")
- case "rules":
- c.Write("PRIVMSG #bnc :Terms of the BNC")
- c.Write("PRIVMSG #bnc :- Do not use the BNC to evade channel bans")
- c.Write("PRIVMSG #bnc :- Do not use the BNC to violate any network rules")
- c.Write("PRIVMSG #bnc :- Do not use the BNC to connect to any other IRC network than PonyChat")
- }
- }
-}
-
-func (b *Bot) RemoveNetwork(c *irc.Client, username, network string) {
- c.Writef("PRIVMSG *controlpanel :DelNetwork %s %s", username, network)
-}
diff --git a/irc/bncadmin/run.sh b/irc/bncadmin/run.sh
deleted file mode 100644
index 36e90b8..0000000
--- a/irc/bncadmin/run.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/bash
-
-set -e
-set -x
-
-box box.rb
-docker push xena/bncadmin
-
-hyper rm -f bncadmin ||:
-hyper pull xena/bncadmin
-hyper run --name bncadmin --restart=always -dit --size s1 --env-file .env xena/bncadmin
diff --git a/irc/clevelandbrown/.gitignore b/irc/clevelandbrown/.gitignore
deleted file mode 100644
index 4c49bd7..0000000
--- a/irc/clevelandbrown/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-.env
diff --git a/irc/clevelandbrown/main.go b/irc/clevelandbrown/main.go
deleted file mode 100644
index 8fa96c0..0000000
--- a/irc/clevelandbrown/main.go
+++ /dev/null
@@ -1,395 +0,0 @@
-package main
-
-import (
- "context"
- "crypto/tls"
- "log"
- "os"
- "strconv"
- "strings"
- "sync"
- "time"
-
- "github.com/Xe/ln"
- tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api"
- _ "github.com/joho/godotenv/autoload"
- irc "gopkg.in/irc.v1"
-)
-
-var (
- addr = os.Getenv("SERVER")
- password = os.Getenv("PASSWORD")
- tgToken = os.Getenv("TELEGRAM_TOKEN")
- pokeIDStr = os.Getenv("POKE_ID")
-
- sclock sync.Mutex
- scores map[string]float64
-)
-
-var ctx context.Context
-
-func main() {
- scores = map[string]float64{}
-
- pokeID, err := strconv.Atoi(pokeIDStr)
- if err != nil {
- log.Fatal(err)
- }
-
- ba, err := tgbotapi.NewBotAPI(tgToken)
- if err != nil {
- log.Fatal(err)
- }
-
- conn, err := tls.Dial("tcp", addr, &tls.Config{
- InsecureSkipVerify: true,
- })
- if err != nil {
- log.Fatal(err)
- }
-
- ctx = context.Background()
- ctx = ln.WithF(ctx, ln.F{"app": "clevelandbrown"})
-
- ln.Log(ctx, ln.F{
- "action": "connected",
- "where": addr,
- })
-
- cli := irc.NewClient(conn, irc.ClientConfig{
- Handler: irc.HandlerFunc(scoreCleveland),
- Nick: "Xena",
- User: "xena",
- Name: "cleveland brown termination bot",
- Pass: password,
- })
-
- ff := ln.FilterFunc(func(ctx context.Context, e ln.Event) bool {
- if val, ok := e.Data["svclog"]; ok && val.(bool) {
- delete(e.Data, "svclog")
-
- line, err := ln.DefaultFormatter.Format(ctx, e)
- if err != nil {
- ln.FatalErr(ctx, err)
- }
-
- err = cli.Writef("PRIVMSG #services :%s", string(line))
- if err != nil {
- log.Fatal(err)
- }
-
- msg := tgbotapi.NewMessage(int64(pokeID), string(line))
-
- _, err = ba.Send(msg)
- if err != nil {
- log.Printf("can't send telegram message: %v", err)
- return true
- }
- }
-
- return true
- })
-
- ln.DefaultLogger.Filters = append(ln.DefaultLogger.Filters, ff)
-
- go func() {
- for {
- time.Sleep(30 * time.Second)
-
- sclock.Lock()
- defer sclock.Unlock()
-
- changed := 0
- ignored := 0
-
- for key, sc := range scores {
- if sc >= notifyThreshold {
- ignored++
- continue
- }
-
- scores[key] = sc / 100
- changed++
- }
-
- sclock.Unlock()
-
- ln.Log(ctx, ln.F{
- "action": "nerfed_scores",
- "changed": changed,
- "ignored": ignored,
- })
- }
- }()
-
- go func() {
- for {
- time.Sleep(5 * time.Minute)
-
- sclock.Lock()
- defer sclock.Unlock()
-
- nsc := map[string]float64{}
-
- halved := 0
- rem := 0
-
- for key, score := range scores {
- if score > 0.01 {
- if score > 3 {
- score = score / 2
- halved++
- }
-
- nsc[key] = score
- } else {
- rem++
- }
- }
-
- scores = nsc
-
- ln.Log(ctx, ln.F{
- "action": "reaped_scores",
- "removed": rem,
- "halved": halved,
- })
-
- sclock.Unlock()
- }
- }()
-
- ln.Log(ctx, ln.F{
- "action": "accepting_input",
- "svclog": true,
- })
-
- cli.Run()
-}
-
-const (
- notifyThreshold = 3
- autobanThreshold = 10
-)
-
-func scoreCleveland(c *irc.Client, m *irc.Message) {
- if m.Trailing() == "!ohshitkillit" && m.Prefix.Host == "ponychat.net" {
- ln.Fatal(ctx, ln.F{
- "action": "emergency_stop",
- "user": m.Prefix.String(),
- "channel": m.Params[0],
- "svclog": true,
- })
- }
-
- sclock.Lock()
- defer sclock.Unlock()
-
- if m.Command != "PRIVMSG" {
- return
- }
-
- /*
- if !strings.HasSuffix(m.Params[0], monitorChan) {
- return
- }
- */
-
- // channels to ignore
- switch m.Params[0] {
- case "#services", "#/dev/syslog":
- return
- }
-
- //opt-out list
- switch m.Prefix.Name {
- case "Taz", "cadance-syslog", "FromDiscord", "Sonata_Dusk", "CQ_Discord", "Onion":
- return
- case "Sparkler", "Aeyris", "Ryunosuke", "WaterStar", "Pegasique":
- return
- }
-
- sc, ok := scores[m.Prefix.Host]
- if !ok {
- sc = 0
- }
-
- for _, line := range lines {
- if strings.Contains(strings.ToLower(m.Trailing()), line) {
- sc += 1
-
- ln.Log(ctx, ln.F{
- "action": "siren_compare",
- "channel": m.Params[0],
- "user": m.Prefix.String(),
- "scoredelta": 1,
- })
- }
- }
-
- thisLine := strings.ToLower(m.Trailing())
-
- for _, efnLine := range efknockr {
- if strings.Contains(thisLine, strings.ToLower(efnLine)) {
- const delta = 11
- sc += delta
- ln.Log(ctx, ln.F{
- "action": "efknockr_detected",
- "score": sc,
- "user": m.Prefix.String(),
- "channel": m.Params[0],
- "delta": delta,
- })
- }
- }
-
- scores[m.Prefix.Host] = sc
-
- if sc >= notifyThreshold {
- ln.Log(ctx, ln.F{
- "action": "warn",
- "channel": m.Params[0],
- "user": m.Prefix.String(),
- "score": sc,
- })
- }
-
- if sc > autobanThreshold {
- c.Writef("PRIVMSG OperServ :AKILL ADD %s spamming | Cleveland show spammer", m.Prefix.Name)
-
- ln.Log(ctx, ln.F{
- "action": "kline_added",
- "channel": m.Params[0],
- "user": m.Prefix.String(),
- "score": sc,
- "svclog": true,
- })
-
- scores[m.Prefix.Host] = 0
- }
-}
-
-const showLyrics = `my name is cleveland brown and I am proud to be
-right back in my hometown with my new family.
-there's old friends and new friends and even a bear.
-through good times and bad times it's true love we share.
-and so I found a place
-where everyone will know
-my happy mustache face
-this is the cleveland show! haha!`
-
-var lines = []string{
- "my name is cleveland brown and I am proud to be",
- "my name is cl3v3land brown and i am proud to be",
- "right back in my hometown with my new family",
- "right back in my hometown with my n3w family",
- "there's old friends and new friends and even a bear",
- "through good times and bad times it's true love we share.",
- "and so I found a place",
- "where everyone will know",
- "my happy mustache face",
- "this is the cleveland show! haha!",
-}
-
-var efknockr = []string{
- "THIS NETWORK IS FUCKING BLOWJOBS LOL COME TO WORMSEC FOR SOME ICE COLD CHATS",
- "0 DAY BANANA BOMBS \"OK\"",
- "IRC.WORMSEC.US",
- "THE HOTTEST MOST EXCLUSIVE SEC ON THE NET",
- "THIS NETWORK IS BLOWJOBS! GET ON SUPERNETS FOR COLD HARD CHATS NOW",
- "IRC.SUPERNETS.ORG | PORT 6667/6697 (SSL) | #SUPERBOWL | IPV6 READY",
- "▓█▓▓▓▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▄░ ░▄▓▓▓▓▓▓▓▓▓█▓▓▓ IRC.WORMSEC.US | #SUPERBOWL",
- "THIS NETWORK IS BLOWJOBS! GET ON SUPERNETS FOR COLD HARD CHATS NOW",
- "▄",
- "███▓▓▒▒▒▒▒▒▒░░░ ░░░░▒▒▒▓▓▓▓",
- "▓█▓▓▓▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▄░ ░▄▓▓▓▓▓▓▓▓▓█▓▓▓",
- "▒▓▓▓▓▒▒░░▒█▓▓▓▓▓▓▓▓▓▓█░▒░░▒▓▓▓▓▓▓▓▓▓▓▓█▓▓",
- "░▒▓▓▒▒▒▒░░▒▒█▓▓▓▓▓▓▓▓▓█░▒░░░▒▓▓▓▓▓▓▓▓▓▓█▒▓░",
- "▒▒▒▒▒▒▒▒▒▒▒░░▀▀▀▀▀▀▀ ░▒░░ ░▒▒▒▀▀▀▀▀▀▒▓▓▓▒",
- "THE HOTTEST MOST EXCLUSIVE SEC ON THE NET",
- "â–‘â–’â–“â–“â–’â–’â–’â–’â–‘â–‘â–’",
- "Techman likes to fuck kids in the ass!!",
- "https://discord.gg/3b86TH7",
- "| |\\\\",
- "/ \\ ||",
- "( ,( )=m=D~~~ LOL DONGS",
- "/ / | |",
- "ARE YOU MAD THOSE PORCH *ONKEYS ARE ALWAYS BITCHING ABOUT RACISM??",
- "DO YOU THINK THEY BELONG IN A ZOO WITH OBAMA EATING BANANA'S??",
- "PLEASE JOIN #/JOIN ON irc.freenode.net OR MESSAGE VAP0R ON FREENODE",
- "FOR INFORMATION ON A SOON MEETING OF SIMILARLY MINDED INVIDIDUALS",
- "URGENT!! URGENT!! URGENT!! URGENT!! URGENT!!",
- "THE DARKIES WHO LOOK LIKE GUERRILLAS WANT OUT OF THE ZOO!!",
- "IF YOU WANT THEM TO STAY THERE IS A MEETING IN 30 MINS!!!",
- "TRUMP TRUMP TRUMP TRUMP TRUMP TRUMP TRUMP TRUMP TRUMP TRUMP",
- "ARE YOU TIRED OF PEOPLE WHO LOOK LIKE MONKEYS",
- "TRYING TO TAKE MONUMENTS DOWN AND TAKING FREESPEECH AWAY??",
- "HAVE YOU COME TO REALIZE THAT THEY HAVE A IQ OF 10 AND",
- "CAN ONLY EAT BANANAS? IF SO PLEASE CHECK OUT",
- "freedomeu4y6vlqu.onion/6667 (FREESPEECH IRC)",
- "freedomeu4y6vlqu.onion",
- "HAVE YOU EVER WANTED TO USE A TERMINAL IRC PROGRAM?",
- "BUT DID NOT HAVE THE NECESSARY COMPUTER SKILLS?",
- "WEECHAT IS NOW OFFERING TECH SUPPORT FOR ONLY",
- "$10 DOLLARS A YEAR!! PLEASE VISIT #WEECHAT",
- "IRC.FREENODE.NET FOR MORE INFORMATION!!",
- "TECHPONIES IS NOW OFFERING TECH SUPPORT FOR ONLY",
- "$10 DOLLARS A YEAR!! PLEASE VISIT #TECHPONIES",
- "IRC.CANTERNET.ORG FOR MORE INFORMATION!!",
- "ITS FUND-RAISER WEEK!!",
- "DONATIONS ARE NEEDED FOR THIS GREAT WORK!!",
- "PLEASE VISIT #WEECHAT",
- "IRC.FREENODE.NET FOR MORE INFORMATION!!",
- "type !donation in channel for donation info",
- "DON'T YOU THINK ITS TIME FOR A HONEST CONVERSATION",
- "ON HOW DUMB NIGGAS ARE?? PLEASE JOIN THE CONVO AT",
- "dumniggaff3fjhrw.onion or with port 6667 (IRC)",
- "LOOK AT ALL THE NIGGERS LOOTING IN FLORIDA ROFL!!",
- "JOIN THE DISCUSSION torniggaiaoxhlcl.onion/6667",
- "When disaster strikes...niggers go shopping",
- "https://www.youtube.com/watch?v=uVee9A2IK0I",
- "https://www.youtube.com/watch?v=AZkJzWFT6rA <== all niggers rofl",
- "JOIN THE DISCUSSION dumniggaff3fjhrw.onion/6667",
- "ARE YOU TIRED OF THOSE NIGGERS DISRESPECTING THE AMERICAN FLAG??",
- "DO YOU AGREE WITH TRUMP THAT THOSE NIGGERS SHOULD BE FIRED",
- "KEKISTAN IS HELPING ORGANIZING FREE SPEECH WEEK!!",
- "HE CAN BE CONTACTED AT IRC.MADIRC.NET #1337",
- "gv4z277ijqyn7uenr5pdvsovoawibwcjtlqgkxkfifdcs7csshpq.b32.i2p",
- "(accessible with tunnel)",
- "http://lvb6wabr3fuv7l2lmmaj33jwh7ntb7uuhmfmluc7hwtf6rm36k6q.b32.i2p/",
- "(kiwi client on webpage)",
- "PLEASE CALL L0DE RIGHT NOW!!!",
- "415-349-5666",
- "his live show @",
- "https://www.youtube.com/watch?v=rXWx3lPlwgE",
- "WE ARE TRYING TO INCREASE PARTICIPATION IN THIS SHOW",
- "PLEASE CALL AND PARTICIPATE.",
- "LOOK BITCHES CALL THE SHOW",
- "LIVE DISCUSSION ON WHY NIGGERS ARE A CURSE FOR THE USA",
- "or go to #lrh efnet irc for more information",
- "THOSE STUPID MUSLIM SAND NIGGERS HAVE KILLED INNOCENT AMERICANS AGAIN",
- "THE NAZI ORGANIZATION OF AMERICA IS PLANNING AN EMERGENCY MEETING",
- "TODAY @ #/JOIN ON IRC.FREENODE.NET. DO NOT COMPLAIN IN #FREENODE",
- "THIS MEETING IS INTENDED TO BE FOR MORE LIKEMINDED INDIVIDUALS",
- "IF YOU HAVE QUESTIONS PLEASE DONT HESISTATE SENDING A MESSAGE TO",
- "VAP0R ON IRC.FREENODE.NET.",
- "The l0de Radio Hour is LIVE ! Call in now /join #LRH on irc.efnet.org !!! JOIN ! NOW !",
- "https://www.youtube.com/watch?v=DIZqYgaOchY",
- "JOIN #LRH EFNET TO JOIN THE DISCUSSION",
- "ARE YOU INTERESTED IN THE WHITE NATIONALIST MOVEMENT?",
- "DO YOU WONDER WHY WHITE PEOPLE ARE SMARTER THAN NIGGERS?",
- "PLEASE JOIN #/JOIN ON FREENODE IRC NETWORK AND MESSAGE",
- "VAP0R ON HOW TO JOIN THIS GROWING MOVEMENT!!",
- "IRC.SUPERNETS.ORG #SUPERBOWL FEB 4. SUPERBOWL PARTY!!",
- "ASK CHRONO FOR DETAILS!!",
- "Hey, I thought you guys might be interested in this blog by freenode staff member Bryan 'kloeri' Ostergaard https://bryanostergaard.com/",
- "or maybe this blog by freenode staff member Matthew 'mst' Trout https://MattSTrout.com",
- "Read what IRC investigative journalists have uncovered on the freenode pedophilia scandal https://encyclopediadramatica.rs/Freenodegate",
- "Voice your opinions at https://webchat.freenode.net/?channels=#freenode",
- "This message was brought to you by Private Internet Access. Voice your opinions at https://webchat.freenode.net/?channels=%23freenode",
- "<script type=\"text/javascript\" src=\"http://web.nba1001.net:8888/tj/tongji.js\"></script>",
- "Interested in reasonably priced GLOBAL IRC ADVERTISING? Contact me on twitter https://twitter.com/nenolod or linkedin https://www.linkedin.com/in/nenolod",
- "Want IRC ads? https://williampitcock.com/",
- "With our IRC ad service you can reach a global audience of entrepreneurs and fentanyl addicts with extraordinary engagement rates! https://williampitcock.com/",
- "Make sure to report this IP to any DNSBLs you might think of! That'll totally stop the flood. https://dronebl.org/ I also recommend installing https://github.com/kaniini/antissh",
-}