!7 // NOTE: make sure the SOA is correct! static double refreshEvery = 0 /*60*/; static int smartBotTimeOut = 60*30; sS zone = [[ botcompany.de. IN SOA ns1.stefantrades.pro. stefan\.reich\.maker\.of\.eye.gmail.com. ( 20190925 ; Serial 60M ; Refresh 15M ; Retry 7D ; Expiry 30M ) ; Minimum @ IN NS ns1.stefantrades.pro. @ IN NS ns2.stefantrades.pro. @ IN A 167.86.121.181 c8 IN A 167.86.121.181 home 300 IN A 2.203.147.51 oldmain IN A 185.183.156.46 coffee IN A 195.154.179.147 *.coffee IN A 195.154.179.147 vnc-coffee IN A 195.154.179.147 transpile-coffee IN A 195.154.179.147 avor IN A 195.154.179.147 robin-avor IN A 195.154.179.147 christian-avor IN A 195.154.179.147 avor-qa IN A 195.154.179.147 *.avor-qa IN A 195.154.179.147 cruddie IN A 195.154.179.147 *.cruddie IN A 195.154.179.147 stripe-test IN A 195.154.179.147 meta-bot IN A 195.154.179.147 ada-v2 IN A 195.154.179.147 fia IN A 195.154.179.147 e-buck IN A 195.154.179.147 ada-aws IN A 18.233.63.26 ; sometimes the * entry doesn't work? vnc.botcompany.de caused NXDOMAIN * IN A 167.86.121.181 vnc IN A 167.86.121.181 code IN A 167.86.121.181 www IN A 167.86.121.181 butter IN A 167.86.121.181 stefans-os IN A 167.86.121.181 smartbot IN A 167.86.121.181 create IN A 167.86.121.181 mail IN A 167.86.121.181 javax IN A 167.86.121.181 ada IN A 167.86.121.181 mech IN A 167.86.121.181 theadmi IN A 176.58.127.141 theadmi2 IN A 176.58.127.141 tester IN A 144.126.145.56 gazellebot IN A 173.212.209.120 ;pays5-bot IN A 173.212.209.120 pays5-bot IN A 195.154.179.147 bea-bot IN A 173.212.209.120 tlc IN A 195.154.179.147 big IN A 192.99.13.227 ;@ MX 10 mail1.domainssaubillig.de. @ MX 10 mail.botcompany.de. mail MX 10 mail.botcompany.de. _acme-challenge.botcompany.de. IN TXT "aWAwa7cLpPcFoIylAqQn13tmNyfZ6H36GUt2dFyt-eM" botcompany.de. IN TXT "google-site-verification=YL5Hu5zvww8np30b4LLv_fgK0rppl2uzUKe8-14Gk98" ]]; // Note: zone2 not active yet sS zone2 = [[ gazelle.rocks. IN SOA ns1.stefantrades.pro. stefan\.reich\.maker\.of\.eye.gmail.com. ( 20190101 ; Serial 5M ; Refresh 15M ; Retry 7D ; Expiry 30M ) ; Minimum @ IN NS ns1.stefantrades.pro. @ IN NS ns2.stefantrades.pro. @ IN A 173.212.209.120 * IN A 173.212.209.120 ;@ MX 10 mail1.domainssaubillig.de. ]]; lib 1008223 // dnsjava lib 1010766 // EagleDNS lib 1004911 // log4j import se.unlogic.eagledns.EagleDNS; static File zonesDir; static EagleDNS eagleDNS; p { tryToAcquirePort5000(); S conf = loadSnippet(#1010767); zonesDir = programFile("zones"); saveZones(); conf = conf.replace( [[zones]], [[]] + f2s(zonesDir) + [[]]); File configFile = saveProgramTextFile("config.xml", conf); //eagleDNS = nuObject("se.unlogic.eagledns.EagleDNS", f2s(configFile)); print("Making EagleDNS."); pcall { eagleDNS = new EagleDNS(f2s(configFile)); } // For some weird reason, on the servers, no lines are printed // after this point... but they still execute!? (Auto-reload works.) printAndProgramLog("Made EagleDNS." + (eagleDNS == null ? "..not" : "")); bot("Eagle DNS."); if (refreshEvery != 0) doEvery_daemon(refreshEvery, r refresh); // Restart after successful transpile print("Making SnippetUpdateConnector."); ownResource(snippetUpdateConnector(verbose := true)); ownResource(vmBus_onMessage snippetUpdate(voidfunc(L l) { print("Got snippet update: " + l); S uri = getString(l, 1); new Matches m; if (swic(uri, "/transpileOK/", m)) if (sameSnippetID(programID(), firstIntAsString(m.rest()))) { programLog("Restarting"); restart(); } })); } answer { if "test" ret "OK"; if "refresh" { refresh(); ret "OK"; } } static void refresh() { saveZones(); eagleDNS.reloadZones(); } static void saveZones { S acmeChallenge = loadTextFileTrim(userFile("acme-challenge.txt")); // Note: not used anymore, just edit this source if (nempty(acmeChallenge)) zone = jreplace(zone, "_acme-challenge.botcompany.de. IN TXT ", "_acme-challenge.botcompany.de. IN TXT " + quote(unnull(acmeChallenge))); print(zone); saveTextFile(newFile(zonesDir, "botcompany.de"), zone); saveTextFile(newFile(zonesDir, "gazelle.rocks"), zone2); }