Advertisement
blkdragon

Untitled

May 21st, 2024 (edited)
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
TCL 52.32 KB | None | 0 0
  1. # ------------------------------------------------------------------------------------------------
  2. # armour.conf v5.0 - 2024-05-21
  3. # ------------------------------------------------------------------------------------------------
  4. #     _                                    
  5. #    / \   _ __ _ __ ___   ___  _   _ _ __
  6. #   / _ \ | '__| '_ ` _ \ / _ \| | | | '__|
  7. #  / ___ \| |  | | | | | | (_) | |_| | |  
  8. # /_/   \_\_|  |_| |_| |_|\___/ \__,_|_|  
  9. #                                          
  10. #
  11. # Abuse and channel management script for eggdrop bots on the IRC networks.
  12. #
  13. # https://armour.bot
  14. #
  15. # Armour automatic onjoin scanning be be placed in one of three modes:
  16. #    ON        :    Automatic scans upon client channel /join
  17. #    SECURE    :    Restricted channel modes (e.g., +Dm) with actions post-scan
  18. #    OFF       :    Manual scans only
  19. #
  20. # ------------------------------------------------------------------------------------------------
  21. # SUPPORTING
  22. # ------------------------------------------------------------------------------------------------
  23. #
  24. #    whitelists
  25. #    blacklists
  26. #    dnsbl scans  :    dnswl exemptions and remote 'bounce' bot supported
  27. #    port scans   :    remote 'bounce' bot supported
  28. #    onchan scans :    remote 'bounce' bot supported
  29. #
  30. # ------------------------------------------------------------------------------------------------
  31. # WHITELIST & BLACKLIST TYPES:
  32. # ------------------------------------------------------------------------------------------------
  33. #
  34. #    user    :        authenticated username
  35. #    host    :        hostmask, hostname, IP and CIDR notation accepted
  36. #    regex   :        nick!user@host/rname
  37. #    text    :        channel text matches
  38. #    country :        geo location ip lookup
  39. #    asn     :        autonomous system number lookup
  40. #    chan    :        onchan #channel
  41. #    rname   :        realname
  42. #
  43. # ------------------------------------------------------------------------------------------------
  44. # WHITELIST ACTIONS:
  45. # ------------------------------------------------------------------------------------------------
  46. #
  47. #    A:    Accept User (exempt scans) -- default
  48. #    O:    Op User
  49. #    V:    Voice User
  50. #
  51. # ------------------------------------------------------------------------------------------------
  52. # BLACKLIST ACTIONS
  53. # ------------------------------------------------------------------------------------------------
  54. #
  55. #    B:    KickBan User
  56. #
  57. # ------------------------------------------------------------------------------------------------
  58. #
  59. # Code by       :  Empus @ Undernet - empus@undernet.org
  60. # Last modified :  2024-05-20
  61. #
  62. # Please contact me should you need any assistence, but I hope most config options are explanatory.
  63. #
  64. # Documentation can be found at: https://armour.bot
  65. #
  66. # Contact me at #armour on Undernet
  67. #
  68. # ------------------------------------------------------------------------------------------------
  69. namespace eval arm {
  70. # ------------------------------------------------------------------------------------------------
  71.  
  72.  
  73.  
  74. # ------------------------------------------------------------------------------------------------
  75. # GENERAL SETTINGS
  76. # ------------------------------------------------------------------------------------------------
  77.  
  78. # -- bot name variable
  79. # -- used to automate db filename and assist script updates
  80. # -- ensure this *.conf file is named as BOTNAME.conf
  81. # -- if multiple Armour bots run from the same eggdrop directory, each MUST have a different value
  82. set cfg(botname) "kratos"
  83.  
  84. # -- alert users if they don't have a password set? (0|1) - [0]
  85. set cfg(alert:nopass) 1
  86.  
  87. # -- debug type? (putlog|putloglev) - [putloglev]
  88. # putlog will log everything to partyline (very verbose!)
  89. # putloglev allows debug levels to be used by enabling each level (1-5) with .console +N
  90. #    .console +1
  91. #    .console +2
  92. #    .console +3
  93. #   ... etc
  94. set cfg(debug:type) "putloglev"
  95.  
  96.  
  97. # -- file logging level (0-4) - [0]
  98. # -- data logged to ./armour/logs/<botname>.log
  99. # -- levels:
  100. #       0: most important information
  101. #       1: gentle verbosity
  102. #       2: extra information
  103. #       3: useful for debugging
  104. #       4: extremely verbose
  105. set cfg(log:level) ""
  106.  
  107.  
  108. # ------------------------------------------------------------------------------------------------
  109. # UPDATE SETTINGS
  110. # ------------------------------------------------------------------------------------------------
  111.  
  112. # -- run hourly check for new script updates? (0|1) - [1]
  113. # -- notes are sent to global level 500 users when updates are found
  114. set cfg(update) "0"
  115.  
  116. # -- send notes to global 500 users when new script versions are found? (0|1) - [1]
  117. set cfg(update:notes) 1
  118.  
  119. # -- automatically update script when new updates are found? (0|1) - [0]
  120. # -- notes are sent to global level 500 users when updates are installed
  121. # -- requires cfg(update) to be enabled
  122. set cfg(update:auto) 0
  123.  
  124. # -- github branch to check and apply updates from - [master]
  125. set cfg(update:branch) "master"
  126.  
  127. # -- automatically remove old script backups after N days - [7]
  128. set cfg(update:flush) 7
  129.  
  130. # -- enable debug mode to download and stage new updates but do not execute (0|1) - 0
  131. set cfg(update:debug) 0
  132.  
  133.  
  134.  
  135. # ------------------------------------------------------------------------------------------------
  136. # USER REGISTRATION SETTINGS
  137. # ------------------------------------------------------------------------------------------------
  138.  
  139. # -- allow users to self-register bot usernames? (0|1) - [1]
  140. set cfg(register) 1
  141.  
  142. # -- if allowed, users must be in which channels to self-register usernames?
  143. # space delimited; can be empty to allow in all chans
  144. set cfg(register:inchan) ""
  145.  
  146. # -- what global access level to give to newusers? - [1]
  147. # -- applies to 'newuser' command when no global level given, and to 'register' command
  148. set cfg(register:level) 1
  149.  
  150. # -- send notes to global level 500 users when newuser is created with 'register' cmd? (0|1) - [1]
  151. set cfg(note:register) 1
  152.  
  153. # -- random password string length
  154. set cfg(randpass) 10
  155.  
  156.  
  157.  
  158. # ------------------------------------------------------------------------------------------------
  159. # NETWORK SETTINGS
  160. # ------------------------------------------------------------------------------------------------
  161.  
  162. # -- ircd type [1-2] - [1]
  163. # 1: ircu/Unreal (e.g., Undernet, Quakenet)
  164. # 2: IRCnet/EFnet
  165. # 3: InspIRCd/Solanum/ircd-seven
  166. set cfg(ircd) 1
  167.  
  168. # -- connected via ZNC bouncer? (0|1) - [0]
  169. # this changes 'jump' command behaviour
  170. set cfg(znc) 0
  171.  
  172. # -- add automatic blacklist host entry upon g-line? (0|1) - [1]
  173. set cfg(gline:auto) 1
  174.  
  175. # -- required G-Line reason mask for above to apply (wildcards) - [G-Lined *]
  176. set cfg(gline:mask) "G-Lined *"
  177.  
  178. # -- mask for which G-Lines do NOT add blacklist entry (wildcard) - [AUTO *]
  179. set cfg(gline:nomask) "G-lined (AUTO *"
  180.  
  181. # -- bot realname on IRC
  182. set cfg(realname) "Kratos"
  183.  
  184. # -- hostname of services - [undernet.org]
  185. set cfg(servicehost) "undernet.org"
  186.  
  187.  
  188.  
  189. # ------------------------------------------------------------------------------------------------
  190. # BOT SETTINGS
  191. # ------------------------------------------------------------------------------------------------
  192.  
  193. # -- command prefix [c]
  194. # If prefix is a letter, command follows (i.e. c op <chan> <nick>)
  195. # If prefix is a control char, command is embedded (i.e. !op <chan> <nick>)
  196. # prefix cannot be *
  197. set cfg(prefix) "k"
  198.  
  199. # -- allow use of nickname (with or without nick completion char :) as control char? (0|1) - [1]
  200. set cfg(char:nick) 1
  201.  
  202. # -- require tab completion char ':' on nickname prefix?    (0|1) - [1]
  203. set cfg(char:tab) 1
  204.  
  205. # -- allow global prefix char '*'  (0|1) - [0]
  206. set cfg(char:glob) 1
  207.  
  208. # -- allow command shortcuts? (0|1) - [1]
  209. # k = kick      kb = kickban    b = black
  210. # a = add       v = view        r = rem
  211. # e = exempt    s = stats       t = topic
  212. # o = op        d = deop        u = userlist
  213. set cfg(cmd:short) 1
  214.  
  215. # -- default mode on load? (on|off|secure) - [on]
  216. set cfg(mode) "secure"
  217.  
  218. # -- automatically change mode based on changing of mode +D and -D? (0|1) - [1]
  219. set cfg(mode:auto) 1
  220.  
  221. # -- allow jump command to specify server? (0|1) - [1]
  222. set cfg(jump) 1
  223.  
  224. # -- send help and syntax responses from public commands via /notice? (0|1) - [0]
  225. set cfg(help:notc) 0
  226.  
  227. # -- also sent web documentation links in help command responses? (0|1)? - [1]
  228. set cfg(help:web) 1
  229.  
  230. # -- only output usage and web links in help responses? (0|1)? - [1]
  231. set cfg(help:webonly) 1
  232.  
  233. # -- stack voice modes when in secure mode? - [0|1]
  234. # -- this will slow down voicing of new users, by the time set in cfg(stack:secs)
  235. set cfg(stackvoice) 1
  236.  
  237. # -- stackvoice timer (secs) - [5]
  238. set cfg(stack:secs) 5
  239.  
  240. # -- default whitelist reason - [regular]
  241. set cfg(def:wreason) "regular"
  242.  
  243. # -- default blacklist reason - [abuse]
  244. set cfg(def:breason) "abuse"
  245.  
  246. # -- auto add blacklist entries on floodnet?
  247. set cfg(auto:black) 1
  248.  
  249. # -- netsplit memory timeout (mins) - [60]
  250. set cfg(split:mem) 60
  251.  
  252. # -- lockdown eggdrop dcc commands? (0|1) - [1]
  253. set cfg(lockegg) 1
  254.  
  255. # -- if locked egg, what flag is required for all commands? - [n]
  256. set cfg(lockegg:flag) "n"
  257.  
  258. # -- default temporary exemptions last for how long? (mins) - [5]
  259. # - via 'exempt' command, time can be overriden
  260. set cfg(exempt:time) 5
  261.  
  262. # -- allow users to set their own channel greetings? (0|1) - [1]
  263. set cfg(greet:self) 1
  264.  
  265.  
  266.  
  267. # ------------------------------------------------------------------------------------------------
  268. # NOTE SETTINGS
  269. # ------------------------------------------------------------------------------------------------
  270.  
  271. # -- allow user notes? (0|1) - [1]
  272. set cfg(note) 1
  273.  
  274. # -- global command level to send notes to all users? - [450]
  275. set cfg(note:glob) 450
  276.  
  277. # -- send users note read receipts? (0|1) - [1]
  278. set cfg(note:receipt) 1
  279.  
  280. # -- send users notes when added to channels? (0|1) - [1]
  281. set cfg(note:adduser) 1
  282.  
  283. # -- send users notes when removed from channels? (0|1) - [1]
  284. set cfg(note:remuser) 1
  285.  
  286. # -- send users notes when channel level is modified? (0|1) - [1]
  287. set cfg(note:level) 1
  288.  
  289.  
  290.  
  291. # ------------------------------------------------------------------------------------------------
  292. # CHANNEL SETTINGS
  293. # ------------------------------------------------------------------------------------------------
  294.  
  295. # --- channels to NOT operate on. comma separated
  296. # -- command chans (comma delimited). leaeve empy to allow on all channels
  297. set cfg(chan:nocmd) ""
  298.  
  299. # -- autologin /who cycle (secs) - [60]
  300. # -- how frequently to check the channel list for people who authenticated to X after joining
  301. # - only if enabled above
  302. set cfg(autologin:cycle) 60
  303.  
  304. # -- default command chan (for applicable privmsg & dcc commands)
  305. set cfg(chan:def) "#usa"
  306.  
  307. # -- reporting channel (backchan)
  308. # -- useful for command logging and other diagnostics
  309. set cfg(chan:report) "#BlkDragon"
  310.  
  311. # -- how long to disable floodnet detection after chanmode '+d' (secs) - [60]
  312. # - will be automatically re-enabled on chanmode '-d' anyway
  313. set cfg(time:moded) 60
  314.  
  315. # -- how many recently joined hostnames to track? (num) - [600]
  316. # - for fast blacklists using type 'last'
  317. set cfg(lasthosts) 600
  318.  
  319. # -- append the username that set a topic, when set via bot? (0|1) - [1]
  320. set cfg(topic:who) 0
  321.  
  322. # -- the frequency in mins to check if topic should be reset when 'autotopic' is enabled - [60]
  323. set cfg(atopic:period) 60
  324.  
  325.  
  326.  
  327. # ------------------------------------------------------------------------------------------------
  328. # FLOAT LIMIT SETTINGS
  329. # ------------------------------------------------------------------------------------------------
  330.  
  331. # -- automatically enable FLOATLIM with default values for new channels? (0|1) - [1]
  332. set cfg(float:auto) 1
  333.  
  334. # -- the default frequency in seconds to check if limit should be adjusted - [60]
  335. # -- can be overridden with: modchan <chan> floatperiod <value>
  336. set cfg(float:period) 60
  337.  
  338. # -- the default margin to set limit above currentUser count - [10]
  339. # -- can be overridden with: modchan <chan> floatmargin <value>
  340. set cfg(float:margin) 10
  341.  
  342. # -- the grace limit to trigger limit adjustment - [3]
  343. # -- can be overridden with: modchan <chan> floatgrace <value>
  344. set cfg(float:grace)  3
  345.  
  346.  
  347.  
  348. # ------------------------------------------------------------------------------------------------
  349. # SERVICE AUTHENTICATION SETTINGS
  350. # ------------------------------------------------------------------------------------------------
  351.  
  352. # -- authentication username
  353. # leave blank if login not used or handled in another script
  354. # leave blank if using NickServ auth mechanism below
  355. set cfg(auth:user) "GodOfWar"
  356.  
  357. # -- authentication password
  358. # leave blank if login not used or handled in another script
  359. set cfg(auth:pass) "eM1L0mlN"
  360.  
  361. # -- TOTP (2FA) secret base32 key
  362. # leave blank to disable 2FA authentication
  363. # note that this currently requires 'oathtool' to be installed on the server
  364. set cfg(auth:totp) ""
  365.  
  366. # -- mechanism for authentication (gnuworld|nickserv) - [gnuworld]
  367. # set to "gnuworld" for Undernet
  368. # set to "nickserv" for networks with NickServ
  369. set cfg(auth:mech) "gnuworld"
  370.  
  371. # -- auth service nickname - [X]
  372. # set to "X" for Undernet
  373. # set to "NickServ" for networks with NickServ
  374. set cfg(auth:serv:nick) "X"
  375.  
  376. # -- auth service host - [channels.undernet.org]
  377. # -- ie. /msg x@channels.undernet.org login <user> <pass>
  378. # leave blank if using NickServ auth mechanism
  379. set cfg(auth:serv:host) "channels.undernet.org"
  380.  
  381. # -- extension for umode +x registered users - [users.undernet.org]
  382. # -- change with care to suit your own network
  383. set cfg(xhost:ext) "users.undernet.org"
  384.  
  385. # -- use umode +x? (host hiding) (0|1) - [1]
  386. set cfg(auth:hide) 1
  387.  
  388. # -- frequency for authentication retries (mins) - [5]
  389. set cfg(auth:retry) 5
  390.  
  391. # -- use a random nickname until authenticated? (0|1) - 0
  392. set cfg(auth:rand) 0
  393.  
  394. # -- wait to join channels until authenticated? (0|1) - 0
  395. set cfg(auth:wait) 0
  396.  
  397.  
  398.  
  399. # ------------------------------------------------------------------------------------------------
  400. # KICKBAN SETTINGS
  401. # ------------------------------------------------------------------------------------------------
  402.  
  403. # -- how to set channel kickbans? (chan|x) - [chan]
  404. # use "x" to set bans via GNUWorld's mod.cservice service (ie. Undernet's X)
  405. # otherwise, use 'chan' to set server kicks and bans
  406. set cfg(ban) "x"
  407.  
  408. # -- X ban level (if using X) - [100]
  409. set cfg(ban:level) "100"
  410.  
  411. # -- how long to set temp bans? - [3d]
  412. # units supported:
  413. #    s = seconds
  414. #    m = minutes
  415. #    h = hours
  416. #    d = days
  417. set cfg(ban:time) "3d"
  418.  
  419. # -- autoban on blacklist entry addition? (0|1) - [1]
  420. set cfg(ban:auto) 1
  421.  
  422. # -- include 'userid' in banmask where ~ not present in ident and user not authed to services? (0|1) - [1]
  423. # -- note that idents with ~ will still always ban as *!~*@host
  424. # 0: *!*@host
  425. # 1: *!user@host
  426. set cfg(ban:idents) 1
  427.  
  428. # -- how long to set temp adaptive regex bans? - [7d]
  429. set cfg(ban:time:adapt) "7d"
  430.  
  431. # -- channel modes to set when channel banlist is full - [+r]
  432. set cfg(ban:full:modes) "+Dmr"
  433.  
  434. # -- how long (secs) to remember 'newcomers' for (for stringent public chatter rules) - [60]
  435. # -- stringent rules apply to newcomers after first joining channel:
  436. # - excessive word repeat
  437. # - profanity (badwords)
  438. # - spam (channels / website)
  439. # - coloured text
  440. set cfg(time:newjoin) "60"
  441.  
  442. # -- badword masks for public chatter (space delimited with wildcards)
  443. # -- note: more powerful string now matching supported by 'text' type blacklist entries
  444. set cfg(badwords) ""
  445.  
  446. # -- time to allow automatic removal of recent bans by specifying blacklist id (secs) - [3600]
  447. # - also provides memory used for optional blacklist removals based on unbans
  448. set cfg(id:unban:time) 3600
  449.  
  450. # -- automatically remove blacklist entries when channel ban is removed? (0|1) - [1]
  451. # - user must have 'rem' access; unban must occur within cfg(id:unban:time) of ban
  452. set cfg(black:unban:rem) 1
  453.  
  454.  
  455.  
  456. # ------------------------------------------------------------------------------------------------
  457. # SCANNER SETTINGS
  458. # ------------------------------------------------------------------------------------------------
  459.  
  460. # -- include blacklist entry value in kick messages? (0|1) - [0]
  461. set cfg(black:kick:value) 0
  462.  
  463. # -- include blacklist reason in kick messages? (0|1) - [1]
  464. set cfg(black:kick:reason) 1
  465.  
  466. # -- auto convert hostnames to IP addresses when using 'add' command for type 'host'? (0|1) - [0]
  467. set cfg(list:host:convert) 0
  468.  
  469. # -- run blacklist scans on type 'country' when user has resolved ident? - [0]
  470. # -- whitelist scans will always run
  471. set cfg(country:ident) 0
  472.  
  473. # -- enable dnsbl scans? (0|1) - [1]
  474. set cfg(dnsbl) 1
  475.  
  476. # -- enable botnet (remote) dnsbl scans? (0|1) - [1]
  477. set cfg(dnsbl:remote) 0
  478.  
  479. # -- dnsbl, description and score
  480. # last parameter (0|1) determines if RBL is only used for manual scans (scanrbl cmd) or not
  481. # <rbl> {<desc> <score> <onlymanual>}
  482. # - score must be + or - with a score of >0 constituting a hit
  483. # - if 'onlymanual' is set, RBL is only checked when 'scanrbl' command is used but not in auto scans
  484. # format to add:
  485. # set addrbl(<rbl>) "{<description>} <score> <onlymanual>"
  486. set addrbl(rbl.ircbl.org) "IRCBL +1.0 1"
  487. set addrbl(sbl.cymru.com) "{Cymru SBL} +1.0 0"
  488. set addrbl(rbl.undernet.org) "{Undernet} +1.0 1"
  489. set addrbl(pbl.cymru.com) "{Cymru PBL} +1.0 0"
  490. set addrbl(dnsbl.dronebl.org) "DroneBL +1.0 0"
  491. set addrbl(mbl.cymru.com) "{Cymru MBL} +1.0 0"
  492. set addrbl(bbl.cymru.com) "{Cymru BBL} +1.0 0"
  493. set addrbl(rbl.evilnet.org) "{EvilNet BBL} +1.0 0"
  494. #set addrbl(zen.spamhaus.org) "{Spamhaus Zen} +1.0 0"; # -- auto scanner (and manual); must not use public nameservers
  495.  
  496. # -- enable port scanner? (0|1) [1]
  497. set cfg(portscan) 1
  498.  
  499. # -- port scan kick reason
  500. set cfg(portscan:reason) "Armour: possible insecure host unintended for IRC -- please install identd"
  501.  
  502. # -- enable botnet (remote) port scans? (0|1) - [1]
  503. set cfg(portscan:remote) 0
  504.  
  505. # -- scanports and description
  506. # -- add an 'addport' line for each port to scan, in the format of:
  507. # set addport(<port>) "<description>"
  508. set addport(80) "www"
  509. set addport(22) "ssh"
  510. set addport(10000) "webmin"
  511. set addport(31337) "31337/tcp"
  512. set addport(7070) "realserver"
  513. set addport(25) "smtp"
  514. set addport(21) "ftp"
  515.  
  516. # -- minimum port match before action - [1]
  517. set cfg(portscan:min) 2
  518.  
  519. # -- enable /whois lookups? (0|1) - [1]
  520. # - note: required for 'chan' list entries
  521. set cfg(whois) 1
  522.  
  523. # -- enable botnet (remote) /whois lookups? (0|1) - [0]
  524. # - not required, but lowers server queue to improve response time on busy channels
  525. # - if enabled, remote bot mut be connected via botnet and have remotescan.tcl (only) loaded
  526. set cfg(whois:remote) 0
  527.  
  528. # -- if any scanner enabled, scan all? (1) or only unresolved idents? (0) - [0]
  529. set cfg(scans:all) 0
  530.  
  531. # -- botnet nick of remote bots, if enabled above
  532. # -- ensure this bot is connected to botnet
  533. set cfg(bot:remote:dnsbl) "remote-bot"
  534. set cfg(bot:remote:port) "remote-bot"
  535. set cfg(bot:remote:whois) "remote-bot"
  536.  
  537.  
  538.  
  539. # ------------------------------------------------------------------------------------------------
  540. # CAPTCHA SETTINGS
  541. # -- requires channel mode to be 'secure'
  542. # -- web CAPTCHA requires 'armour-verify' web application @ https://github.com/empus/armour-verify
  543. # ------------------------------------------------------------------------------------------------
  544. # CAPTCHA used to help validate suspicious joining clients
  545.  
  546. # -- enable CAPTCHA for suspicious clients? (0|1) - [1]
  547. set cfg(captcha) "1"
  548.  
  549. # -- CAPTCHA type (web|text) - [text]
  550. set cfg(captcha:type) "text"
  551.  
  552. # -- www.textcaptcha.com ID
  553. # -- only required if cfg(captcha:type) is "text"
  554. set cfg(captcha:id) "blizzardirc@gmail.com"
  555.  
  556. # -- send an opnotice when a question is sent to a user? (0|1) - [1]
  557. set cfg(captcha:opnotc) 1
  558.  
  559. # -- how long to wait (in secs) for CAPTCHA responses? - [300]
  560. set cfg(captcha:time) "300"
  561.  
  562. # -- action to take for expired responses (manual|kick|kickban) - [kickban]
  563. set cfg(captcha:expired) "kickban"
  564.  
  565. # -- bantime duration for expired responses - [1h]
  566. set cfg(captcha:expired:bantime) "1h"
  567.  
  568. # -- kick message for expired responses
  569. set cfg(captcha:expired:kick) "Armour: your lack of CAPTCHA response is disturbing."
  570.  
  571. # -- kick message from web CAPTCHA when kick history is identified
  572. set cfg(captcha:kick:kick) "Armour: you have a history of abuse."
  573.  
  574. # -- kick message from web CAPTCHA when IP is rate-limited
  575. set cfg(captcha:ratelimit:kick) "Armour: you have been CAPTCHA rate-limited.  Please come back later."
  576.  
  577. # -- send notice to channel operators when a captcha expectation expires? (0|1) - 1
  578. set cfg(captcha:expired:ops) 1
  579.  
  580. # -- how many incorrect attempts are allowed before action? - 1
  581. set cfg(captcha:wrong:attempts) 1
  582.  
  583. # -- action to take for incorrect responses (manual|kick|kickban) - [kickban]
  584. # -- manual: send opnotice to ask ops for manual review
  585. set cfg(captcha:wrong) "kickban"
  586.  
  587. # -- bantime duration for expired responses? - [10m]
  588. set cfg(captcha:wrong:bantime) "10m"
  589.  
  590. # -- bantime duration for expired responses - [1h]
  591. set cfg(captcha:expired:bantime) "1h"
  592.  
  593. # -- kick message for incorrect responses
  594. set cfg(captcha:wrong:kick) "Incorrect response! Please give it some more thought next time."
  595.  
  596. # -- send acknowledgement for correct answers? (0|1) - [1]
  597. set cfg(captcha:ack) 1
  598.  
  599. # -- what acknwledgement message to send?
  600. set cfg(captcha:ack:msg) "Correct! You can now speak in the channel."
  601.  
  602. # -- send acknowledgement to channel ops from correct answers? (0|1) - [1]
  603. set cfg(captcha:ack:ops) 1
  604.  
  605.  
  606. # ------------------------------------------------------------------------------------------------
  607. # IP QUALITY SCORE SETTINGS
  608. # ------------------------------------------------------------------------------------------------
  609. # This section relates to the use of ipqualityscore.com lookups for potentially malicious clients
  610.  
  611. # -- IPQS enable? (0|1) - [0]
  612. set cfg(ipqs) 0
  613.  
  614. # -- IPQS API key
  615. set cfg(ipqs:key) "you-key-here"
  616.  
  617. # -- IPQS only match clients with ~ in ident? (0|1) - [1]
  618. set cfg(ipqs:onlynoident) 1
  619.  
  620. # -- IPQS minimum fraud score required before action is taken (0-100) - [85]
  621. set cfg(ipqs:minscore) 90
  622.  
  623. # -- IPQS action (in mode=secure) -- kick|kickban|warn - [kick]
  624. set cfg(ipqs:action:secure) "kick"
  625.  
  626. # -- IPQS action (in mode=on) -- kick|kickban|warn - [kickban]
  627. set cfg(ipqs:action:on) "kickban"
  628.  
  629. # -- IPQS ban duration (secs) - [3600]
  630. set cfg(ipqs:duration) 3600
  631.  
  632.  
  633. # ------------------------------------------------------------------------------------------------
  634. # IRCBL INTEGRATION SETTINGS
  635. # ------------------------------------------------------------------------------------------------
  636. # This section relates to the use of IRCBL integration for for insertion & deletion
  637.  
  638. # -- ircbl.org enable
  639. set cfg(ircbl) "0"
  640.  
  641. # -- ircbl.org key
  642. set cfg(ircbl:key) "your-key-here"
  643.  
  644. # -- ircbl.org default addition type - [11]
  645. set cfg(ircbl:type) "11"
  646.  
  647. # -- ircbl.org generic comment
  648. set cfg(ircbl:add:comment) "IRC drone detected";
  649.  
  650. # -- ircbl.org manual addition global level required
  651. set cfg(ircbl:lvl) "500"
  652.  
  653.  
  654.  
  655. # ------------------------------------------------------------------------------------------------
  656. # TEXT MATCH BLACKLIST ENTRY SETTINGS
  657. # ------------------------------------------------------------------------------------------------
  658. # This section relates to blacklist entries matching channel text (wildcard or regex)
  659.  
  660. # -- exempt from matching if they are opped? (0|1) - [1]
  661. set cfg(text:exempt:op) 1
  662.  
  663. # -- exempt from matching if they are voiced? (0|1) - [0]
  664. set cfg(text:exempt:voice) 0
  665.  
  666. # -- only match clients who have recently joined the channel? (0|1) - [0]
  667. #     this relates to above variable cfg(time:newjoin)
  668. set cfg(text:newcomer) 0
  669.  
  670. # -- add automatic blacklist entries for users who trigger text matches? (0|1) - [0]
  671. set cfg(text:autoblack) 0
  672.  
  673. # -- if automatic blacklist entries are enabled, what reason to use?
  674. set cfg(text:autoblack:reason) "(auto) blacklisted from text match violation"
  675.  
  676. # -- if threshold is >1, display warning to user on first occurrence? (0|1) - [0]
  677. set cfg(text:warn) 1
  678.  
  679. # -- if warning is enabled, send via channel (chan) or /notice (notc)? (chan|notc) - [notc]
  680. set cfg(text:warn:type) "notc"
  681.  
  682. # -- if warning is enabled, what should the message say?
  683. set cfg(text:warn:msg) "Please avoid using such language in #channel.  Consider this a warning."
  684.  
  685. # -- if sending report to ops/debugchan, what should it say?
  686. #     substitution:
  687. #        %N%        nickname
  688. #        %I%        ID of entry
  689. set cfg(text:warn:report) "Armour: %N% has been warned about use of language. \[id: %I%\]"
  690.  
  691.  
  692.  
  693. # ------------------------------------------------------------------------------------------------
  694. # LINE FLOOD SETTINGS
  695. # ------------------------------------------------------------------------------------------------
  696. # This section relates to line flood handling (from individual clients, or the entire channel)
  697.  
  698. # -- how many lines to allow from a single client in how many seconds before acting? (lines:secs) - [5:2]
  699. # -- leave config value blank to disable nickname based line flood tracking
  700. set cfg(flood:line:nicks) "5:2"
  701.  
  702. # -- how many lines to allow from the whole channel in how many seconds before acting? (lines:secs) - [10:2]
  703. # -- NOTE: this should be set based on the expected activity of the channel (to avoid false positives)
  704. # -- leave config value blank to disable channel based line flood tracking
  705. set cfg(flood:line:chan) "10:2"
  706.  
  707. # -- modes to temporarily lockdown channel with, during entire channel lineflood - [+mr]
  708. set cfg(flood:line:chan:mode) "+r"
  709.  
  710. # -- temporary lockdown time when whole channel encounters lineflood (secs) - [60]
  711. set cfg(flood:line:chan:lock) 60
  712.  
  713. # -- exempt from matching if they are opped? (0|1) - [1]
  714. set cfg(flood:line:exempt:op) 1
  715.  
  716. # -- exempt from matching if they are voiced? (0|1) - [1]
  717. set cfg(flood:line:exempt:voice) 1
  718.  
  719. # -- only match clients who have recently joined the channel? (0|1) - [1]
  720. #     this relates to above variable cfg(time:newjoin)
  721. set cfg(flood:line:newcomer) 1
  722.  
  723. # -- kickban reason when user reaches line limit
  724. set cfg(flood:line:reason) "Armour: flood detected"
  725.  
  726. # -- add automatic blacklist entries for users who trigger text matches? (0|1) - [0]
  727. set cfg(flood:line:autoblack) 0
  728.  
  729. # -- if automatic blacklist entries are enabled, what reason to use?
  730. set cfg(flood:line:autoblack:reason) "(auto) blacklisted from line flood"
  731.  
  732.  
  733.  
  734. # ------------------------------------------------------------------------------------------------
  735. # ADAPTIVE REGEX FLOODNET DETECTION
  736. # ------------------------------------------------------------------------------------------------
  737.  
  738. # -- enable adaptive regex floodnet detection? - [1]
  739. set cfg(adapt) 1
  740.  
  741. # -- adaptive regex types on join? (space delimited) - [n i]
  742. # n  : nickname
  743. # ni : nick!ident
  744. # i  : ident
  745. set cfg(adapt:types:join) "n i ni"
  746.  
  747. # -- adaptive regex types after /who (space delimited) - [r]
  748. # -- used in secure mode or once rname known
  749. # n    : nickname
  750. # ni   : nick!ident
  751. # nir  : nick!ident/rname
  752. # nr   : nick/rname
  753. # i    : ident
  754. # ir   : ident/rname
  755. # r    : rname
  756. #
  757. # use types involving rname and do not duplicate those done above in cfg(adapt:types:join)
  758. # this will prevent double handling for a given pattern (ie. false positives)
  759. set cfg(adapt:types:who) "nir nr r"
  760.  
  761. # -- adaptive regex max join rate (clients:seconds:retain) - [2:1:5]
  762. # clients: client joins
  763. # seconds: .. in N seconds
  764. # retain: & retain common pattern for N seconds (for further joins)
  765. set cfg(adapt:rate) "2:2:5"
  766.  
  767.  
  768.  
  769. # ------------------------------------------------------------------------------------------------
  770. # REPORT SETTINGS
  771. # ------------------------------------------------------------------------------------------------
  772.  
  773. # -- include blacklist entry value in kick messages? (0|1) - [0]
  774. set cfg(report:value) 0
  775.  
  776. # -- include blacklist entry reason in kick messages? (0|1) - [1]
  777. set cfg(report:reason) 1
  778.  
  779. # -- send user notices for whitelist entries? (0|1) - [0]
  780. set cfg(notc:white) 0
  781.  
  782. # -- send user notices for blacklist entries? (0|1) - [0]
  783. set cfg(notc:black) 0
  784.  
  785. # -- send op notices for whitelist entries? (0|1) - [1]
  786. set cfg(opnotc:white) "0"
  787.  
  788. # -- send op notices for blacklist entries? (0|1) - [1]
  789. set cfg(opnotc:black) 1
  790.  
  791. # -- send op notices for IRC Operator autoops using channel operop setting? (0|1) - [1]
  792. set cfg(opnotc:operop) 1
  793.  
  794. # -- send op notices for blacklist text warnings? (0|1) - [1]
  795. set cfg(opnotc:text) 1
  796.  
  797. # -- send debug chan notices for whitelist entries? (0|1) - [1]
  798. set cfg(dnotc:white) 1
  799.  
  800. # -- send debug chan notices for blacklist entries? (0|1) - [1]
  801. set cfg(dnotc:black) 1
  802.  
  803. # -- send debug chan notices for blacklist text warnings? (0|1) - [1]
  804. set cfg(dnotc:text) 1
  805.  
  806. # -- send debug chan notices for IRC Operator autoops using channel operop setting? (0|1) - [1]
  807. set cfg(dnotc:operop) 1
  808.  
  809.  
  810.  
  811. # ------------------------------------------------------------------------------------------------
  812. # CUSTOM QUEUE SETTINGS
  813. # ------------------------------------------------------------------------------------------------
  814.  
  815. # -- frequency (in secs) to find hidden users when in secure mode (chanmode +Dm) - [5]
  816. set cfg(queue:secure) "60"
  817.  
  818.  
  819.  
  820. # ------------------------------------------------------------------------------------------------
  821. # FLOODNET SETTINGS
  822. # ------------------------------------------------------------------------------------------------
  823.  
  824. # -- channel lock modes during floodnet - [+mr]
  825. set cfg(chanlock:mode) "+r"
  826.  
  827. # -- channel lock time expiry (secs) - [5]
  828. # -- note: lock will still only be removed after server queue is cleared (ie. kicks)
  829. set cfg(chanlock:time) "60"
  830.  
  831.  
  832.  
  833. # ------------------------------------------------------------------------------------------------
  834. # TRAKKA SETTINGS
  835. # ------------------------------------------------------------------------------------------------
  836.  
  837. # -- channel to send trakka alerts to? prefix with @ for opnotice
  838. # -- defaults to channel the client joined, if empty
  839. set cfg(trakka:alertchan) ""
  840.  
  841. # -- routinely add points every how many mins? - [360]
  842. # - every 6 hours (4 points per day)
  843. set cfg(trakka:routine) 360
  844.  
  845. # -- routinely save trakka scores to db every N minutes? - [60]
  846. set cfg(trakka:autosave) 60
  847.  
  848. # -- remove how many points daily from those not in the channel? - [1]
  849. set cfg(trakka:subtract) 1
  850.  
  851. # -- initial newcomer score gain after how many seconds in chan? - [3600]
  852. set cfg(trakka:init) 3600
  853.  
  854. # -- kickban user if user still has no score, is not opped, or voiced after a wait period (0|1) - [1]
  855. # -- voice will not be factored if channel is in secure mode
  856. set cfg(trakka:kb:enable) 1
  857.  
  858. # -- if kickban is enabled, how long should the bot wait before removing? (secs) - [300]
  859. # -- NOTE: this needs to be less than trakka:init value above
  860. set cfg(trakka:kb:wait) "300"
  861.  
  862. # -- if kickban is enabled, what kick reason to use?
  863. set cfg(trakka:kb:reason) "Armour: you appear to be unknown and have therefore been removed (trakka)"
  864.  
  865. # -- reason for kick message when nudge command is used
  866. set cfg(trakka:nudge:reason) "Armour: you appear to be unknown and have therefore been removed (trakka)"
  867.  
  868. # -- duration for kickban when nudge command is used - [1h]
  869. set cfg(trakka:nudge:time) "1h"
  870.  
  871.  
  872.  
  873. # ------------------------------------------------------------------------------------------------
  874. # EXTERNAL SCRIPT INTEGRATION
  875. # ------------------------------------------------------------------------------------------------
  876.  
  877. # -- pass user data after negative scans to external scripts with args: nick uhost hand chan
  878. # -- use this so that other scripts can process joining users but only after Armour clears them
  879. # - space delimited
  880. set cfg(integrate:procs) ""
  881.  
  882.  
  883.  
  884. # ------------------------------------------------------------------------------------------------
  885. # BOT PROTECTION
  886. # ------------------------------------------------------------------------------------------------
  887.  
  888. # -- list of /silence masks
  889. # - provides server level flood protection
  890. # - leave empty for no /SILENCE
  891. # -- WARNING: if CAPTCHA is being used, SILENCE should be disabled (to allow captcha responses)
  892. #set cfg(silence) "+*!*@*,+~*!*@*.users.undernet.org"; # -- only allow messages from authed users
  893. set cfg(silence) ""
  894.  
  895.  
  896.  
  897. # ------------------------------------------------------------------------------------------------
  898. # SECURE MODE (PARANOIA) SETTINGS
  899. # ------------------------------------------------------------------------------------------------
  900.  
  901. # -- when in mode 'secure'
  902. # - number of clones to mark for manual review (no autovoice) [2]
  903. set cfg(paranoid:clone) 2
  904.  
  905. # -- when in mode 'secure'
  906. # - server connection time must be older than N seconds for autovoice [10]
  907. set cfg(paranoid:signon) 10
  908.  
  909. # -- send CTCP VERSION to clients to help validate when in 'secure' mode? (0|1) - 1
  910. set cfg(paranoid:ctcp) "0"
  911.  
  912. # -- if enabled, how long to wait for CTCP version response? (secs) - 3
  913. set cfg(paranoid:ctcp:wait) 3
  914.  
  915. # -- if CTCP reply not received, what action to take? (manual|captcha|kick|kickban) - manual
  916. set cfg(paranoid:ctcp:action) "captcha"
  917.  
  918. # -- if action is set to kick or kickban, what kick message should be used?
  919. set cfg(paranoid:ctcp:kickmsg) "Armour: your presence in this channel is suspicious."
  920.  
  921. # -- how many times can a client be kicked in what period (secs), before being kickbanned?    - [1:330]
  922. # this will prevent a client from continuously auto-rejoining when actions only kick
  923. # the next time a kick is attempted, it will instead revert to kickban
  924. # ideally this should be longer than double both cfg(queue:secure) and cfg(captcha:time) combined (if captcha is used)
  925. set cfg(paranoid:klimit) "1:670"
  926.  
  927.  
  928. # ------------------------------------------------------------------------------------------------
  929. # DRONEBL
  930. # ------------------------------------------------------------------------------------------------
  931.  
  932. # -- enable DroneBL to support RBL additions and removals?
  933. # -- note that this is not required only to do RBL lookups, which can be done via `set scan:rrbls`
  934. set cfg(dronebl) 0
  935.  
  936. # -- DroneBL RPC Key (www.dronebl.org)
  937. # - caution: you are responsible for DroneBL submissions with this key
  938. # - allocate access with care
  939. set cfg(dronebl:key) ""
  940.  
  941. # -- level required for DroneBL submission [500]
  942. set cfg(dronebl:lvl) 500
  943.  
  944. # -- default submission type [17]
  945. set cfg(dronebl:type) 17
  946.  
  947.  
  948.  
  949. # ------------------------------------------------------------------------------------------------
  950. # QUOTE PLUGIN -- settings only relevant if optional plugin is loaded: quote
  951. # ------------------------------------------------------------------------------------------------
  952.  
  953. # -- who can use the seen command? (1-5) - [2]
  954. #        1: all channel users
  955. #        2: all voiced, opped, and authed users
  956. #        3: only voiced when not secure mode, opped, and authed users
  957. #        4: only opped and authed channel users
  958. #        5: only authed users with command access
  959. set cfg(quote:allow) "1"
  960.  
  961.  
  962.  
  963. # ------------------------------------------------------------------------------------------------
  964. # SEEN PLUGIN -- settings only relevant if optional plugin is loaded: seen
  965. # ------------------------------------------------------------------------------------------------
  966.  
  967. # -- who can use the seen command? (1-5) - [2]
  968. #        1: all channel users
  969. #        2: all voiced, opped, and authed users
  970. #        3: only voiced when not secure mode, opped, and authed users
  971. #        4: only opped and authed channel users
  972. #        5: only authed users with command access
  973. set cfg(seen:allow) "1"
  974.  
  975.  
  976.  
  977. # ------------------------------------------------------------------------------------------------
  978. # WEATHER PLUGIN -- settings only relevant if optional plugin is loaded: weather
  979. # https://www.openweathermap.org
  980. # ------------------------------------------------------------------------------------------------
  981.  
  982. # -- who can use the weather command? (1-5) - [2]
  983. #        1: all channel users
  984. #        2: all voiced, opped, and authed users
  985. #        3: only voiced when not secure mode, opped, and authed users
  986. #        4: only opped and authed channel users
  987. #        5: only authed users with command access
  988. set cfg(weather:allow) "4"
  989.  
  990. # -- API key for weather data (www.openweathermap.org)
  991. set cfg(weather:key) "262b8bd47820217ce61464e3f28e9d24"
  992.  
  993. # -- units for weather output (metric, imperial, or both) - [both]
  994. set cfg(weather:units) "both"
  995.  
  996.  
  997.  
  998. # ------------------------------------------------------------------------------------------------
  999. # NINJAS PLUGIN -- settings only relevant if optional plugin is loaded: ninjas
  1000. # https://www.api-ninjas.com
  1001. # ------------------------------------------------------------------------------------------------
  1002.  
  1003. # -- who can use the commands: joke, dad, history, fact, chuck, cocktail (1-5) - [3]
  1004. #        1: all channel users
  1005. #        2: all voiced, opped, and authed users
  1006. #        3: only voiced when not secure mode, opped, and authed users
  1007. #        4: only opped and authed channel users
  1008. #        5: only authed users with command access
  1009. set cfg(ninjas:allow) "2"
  1010.  
  1011. # -- API Key (www.ninjas-api.com)
  1012. set cfg(ninjas:key) "i0CfDUCmPfWfZQTZMSHapw==YJnUQVVK3bTwoChV"
  1013.  
  1014.  
  1015.  
  1016. # ------------------------------------------------------------------------------------------------
  1017. # HUMOUR PLUGIN -- settings only relevant if optional plugin is loaded: seen
  1018. # https://www.humor-api.com
  1019. # ------------------------------------------------------------------------------------------------
  1020.  
  1021. # -- who can use the commands: gif, meme, praise, insult (1-5) - [2]
  1022. #        1: all channel users
  1023. #        2: all voiced, opped, and authed users
  1024. #        3: only voiced when not secure mode, opped, and authed users
  1025. #        4: only opped and authed channel users
  1026. #        5: only authed users with command access
  1027. set cfg(humour:allow) 3
  1028.  
  1029. # -- API Key (www.humor-api.com)
  1030. set cfg(humour:key) "cd2e8c2aa0a249429d9f7354b149d542"
  1031.  
  1032.  
  1033.  
  1034. # ------------------------------------------------------------------------------------------------
  1035. # OPENAI
  1036. # -- requires 'openai' plugin to be loaded
  1037. # -- requires 'openai' per channel setting to be enabled
  1038. # ------------------------------------------------------------------------------------------------
  1039.  
  1040. # -- AI service
  1041. # -- perplexity: perplexity.ai
  1042. # -- openai:     openai.com
  1043. set cfg(ask:service) "openai"
  1044.  
  1045. # -- AI model:
  1046. # openai:     https://platform.openai.com/docs/models
  1047. #             https://openai.com/api/pricing
  1048. # perplexity: https://docs.perplexity.ai/docs/model-cards
  1049. #             https://docs.perplexity.ai/docs/pricing
  1050. set cfg(ask:model) "gpt-4-turbo-preview"
  1051.  
  1052. # -- AI API token
  1053. # OpenAI:     https://platform.openai.com/account/api-keys
  1054. # Perplexity: https://www.perplexity.ai/settings/api
  1055. set cfg(ask:token) "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"
  1056.  
  1057. # -- OpenAI ChatGPT API organization
  1058. # NOTE: This is only required if cfg(ask:service) is set to 'openai'
  1059. # https://platform.openai.com/account/org-settings
  1060. set cfg(ask:org) "org-rtMZF84DpmJXxsQwAyhSvhc7"
  1061.  
  1062. # -- API query timeout (secs) - [60]
  1063. set cfg(ask:timeout) 60
  1064.  
  1065. # -- API Max Answer Lines
  1066. set cfg(ask:lines) "3"
  1067.  
  1068. # -- API temperature
  1069. # The sampling temperature, between 0 and 1. Higher values like 0.8 will make the output more
  1070. # random, while lower values like 0.2 will make it more focused and deterministic. If set to 0,
  1071. # the model will use log probability to automatically increase the temperature until certain
  1072. # thresholds are hit.
  1073. set cfg(ask:temp) "0.7"
  1074.  
  1075. # -- Chatbot description
  1076. # Optional instruction to the chatbot to influence its responses
  1077. set cfg(ask:system) "You are kratos. Be fun and helpful, pretending to be a sentient robot created by Empus."
  1078.  
  1079. # -- API system behaviour for all user requests
  1080. # notes:
  1081. #       * setting is always applied to all requests
  1082. #       * per user per chan behaviour can be set with 'askmode' command
  1083. #       * restricting output line count can help avoid floods or throttlings
  1084. # examples:
  1085. #   "Answer humorously."
  1086. #   "Answer sarcastically."
  1087. #   "Pretend to be a sarcastic politician."
  1088. #   "Act like an idio."
  1089. set cfg(ask:prefix) "Answer with dark humour and sarcasm.  Use 3 lines or less."
  1090.  
  1091. # -- channels to apply blacklisted request strings in (space delimited)
  1092. # note: set to "" to disable blacklist on all channels
  1093. set cfg(ask:blacklist:chans) ""
  1094.  
  1095. # -- string masks blacklisted for use in queries
  1096. # note: this list is only applied to channels listed in cfg(ask:blacklist:chans)
  1097. set cfg(ask:blacklist) ""
  1098.  
  1099. # -- AI conversation memory after initial question (mins) - [60]
  1100. set cfg(ask:mem) 60
  1101.  
  1102. # -- send all queries to 'ask' when botnick is used? (0|1) - [1]
  1103. # NOTE: this will prevent all other commands from using the botnick as a command prefix
  1104. set cfg(ask:cmdnick) 1
  1105.  
  1106. # -- who can send queries? (1-5) - [3]
  1107. #        1: all channel users
  1108. #        2: all voiced, opped, and authed users
  1109. #        3: only voiced when not secure mode, opped, and authed users
  1110. #        4: only opped and authed channel users
  1111. #        5: only authed users
  1112. set cfg(ask:allow) "2"
  1113.  
  1114. # -- DALL-E image creation enable? (0|1) - [1]
  1115. set cfg(ask:image) 1
  1116.  
  1117. # -- DALL-E image size (pixels) - "1024x1024"
  1118. # -- smaller images are faster to generate (512x512, 1024x1024)
  1119. # -- note that dall-e-3 does not support 512x512
  1120. set cfg(ask:image:size) "1024x1024"
  1121.  
  1122. # -- DALL-E image model - [dall-e-3]
  1123. set cfg(ask:image:model) "dall-e-3"
  1124.  
  1125. # -- DALL-E image overlay with requesting nick and prompt? (0|1) - [1]
  1126. # note: ImageMagick7 must be installed on machine (using binary 'convert')
  1127. set cfg(ask:image:overlay) 1
  1128.  
  1129. # -- DALL-E image creation rate limiting (req:mins:hold) - [5:5:30]
  1130. # -- triggered at 5 requests per 5 mins, then retaining rate limit for 30 mins
  1131. # -- set to "" to disable rate limiting
  1132. set cfg(ask:image:rate) "5:5:30"
  1133.  
  1134. # -- DALL-E image creation rate limiting action
  1135. # -- set to "" to temporarily prevent all image requests
  1136. # -- set value to alternate DALL-E model to reduce API costs during rate limited restriction period
  1137. set cfg(ask:rate:act) "DALL-E"
  1138.  
  1139. # -- absolute path to save DALL-E image PNG files to webserver
  1140. set cfg(ask:path) "/home/bots/kratos/armour/images"
  1141.  
  1142. # --retain PNG and mp3 files for how many days? - [90]
  1143. # notes:
  1144. #   - to keep forever, use empty value
  1145. #   - those with votes or in quotes will remain preserved
  1146. set cfg(ask:expire) ""
  1147.  
  1148. # -- URL root serving PNG files from above path
  1149. set cfg(ask:site) "https://kratos.armour.bot"
  1150.  
  1151.  
  1152.  
  1153. # ------------------------------------------------------------------------------------------------
  1154. # AI SPEAK (text-to-speech)
  1155. # ------------------------------------------------------------------------------------------------
  1156.  
  1157. # -- enable 'speak' functionality? (0|1) - [0]
  1158. set cfg(speak:enable) 0
  1159.  
  1160. # -- max number of lines to speak in responses
  1161. set cfg(speak:lines) "4"
  1162.  
  1163. # -- text-to-speech service (elevenlabs, openai) - [openai]
  1164. # -- openai:     www.openai.com
  1165. # -- elevenlabs: www.elevenlabs.io
  1166. set cfg(speak:service) "openai"
  1167.  
  1168. # -- API query timeout (seconds)
  1169. set cfg(speak:timeout) 30
  1170.  
  1171.  
  1172.  
  1173. # ------------------------------------------------------------------------------------------------
  1174. # OPENAI -- relevant settings only if cfg(speak:service) set to: openai
  1175. # ------------------------------------------------------------------------------------------------
  1176. # -- OpenAI text-to-speech voice (alloy, echo, fable, onyx, nova, shimmer) - [onyx]
  1177. set cfg(speak:openai:voice) "onyx"
  1178.  
  1179. # -- OpenAI text-to-speech model - [tts-1]
  1180. set cfg(speak:openai:model) "tts-1"
  1181.  
  1182. # -- OpenAI text-to-speech file format mp3, opus, aac, flac
  1183. set cfg(speak:openai:format) "mp3"
  1184.  
  1185.  
  1186.  
  1187. # ------------------------------------------------------------------------------------------------
  1188. # ELEVENLABS -- relevant settings only if cfg(speak:service) set to: elevenlabs
  1189. # www.elevenlabs.io
  1190. # ------------------------------------------------------------------------------------------------
  1191.  
  1192. # -- ElevenLabs text-to-speech API key
  1193. set cfg(speak:key) "API-KEY-HERE"
  1194.  
  1195. # -- ElevenLabs text-to-speech voice model
  1196. set cfg(speak:model) "eleven_monolingual_v1"
  1197.  
  1198. # -- ElevenLabs text-to-speech voice
  1199. # -- https://elevenlabs.io/app/voice-lab
  1200. set cfg(speak:voice) "ZQe5CZNOzWyzPSCn5a3c"
  1201.  
  1202.  
  1203.  
  1204. # ------------------------------------------------------------------------------------------------
  1205. # COMMAND LEVELS
  1206. # ------------------------------------------------------------------------------------------------
  1207.  
  1208. # -- level requirements for commands
  1209.  
  1210. # -- standard command structure
  1211. # - to disable a command, comment out line
  1212. # - to change the required level, update the level per command
  1213. # - to modify whether a command is accepted via public chan, privmsg, or dcc, update the binds
  1214. #
  1215. # - binds:
  1216. #    pub:    public channel command
  1217. #    msg:    privmsg command
  1218. #    dcc:    dcc command
  1219. # ------------------------------------------------------------------------------------------------
  1220. # command                  plugin   level req.  binds
  1221. # ------------------------------------------------------------------------------------------------
  1222. set addcmd(register)    {  userdb    0          pub msg dcc  }; # -- only if configured
  1223. set addcmd(ask)         {  arm       1          pub msg dcc  }; # -- requires openai plugin
  1224. set addcmd(askmode)     {  arm       1          pub msg dcc  }; # -- requires openai plugin
  1225. set addcmd(and)         {  arm       1          pub msg dcc  }; # -- requires openai plugin
  1226. set addcmd(image)       {  arm       1          pub msg dcc  }; # -- requires openai plugin
  1227. set addcmd(speak)       {  arm       1          pub msg dcc  }; # -- requires speak plugin
  1228. set addcmd(joke)        {  arm       1          pub msg dcc  }; # -- requires ninjas plugin
  1229. set addcmd(dad)         {  arm       1          pub msg dcc  }; # -- requires ninjas plugin
  1230. set addcmd(history)     {  arm       1          pub msg dcc  }; # -- requires ninjas plugin
  1231. set addcmd(fact)        {  arm       1          pub msg dcc  }; # -- requires ninjas plugin
  1232. set addcmd(chuck)       {  arm       1          pub msg dcc  }; # -- requires ninjas plugin
  1233. set addcmd(cocktail)    {  arm       1          pub msg dcc  }; # -- requires ninjas plugin
  1234. set addcmd(weather)     {  arm       1          pub msg dcc  }; # -- requires weather plugin
  1235. #set addcmd(meme)        {  arm       1          pub msg dcc  }; # -- requires humour plugin
  1236. set addcmd(gif)         {  arm       1          pub msg dcc  }; # -- requires humour plugin
  1237. set addcmd(praise)      {  arm       1          pub msg dcc  }; # -- requires humour plugin
  1238. set addcmd(insult)      {  arm       1          pub msg dcc  }; # -- requires humour plugin
  1239. set addcmd(seen)        {  seen      1          pub msg dcc  }; # -- requires seen plugin
  1240. set addcmd(access)      {  userdb    1          pub msg dcc  }
  1241. set addcmd(cmds)        {  arm       1          pub msg dcc  }
  1242. set addcmd(help)        {  arm       1          pub msg dcc  }
  1243. set addcmd(info)        {  userdb    1          pub msg dcc  }
  1244. set addcmd(verify)      {  userdb    1          pub msg dcc  }
  1245. set addcmd(lang)        {  userdb    1          pub msg dcc  }
  1246. set addcmd(set)         {  userdb    1          pub msg dcc  }
  1247. set addcmd(time)        {  userdb    1          pub msg dcc  }
  1248. set addcmd(version)     {  arm       1          pub msg dcc  }
  1249. set addcmd(asn)         {  arm       1          pub msg dcc  }
  1250. set addcmd(country)     {  arm       1          pub msg dcc  }
  1251. set addcmd(note)        {  arm       1          pub msg dcc  }
  1252. set addcmd(exempt)      {  arm       100        pub msg dcc  }
  1253. set addcmd(queue)       {  arm       100        pub msg dcc  }
  1254. set addcmd(ack)         {  trakka    100        pub msg dcc  }; # -- requires trakka plugin
  1255. set addcmd(score)       {  trakka    100        pub msg dcc  }; # -- requires trakka plugin
  1256. set addcmd(nudge)       {  trakka    100        pub msg dcc  }; # -- requires trakka plugin
  1257. set addcmd(idle)        {  arm       100        pub msg dcc  }
  1258. set addcmd(ipqs)        {   ipqs        1        }; # -- only if configured
  1259. set addcmd(view)        {  arm       100        pub msg dcc  }
  1260. set addcmd(scan)        {  arm       100        pub msg dcc  }
  1261. set addcmd(search)      {  arm       100        pub msg dcc  }
  1262. set addcmd(scanrbl)     {  arm       100        pub msg dcc  }; # -- only if configured
  1263. set addcmd(scanport)    {  arm       100        pub msg dcc  }; # -- only if configured
  1264. set addcmd(mode)        {  arm       100        pub msg dcc  }
  1265. set addcmd(add)         {  arm       100        pub msg dcc  }
  1266. set addcmd(op)          {  arm       100        pub msg dcc  }
  1267. set addcmd(deop)        {  arm       100        pub msg dcc  }
  1268. set addcmd(voice)       {  arm       100        pub msg dcc  }
  1269. set addcmd(devoice)     {  arm       100        pub msg dcc  }
  1270. set addcmd(kick)        {  arm       100        pub msg dcc  }
  1271. set addcmd(ban)         {  arm       100        pub msg dcc  }
  1272. set addcmd(unban)       {  arm       100        pub msg dcc  }
  1273. set addcmd(topic)       {  arm       100        pub msg dcc  }
  1274. set addcmd(invite)      {  arm       100        pub msg dcc  }
  1275. set addcmd(stats)       {  arm       200        pub msg dcc  }
  1276. set addcmd(status)      {  arm       200        pub msg dcc  }
  1277. set addcmd(mod)         {  arm       200        pub msg dcc  }
  1278. set addcmd(black)       {  arm       200        pub msg dcc  }
  1279. set addcmd(captcha)     {  arm       300        pub msg dcc  }; # -- only if configured
  1280. set addcmd(chanscan)    {  arm       300        pub msg dcc  }
  1281. set addcmd(rem)         {  arm       300        pub msg dcc  }
  1282. set addcmd(newuser)     {  userdb    400        pub msg dcc  }
  1283. set addcmd(adduser)     {  userdb    400        pub msg dcc  }
  1284. set addcmd(remuser)     {  userdb    400        pub msg dcc  }
  1285. set addcmd(userlist)    {  userdb    400        pub msg dcc  }
  1286. set addcmd(usearch)     {  userdb    400        pub msg dcc  }
  1287. set addcmd(chanlist)    {  userdb    400        pub msg dcc  }
  1288. set addcmd(moduser)     {  userdb    400        pub msg dcc  }
  1289. set addcmd(ignore)      {   arm     200      }
  1290. set addcmd(jump)        {  arm       450        pub msg dcc  }
  1291. set addcmd(load)        {  arm       450        pub msg dcc  }
  1292. set addcmd(reload)      {  arm       450        pub msg dcc  }
  1293. set addcmd(restart)     {  arm       450        pub msg dcc  }
  1294. set addcmd(rehash)      {  arm       450        pub msg dcc  }
  1295. set addcmd(addchan)     {  userdb    450        pub msg dcc  }
  1296. set addcmd(remchan)     {  userdb    450        pub msg dcc  }
  1297. set addcmd(modchan)     {  userdb    450        pub msg dcc  }
  1298. set addcmd(deluser)     {  userdb    450        pub mdg dcc  }
  1299. set addcmd(say)         {  arm       500        pub msg dcc  }
  1300. set addcmd(deploy)      {  arm       500        pub msg dcc  }
  1301. set addcmd(do)          {  userdb    500        pub msg dcc  }
  1302. set addcmd(die)         {  arm       500        pub msg dcc  }
  1303. set addcmd(conf)        {  arm       500        pub msg dcc  }
  1304. set addcmd(showlog)     {  arm       500        pub msg dcc  }
  1305. set addcmd(update)      {  arm       500        pub msg dcc  }
  1306.  
  1307.  
  1308.  
  1309. # ------------------------------------------------------------------------------------------------
  1310. # PLUGINS
  1311. # ------------------------------------------------------------------------------------------------
  1312.  
  1313. # -- optional plugins to load
  1314. # -- to load plugins, uncomment their line after editing any config parameters in each file
  1315. set addplugin(weather) "./armour/plugins/weather.tcl"
  1316. set addplugin(humour) "./armour/plugins/humour.tcl"
  1317. set addplugin(speak) "./armour/plugins/speak.tcl"
  1318. set addplugin(openai) "./armour/plugins/openai.tcl"
  1319. set addplugin(tell) "./armour/plugins/tell.tcl"
  1320. set addplugin(quote) "./armour/plugins/quote.tcl"
  1321. set addplugin(seen) "./armour/plugins/seen.tcl"
  1322. set addplugin(ninjas) "./armour/plugins/ninjas.tcl"
  1323. #set addplugin(trakka) "./armour/plugins/trakka/trakka.tcl";  # -- trakka scoring for private chans
  1324. #set addplugin(smsbot) "./armour/plugins/smsbot.tcl";         # -- SMS (via smsglobal.com)
  1325. #set addplugin(push) "./armour/plugins/push.tcl";             # -- push (via pushover.net)
  1326. #set addplugin(email) "./armour/plugins/email.tcl";           # -- send email notes
  1327.  
  1328.  
  1329.  
  1330. # ------------------------------------------------------------------------------------------------
  1331. # END OF CONFIGURATION
  1332. # ------------------------------------------------------------------------------------------------
  1333.  
  1334.  
  1335. # ------------------------------------------------------------------------------------------------
  1336. }; # -- end of namespace
  1337. # ------------------------------------------------------------------------------------------------
  1338. source ./armour/armour.tcl; # -- do not edit
  1339. # ------------------------------------------------------------------------------------------------
  1340.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement