antiroachlol/cmd/swarm/main.go

105 lines
13 KiB
Go

package main
import (
"context"
"fmt"
"log"
"math/rand"
"os"
"strconv"
"strings"
"time"
"golang.org/x/net/proxy"
irc "gopkg.in/irc.v3"
)
var insults = []string{"Leopard", "SailfinMolly", "NarwhalMan", "BluejayMan", "GiantCaveSwallow", "GreatHornedOwl", "SnappingTurtleMan", "Wolverine", "GiantAardvark", "SeaLamprey", "GrasshopperMan", "WhitebrowedGibbon", "GiantLouse", "RedwingedBlackbird", "Fairy", "LorikeetMan", "GiantSkunk", "GiantAlligator", "CaveFish", "Mosquito", "GiantFox", "SaltwaterCrocodileMan", "GiantOsprey", "Lion", "WeaselMan", "Human", "Swordfish", "ClownLoach", "DragonflyMan", "GiantMosquito", "SpongeMan", "GiantCopperheadSnake", "GiantBeetle", "KestrelMan", "BullShark", "AardvarkMan", "PeachfacedLovebirdMan", "GiantThrips", "Capybara", "Rutherer", "MaskedLovebirdMan", "KnuckleWorm", "OnehumpedCamelMan", "Deer", "Cassowary", "BaskingShark", "Wombat", "GiantSkink", "GiantMongoose", "EchidnaMan", "ParakeetMan", "HareMan", "BlackcrestedGibbon", "VultureMan", "Slug", "BushmasterMan", "GiantBobcat", "GiganticPanda", "CapybaraMan", "MagmaMan", "SquidMan", "GiantCrab", "ChinchillaMan", "GiantOstrich", "GiantWhiteStork", "GiantDeer", "RedPanda", "Siamang", "Dwarf", "GiantLeopard", "Bobcat", "Duck", "TwohumpedCamelMan", "GiantBeaver", "Troglodyte", "GiantRattlesnake", "RoachMan", "Satyr", "Albatross", "CheetahMan", "SpottedRatfish", "AdderMan", "GrayLangur", "CockatielMan", "GiantMuskox", "GiantKea", "CaveBlob", "GiantWren", "SeaNettleJellyfish", "GiantMoth", "GiantDingo", "SpiderMonkeyMan", "Oyster", "GiantMaskedLovebird", "GiantSaltwaterCrocodile", "GiantKoala", "BrownRecluseSpiderMan", "MoonSnailMan", "GiantMagpie", "FoxSquirrel", "GiantLionTamarin", "Halibut", "Clownfish", "BobcatMan", "Groundhog", "DarkGnome", "GiantCapuchin", "GiantPlatypus", "HamsterMan", "BrownRecluseSpider", "Harpy", "BloodGnat", "Molemarian", "GroundhogMan", "GiantGrayLangur", "Beetle", "GiantChinchilla", "Buzzard", "BlackMamba", "BeakDog", "Magpie", "DesertTortoiseMan", "ChameleonMan", "IguanaMan", "TigerMan", "BarkScorpion", "GiantAlbatross", "GiantTiger", "Guppy", "GiantSnappingTurtle", "Mantis", "Raccoon", "Cardinal", "RhesusMacaque", "RatMan", "GiantOcelot", "GiantGrizzlyBear", "MountainGoatMan", "Carp", "Beaver", "Tiger", "GiantOtter", "ToadMan", "GreatBarracuda", "MonarchButterfly", "Thrips", "SlugMan", "GiantCaveToad", "GreenTreeFrog", "Moghopper", "GiantKingsnake", "KingCobraMan", "SpermWhaleMan", "Capuchin", "PondGrabber", "MooseCow", "Vulture", "RhinocerosMan", "BlackMambaMan", "GiantBat", "GiantAxolotl", "WhitetipReefShark", "GiantOrca", "Louse", "GrayLangurMan", "Snail", "Tapir", "Herring", "Nautilus", "SeaOtter", "Anole", "SkunkMan", "TwohumpedCamel", "GiantMooseBull", "RedPandaMan", "Damselfly", "Orca", "FlyingSquirrel", "KoalaMan", "GreenDevourer", "WildBoar", "Ibex", "GiantLion", "SeaSerpent", "ReptileMan", "LizardMan", "GiantNarwhal", "GiantMandrill", "Perch", "Oriole", "Hamster", "GiantRat", "GiantRaven", "Wagon", "GiantLizard", "GiantCougar", "Axolotl", "GiantWeasel", "WrenMan", "Creature", "GiantCardinal", "Kobold", "GiantEarthworm", "Cougar", "SnowyOwl", "BarnOwlMan", "PuffinMan", "GiantCoyote", "Hake", "GiantNautilus", "HornbillMan", "Bilou", "LeopardSealMan", "GreyParrotMan", "Unicorn", "GiantOpossum", "Stingray", "Bat", "Kangaroo", "GiantMooseCow", "PurringMaggot", "Impala", "CaveFloater", "Horse", "SwanMan", "Gazelle", "FoulBlendec", "LouseMan", "Elk", "Llama", "PorcupineMan", "PeregrineFalcon", "Lorikeet", "NakedMoleDog", "CaveSpider", "MagpieMan", "CrabMan", "GiantGilaMonster", "GiantCapybara", "Lizard", "HoaryMarmotMan", "WolfMan", "Kingsnake", "CapuchinMan", "GiantAnaconda", "GiantHornbill", "GiantToad", "NautilusMan", "GiantGraySquirrel", "TapirMan", "GiantSnowyOwl", "Bushtit", "GiantWalrus", "GiantOriole", "GiantParakeet", "HoneyBadger", "Cyclops", "SpinyDogfish", "Coati", "GiantRedSquirrel", "WhitespottedPuffer", "OspreyMan", "MothMan", "Chimpanzee", "Mink", "Walrus", "Tigerfish", "GiantDesertTortoise", "DeerMan", "BlueJay", "Sole", "Cat", "ElkMan", "Cow", "IceWolf", "Fly", "Crow", "BatRay", "MagmaCrab", "Angelshark", "Anchovy", "MonarchButterflyMan", "Bonobo", "BarnOwl", "GiganticTortoise", "Seahorse", "Badger", "GilaMonsterMan", "Hydra", "BarkScorpionMan", "Mussel", "WhaleShark", "FireSnake", "GrizzlyBearMan", "LongfinMakoShark", "BuzzardMan", "GrackleMan", "SaltwaterCrocodile", "ElephantSealMan", "Leech", "Koala", "OrcaMan", "LeopardGeckoMan", "GiantBarnOwl", "CongerEel", "GiantSwan", "ElephantSeal", "BlackhandedGibbon", "BeetleMan", "Alpaca", "MantisMan", "GiantSlothBear", "BloodMan", "RedSquirrelMan", "GiantEmu", "GiantCaveSpider", "OpossumMan", "PandaMan", "GiantMole", "Yeti", "OcelotMan", "ArmadilloMan", "Parakeet", "BlackBullhead", "RedSquirrel", "Ant", "Antman", "Merperson", "GiantBrownRecluseSpider", "GiantMantis", "GiantRoach", "GiantPorcupine", "GiantTortoiseWoman", "HyenaMan", "GiantRhesusMacaque", "Shad", "GiantBluejay", "Cavy", "GiantElk", "Hagfish", "Hedgehog", "CaveSwallow", "GiantMonarchButterfly", "MonitorLizard", "GiantWarthog", "HarpSealMan", "SlothBearMan", "Char", "Goose", "Crundle", "Gorlak", "Ocelot", "PondTurtle", "Hippo", "GiantHippo", "Aardvark", "Donkey", "Giraffe", "ThornbackRay", "GiantDamselfly", "Echidna", "LargeRat", "Elf", "Kea", "PileatedGibbon", "MinkMan", "Reindeer", "GiantAdder", "JumpingSpider", "LionMan", "Crab", "JumpingSpiderMan", "AnacondaMan", "GiantHyena", "GiantGreatHornedOwl", "AmethystMan", "SlothMan", "WolverineMan", "GiantRedwingedBlackbird", "Ayeaye", "Ostrich", "GiantKangaroo", "Yak", "Bluefish", "PythonMan", "MoonSnail", "GiantKestrel", "CaveFishMan", "Loon", "Draltha", "BeaverMan", "GiantEagle", "KakapoMan", "Rat", "OrioleMan", "MosquitoMan", "GiantBushtit", "GiantChameleon", "GrizzlyBear", "TwoleggedRhinoLizard", "PeachfacedLovebird", "FlyingSquirrelMan", "CassowaryMan", "GiantGroundhog", "ForgottenBeast", "MooseBull", "CaveDragon", "SilveryGibbon", "GiantKiwi", "HoaryMarmot", "Guineafowl", "LargeRoach", "GiantSloth", "SlothBear", "GiantLoon", "CapHopper", "GiantKingCobra", "Puffin", "GiantAnole", "Octopus", "LionTamarin", "PenguinMan", "FireMan", "CuttlefishMan", "CreepingEye", "Bumblebee", "Coyote", "Wren", "GiantPolarBear", "KeaMan", "Jackal", "Adder", "MonitorLizardMan", "Milkfish", "HorseshoeCrabMan", "HarpSeal", "BrownBullhead", "MountainGoat", "FrillShark", "GiantSponge", "Termite", "MountainGnome", "ChipmunkMan", "GiantGrasshopper", "Sasquatch", "Dragon", "Bugbat", "WhiteStork", "OctopusMan", "EmuMan", "GiantGrackle", "PondTurtleMan", "CoyoteMan", "HammerheadShark", "Swan", "GiantPangolin", "KingCobra", "LynxMan", "Weasel", "GilaMonster", "Skunk", "AlligatorMan", "DemonRat", "Panda", "Chinchilla", "RainbowTrout", "GiantTick", "FoxMan", "GiantPenguin", "PhantomSpider", "Opah", "Iguana", "MuskoxMan", "Hornbill", "TooSmallForPressurePlates", "GiantLeopardGecko", "BronzeColossus", "Goat", "Mule", "RattlesnakeMan", "WarthogMan", "KiwiMan", "GiantVulture", "GiantLorikeet", "WalrusMan", "RedwingedBlackbirdMan", "Eagle", "Olm", "DamselflyMan", "MooseMan", "DesertTortoise", "Stoat", "CardinalMan", "BushtitMan", "Python", "GiantPondTurtle", "Ogre", "GiantPython", "GiantIguana", "EmperorPenguin", "GiantLeopardSeal", "GrayGibbon", "WormMan", "BluePeafowl", "GiantDragonfly", "Kestrel", "GiantWolverine", "GiantOlm", "GiantPeregrineFalcon", "CopperheadSnake", "GreenTreeFrogMan", "GreyParrot", "FlyMan", "WaterBuffalo", "GiantEchidna", "GiantWolf", "BrookLamprey", "PolarBearMan", "GiantBuzzard", "Pig", "Troll", "SeaMonster", "GiantTwohumpedCamel", "CoatiMan", "IbexMan", "GreatHornedOwlMan", "GiantCheetah", "WhiteStorkMan", "Chipmunk", "MudMan", "GiantCassowary", "SparrowMan", "RodentMan", "PangolinMan", "StoatMan", "KangarooMan", "Sparrow", "WombatMan", "GiantBlackMamba", "CaveCrocodile", "GiantCuttlefish", "MaskedLovebird", "GiantAyeaye", "Skink", "Alligator", "GiantSpiderMonkey", "GiantCoati", "ElkBird", "MandrillMan", "Sloth", "OstrichMan", "Gorilla", "Mandrill", "LeechMan", "Tick", "GiantKakapo", "GiantHoaryMarmot", "VoraciousCaveCrawler", "Lungfish", "GiantTortoise", "OtterMan", "Minotaur", "GiantMountainGoat", "GiantElephantSeal", "TickMan", "ElephantSealWoman", "GiantHedgehog", "CreepyCrawler", "MooseWoman", "Sponge", "GiantCockatiel", "Orangutan", "BlackBear", "LeopardSeal", "GiantLynx", "IronMan", "Coelacanth", "SpermWhale", "JackalMan", "Porcupine", "SteelheadTrout", "BlindCaveBear", "PlumpHelmetMan", "NurseShark", "HungryHead", "SpottedWobbegong", "CommonSkate", "Dragonfly", "Mackerel", "RaccoonMan", "GiantGazelle", "RhesusMacaqueMan", "GiantFly", "AcornFly", "AlbatrossMan", "MantaRay", "OceanSunfish", "GiantFlyingSquirrel", "WildBoarMan", "Pixie", "Sheep", "Fox", "HoneyBee", "GiantGrouper", "GreatWhiteShark", "Narwhal", "SerpentMan", "BadgerMan", "Grimeling", "Chicken", "GiantHamster", "GiantBushmaster", "Jabberer", "MongooseMan", "Moth", "Strangler", "Drunian", "GabbroMan", "BluefinTuna", "GiantJaguar", "Hare", "Muskox", "Rhinoceros", "GiantTiercelPeregrine", "Grackle", "Giant", "CaveSwallowMan", "GazelleMan", "TooBigForPressurePlates", "GiantHarpSeal", "Mongoose", "TigerShark", "Squid", "Salmon", "Dog", "Dingo", "GiantOnehumpedCamel", "GiantLeech", "BlindCaveOgre", "CommonSnappingTurtle", "Jaguar", "KingsnakeMan", "GraySquirrel", "Goblin", "BlacktipReefShark", "GiantHare", "Penguin", "Armadillo", "Pangolin", "GiantChipmunk", "LongnoseGar", "RavenMan", "HelmetSnake", "GiantPeachfacedLovebird", "Flounder", "Turkey", "Manera", "GiantHorseshoeCrab", "AyeayeMan", "AlligatorSnappingTurtle", "Worm", "LittlePenguin", "CopperheadSnakeMan", "PlatypusMan", "Toad", "Lynx", "BlizzardMan", "GiantHoneyBadger", "LoonMan", "Glasseye", "HoneyBadgerMan", "GiantGreyParrot", "LionTamarinMan", "Grasshopper", "Cuttlefish", "HippoMan", "Chameleon", "Anaconda", "GiantRaccoon", "GiantBlackBear", "RiverOtter", "HedgehogMan", "GiantMoonSnail", "CougarMan", "Nightwing", "Osprey", "GiantSpermWhale", "OlmMan", "GiantTapir", "GiantRhinoceros", "ImpalaMan", "Warthog", "SkinkMan", "Roc", "Emu", "GiantRedPanda", "FireflyMan", "GiantWildBoar", "BlueShark", "Cod", "Wolf", "GiantJackal", "HorseshoeCrab", "Raven", "GiantSparrow", "GiantWombat", "YellowBullhead", "Platypus", "AmphibianMan", "LeopardMan", "GiantSlug", "GiantArmadillo", "Reacher", "Ettin", "JaguarMan", "FluffyWambler", "TooBigForBridges", "EagleMan", "CaveLobster", "GiantMonitorLizard", "Kiwi", "CrowMan", "GiantStoat", "Kakapo", "GiraffeMan", "Rattlesnake", "OnehumpedCamel", "GiantJumpingSpider", "GiganticSquid", "Elephant", "SnowyOwlMan", "ThripsMan", "Cheetah", "GiantElephant", "SnailMan", "ShortfinMakoShark", "GiantBarkScorpion", "Gremlin", "BatMan", "Opossum", "FireImp", "FleshBall", "Pike", "BlackBearMan", "GiantPuffin", "PolarBear", "ElephantMan", "SpiderMonkey", "FloatingGuts", "PeregrineFalconMan", "GiantImpala", "AxolotlMan", "GiantFirefly", "Hyena", "Sturgeon", "WhitehandedGibbon", "GiantSnail", "GiantOctopus", "Marlin", "GiantGreenTreeFrog", "Bushmaster", "Cockatiel", "GiantBadger", "GiantCrow", "Rabbit", "GiantMink", "BandedKnifefish", "LeopardGecko", "AnoleMan", "GraySquirrelMan", "Firefly", "GiantIbex", "GiantGiraffe", "GiantTortoiseMan", "DingoMan"}
var s = rand.NewSource(time.Now().UnixNano()) // initialize global pseudo random generator
var r = rand.New(s)
var channel string
var victim string
func HandleRequest(ctx context.Context) (string, error) {
// So i was too lazy to get rid of the boilerplate
// Set up IRC connection
server := os.Getenv("IRC_SERVER")
if server == "" {
log.Fatal("Set IRC_SERVER!")
}
channel = os.Getenv("IRC_CHANNEL")
if channel == "" {
log.Fatal("Set IRC_CHANNEL!")
}
victim = os.Getenv("IRC_VICTIM")
if victim == "" {
log.Fatal("Set IRC_VICTIM!")
}
dialer := proxy.FromEnvironment()
conn, err := dialer.Dial("tcp", server)
if err != nil {
log.Fatal(err)
}
hostname, _ := os.Hostname()
config := irc.ClientConfig{
Nick: insults[r.Intn(len(insults))],
User: hostname,
Name: "dabbing on " + victim,
Handler: irc.HandlerFunc(handleIRCCon), // See below for callback
}
client := irc.NewClient(conn, config)
err = client.Run()
return fmt.Sprintf("i died"), err
}
func handleIRCCon(c *irc.Client, m *irc.Message) {
sent := 0
// Only one reader, prob not necessary
// Handle connection established
if m.Command == "001" {
// 001 is welcome event
c.Write("JOIN " + channel)
} else if m.Command == "PRIVMSG" && c.FromChannel(m) {
// Handle chat message to print stats
text := strings.Split(m.Trailing(), " ")
if text[0] == c.CurrentNick()+":" && text[len(text)-1] == "stats" {
c.WriteMessage(&irc.Message{
Command: "PRIVMSG",
Params: []string{
m.Params[0],
"I've sent " + strconv.FormatInt(int64(sent), 10) + " invites to " + victim + " :)",
},
})
} else if text[len(text)-1] == "name" {
nick := insults[r.Intn(len(insults))]
c.Write("NICK " + nick)
} else if text[len(text)-1] == "invite" {
c.Write("INVITE " + victim + " " + channel)
sent++
} else if strings.Contains(m.Trailing(), "greetings") {
c.WriteMessage(&irc.Message{
Command: "PRIVMSG",
Params: []string{
m.Params[0],
victim + ": hi",
},
})
}
}
}
func main() {
ctx, _ := context.WithCancel(context.Background())
ret, err := HandleRequest(ctx)
if err != nil {
log.Fatalln(err)
}
log.Println(ret)
}