# proxitok2proxitok.tcl
setudef flag proxitok
bind pubm * "% *https://tiktok.com/*" outputProxiTokLink
bind pubm * "% *http://tiktok.com/*" outputProxiTokLink
bind pubm * "% *https://www.tiktok.com/*" outputProxiTokLink
bind pubm * "% *http://www.tiktok.com/*" outputProxiTokLink
set proxitokHost "farside.link/proxitok"
set proxitokAntiFloodSeconds 5
array set ::proxitokAntiFlood {}
proc outputProxiTokLink {nick uhost hand chan text} {
if {[channel get $chan proxitok]} {
if {[string index $text 0] == "!"} {
putlog "\[tiktok2proxitok\] ignoring proxitok link from $nick!$uhost in $chan - line starts with ! ($text)"
return 0
}
global proxitokHost proxitokAntiFlood proxitokAntiFloodSeconds
set afbypass 0
set accthand [finduser -account [getaccount $nick]]
if {[string match $accthand "*"]} {
# not needed once eggdrop adds support for nickserv account to nick2hand
set accthand [nick2hand $nick]
}
if {(![string match $accthand "*"]) && ([matchattr $accthand +E])} {
putlog "\[proxitok2proxitok\] anti-flood: bypassing anti-floor system for $nick!$uhost in $chan (hand: $accthand), has chattr E"
set afbypass 1
}
# extract just the host from $uhost
set atPosition [string last "@" $uhost]
set host [string range $uhost [expr {$atPosition + 1}] end]
if {([info exists proxitokAntiFlood($host)]) && ($afbypass == 0)} {
set currentTime [clock seconds]
set elapsedTime [expr {$currentTime - $proxitokAntiFlood($host)}]
if {$elapsedTime <= $proxitokAntiFloodSeconds} {
putlog "\[proxitok2proxitok\] anti-flood: ignoring proxitok link from $nick!$uhost in $chan, ($elapsedTime/$proxitokAntiFloodSeconds seconds since last conversion for $host)"
return 1
}
}
set proxitokLinks [regexp -all -inline {https?://(?:www\.)?(?:tiktok)\.com/[@-_.a-zA-Z0-9/]+} $text]
# if someone just sends https://tiktok.com/, for example
if {$proxitokLinks == ""} { return }
putserv "PRIVMSG $chan :proxitok: [join [string map -nocase [list "@" "%40" "www." "" "http://" "https://" "tiktok.com" $proxitokHost] $proxitokLinks]]"
set proxitokAntiFlood($host) [clock seconds]
}
}