Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- alias rconstart { var %x = 1 | while ($data(%x)) { sourcercon $data($v1).server | inc %x } }
- alias sourcercon {
- if (!$1) { echo -ag Invalid parameters. | return }
- var %sockname = $+($srcon.prefix,$1)
- if ($sock(%sockname)) { sockclose %sockname | unset %rcon.id. [ $+ [ %sockname ] ] }
- srcon_echo $1 12 CS:GO RCON control window. Establishing the connection to server $1 $+ $chr(44) please wait...!
- sockopen %sockname $gettok($1,1,58) $gettok($1,2,58) | sockmark %sockname $data($1).rconpass
- }
- on *:SOCKOPEN:$($+($srcon.prefix,*)): {
- var %check = $+($sock($sockname).saddr,:,$sock($sockname).sport), %ipp = $remove($sockname,$srcon.prefix)
- if ($sock($sockname).status == active) {
- set %srcon.id. [ $+ [ $sockname ] ] 0
- srcon.getrequest &srcon.auth %srcon.id. [ $+ [ $sockname ] ] $srcon.req.auth $sock($sockname).mark
- sockwrite $sockname &srcon.auth
- srcon_echo %ipp 12 Connection established successfully to server %ipp $+ .
- .timerlogstart. [ $+ [ %ipp ] ] 1 1 rconlogstart %ipp
- }
- else {
- srcon_echo %ipp 04 Error: Socket is dead: Connection timed out. | srcon.clear %ipp
- }
- }
- on *:SOCKCLOSE:$($+($srcon.prefix, *)): {
- var %srcon.window = $+(@, $remove($sockname, $srcon.prefix))
- if (($window(%srcon.window)) && (%srcon.id. [ $+ [ $sockname ] ])) {
- %srcon.name = $sockname
- %srcon.ip = $sock($sockname).ip
- %srcon.port = $sock($sockname).port
- %srcon.pass = $sock($sockname).mark
- sockclose $sockname
- sockopen %srcon.name %srcon.ip %srcon.port
- sockmark %srcon.name %srcon.pass
- }
- }
- on *:INPUT:@: {
- var %srcon.socket = $+($srcon.prefix, $remove($target, @))
- if ($($+(%, srcon.id., %srcon.socket), 2) == $null) { return }
- if (!$sock(%srcon.socket)) {
- aline 04 $target * Error: Socket is dead. Close the window and try again.
- return
- }
- inc %srcon.id. $+ %srcon.socket
- srcon.getrequest &srcon.cmd %srcon.id. [ $+ [ %srcon.socket ] ] $srcon.req.execcmd $1-
- aline $target -> $1-
- sockwrite %srcon.socket &srcon.cmd
- }
- on *:CLOSE:@: {
- srcon.clear $+($srcon.prefix, $remove($target, @))
- }
- alias -l srcon.getrequest {
- bunset $1
- bset $1 5 $srcon.inttobytes($2)
- bset $1 9 $srcon.inttobytes($3)
- bset -t $1 13 $4-
- bset $1 $calc($bvar($1,0) + 1) 00 00
- bset $1 1 $srcon.inttobytes($calc($bvar($1, 0) - 4))
- }
- alias -l srcon.clear {
- var %ipp = $remove($1,$srcon.prefix,$log.prefix), %srcon = $+($srcon.prefix,%ipp), %log = $+($log.prefix,%ipp)
- if ($sock(%srcon)) {
- rconsend %ipp logaddress_delall | .timer -o 1 2 sockclose %srcon | unset %rcon.id. [ $+ [ %srcon ] ]
- }
- if ($sock(%log)) { .timer -o 1 2 sockclose %log }
- }
- alias logcheck {
- var %ipp = $1, %logsocket = $+($log.prefix,%ipp), %rconsocket = $+($srcon.prefix,%ipp)
- if ($sock(%rconsocket)) { .timerlogstart. [ $+ [ %ipp ] ] 1 0 rconlogstart %ipp } | elseif ($sock(%logsocket)) { sockclose %logsocket }
- }
- alias rconlogstart { set -u2 %logstart. [ $+ [ $1 ] ] 1 | rconlogstart2 $1 }
- alias rconlogstart2 {
- var %ipp = $1, %rconsocket = $+($srcon.prefix, $1), %logsocket = $+($log.prefix, $1)
- if ($sock(%rconsocket)) {
- if ($sock(%logsocket)) { sockclose %logsocket }
- sockudp -k %logsocket
- var %port = $iif($sock(%logsocket).port,$ifmatch,$+(100,$rand(1,9),$rand(1,9)))
- rconsend %ipp logaddress_delall | rconsend %ipp logaddress_add $+($ip,:,%port)
- if (%startup. [ $+ [ %ipp ] ]) { rconsend %ipp log on | .timer -o 1 2 rconset %ipp } | else { rconsend %ipp log on }
- set -u10 %check. [ $+ [ %ipp ] ] 1 | .timer -o 1 1 rconsend %ipp status
- }
- elseif ($sock(%logsocket)) { sockclose %logsocket }
- }
- alias rconsend {
- var %rconsocket = $+($srcon.prefix, $1), %logsocket = $+($log.prefix, $1)
- if (!$sock(%rconsocket)) {
- if ($sock(%logsocket)) { sockclose %logsocket }
- srcon_echo $1 04 $time * Error: Socket is dead. $+($chr(40),Cmd: $2-,$chr(41))
- return
- }
- if ($sock(%rconsocket).status != active) { .timer -o 1 1 rconsend $1- | return }
- inc %srcon.id. $+ %rconsocket
- srcon.getrequest &srcon.cmd %srcon.id. [ $+ [ %rconsocket ] ] $srcon.req.execcmd $2-
- if ($2 != echo) { srcon_echo $1 $time -> $2- }
- if ($2 == changelevel) { .timerrecheck. [ $+ [ $1 ] ] 1 3 rechecksocket $1 }
- sockwrite %rconsocket &srcon.cmd
- }
- alias rechecksocket {
- var %rconsocket = $+($srcon.prefix, $1), %logsocket = $+($log.prefix, $1)
- if (!$sock(%rconsocket)) {
- if ($sock(%logsocket)) { sockclose %logsocket }
- if (!%rechecksocket. [ $+ [ $1 ] ]) { set -u5 %rechecksocket. [ $+ [ $1 ] ] 1 | .timerrecheck. [ $+ [ $1 ] ] 1 2 rechecksocket $1 | sourcercon $replace($1,$chr(58),$chr(32)) %rcona }
- else { set %retry. [ $+ [ $1 ] ] 1 | .timerretry. $+ $1 1 10 rconretry $1 | sourcercon $replace($1,$chr(58),$chr(32)) %rcona }
- }
- elseif (!$sock(%logsocket)) { .timerlogstart. [ $+ [ $1 ] ] 1 1 rconlogstart $1 }
- }
- alias srcon_echo {
- var %ipp = $1, %srcon.window = $+(@,%ipp)
- if (!$window(%srcon.window)) { window -aek0x %srcon.window sourcercon.execcmd }
- echo %srcon.window $iif($2 isnum 1-15,$+(,$iif($len($2) > 1,$2,$+(0,$2)))) $+ $time * $iif($2 isnum 1-15,$3-,$2-)
- }
- alias srcon_send {
- var %ipp = $1, %srcon.window = $+(@,%ipp)
- if (!$window(%srcon.window)) { window -aek0x %srcon.window sourcercon.execcmd }
- echo %srcon.window $iif($2 isnum 1-15,$+(,$iif($len($2) > 1,$2,$+(0,$2)))) $+ $time -> $iif($2 isnum 1-15,$3-,$2-)
- }
- alias keepalive {
- if ($sock($+($srcon.prefix, $1))) { rconsend $1 echo Keep connection alive.. | .timerrecheck. [ $+ [ $1 ] ] 1 2 rechecksocket $1 }
- if (!%retry. [ $+ [ $1 ] ]) { set %retry. [ $+ [ $1 ] ] 1 }
- .timerretry. $+ $1 1 10 rconretry $1 | sourcercon $replace($1,$chr(58),$chr(32)) %rcona
- elseif ($timer(keepalive. [ $+ [ $1 ] ])) { .timerkeepalive. [ $+ [ $1 ] ] off }
- }
- alias rconretry {
- echo -s aa223
- var %rconsocket = $+($srcon.prefix, $1)
- if (%retry. [ $+ [ $1 ] ]) {
- if (%retry. [ $+ [ $1 ] ] > 2) {
- unset %retry. [ $+ [ $1 ] ]
- }
- else {
- if ($sock(%rconsocket)) { sockclose %rconsocket }
- .timerretry. $+ $1 1 10 rconretry $1 | sourcercon $replace($1,$chr(58),$chr(32)) %rcona
- }
- inc %retry. [ $+ [ $1 ] ]
- }
- }
- on *:SOCKREAD:$($+($srcon.prefix, *)): {
- var %check = $+($sock($sockname).saddr,:,$sock($sockname).sport), %ipp = $remove($sockname,$srcon.prefix), %logip = $remove($sockname,$srcon.prefix)
- if (!$sock($sockname).mark) { srcon_echo %ipp 04 NO SOCK MARK ON $sockname | sockmark $sockname %rcona }
- if ($sockerr) { srcon_echo %ipp 04 Error: Reading from socket (SockERR): $sock($sockname).wsmsg | return }
- if ($hget($sockname)) {
- var %srcon.pckt.size = $hget($sockname, size)
- var %srcon.pckt.left = $hget($sockname, left)
- var %srcon.pckt.id = $hget($sockname, id)
- var %srcon.pckt.cmd = $hget($sockname, cmd)
- var %noop = $hget($sockname, string1, &srcon.pckt.string1)
- sockread %srcon.pckt.left &srcon.pckt.rest
- dec %srcon.pckt.left $sockbr
- bcopy &srcon.pckt.string1 $calc($bvar(&srcon.pckt.string1, 0) + 1) &srcon.pckt.rest 1 -1
- hfree $sockname
- }
- else {
- sockread 4 &srcon.pckt.size
- var %srcon.pckt.size = $bvar(&srcon.pckt.size, 1).long
- var %srcon.pckt.left = %srcon.pckt.size
- sockread 4 &srcon.pckt.id
- var %srcon.pckt.id = $bvar(&srcon.pckt.id, 1).long
- dec %srcon.pckt.left $sockbr
- if ($srcon.inttobytes(%srcon.pckt.id) == 255 255 255 255) {
- srcon_echo %ipp 04 Error: Failed authentication (probably wrong rcon password).
- ;.timermixteams 1 2 resetall %ipp | writeini -n $gfile(gatherservers.ini) %ipp error Wrong RCON PW
- ;if ($gatherinfo(schat)) { schatsend $+(0,$chr(44),%idd,Server) $+($chr(35),%idd,:,$col(end)) Wrong RCON password, the gather is therefor stopped }
- return
- }
- sockread 4 &srcon.pckt.cmd
- var %srcon.pckt.cmd = $bvar(&srcon.pckt.cmd, 1).long
- dec %srcon.pckt.left $sockbr
- sockread %srcon.pckt.left &srcon.pckt.string1
- dec %srcon.pckt.left $sockbr
- }
- if (%srcon.pckt.left > 0) {
- hmake $sockname
- hadd $sockname size %srcon.pckt.size
- hadd $sockname left %srcon.pckt.left
- hadd $sockname id %srcon.pckt.id
- hadd $sockname cmd %srcon.pckt.cmd
- hadd -b $sockname string1 &srcon.pckt.string1
- }
- elseif (%srcon.pckt.left == 0) {
- if (%srcon.pckt.cmd == $srcon.res.auth) {
- if (!$sock($+($log.prefix,%ipp))) && (!%logstart. [ $+ [ %ipp ] ]) { .timerlogstart. [ $+ [ %ipp ] ] 1 1 rconlogstart %ipp }
- }
- elseif (%srcon.pckt.cmd == $srcon.res.cmd) {
- if (!$sock($+($log.prefix,%ipp))) && (!%logstart. [ $+ [ %ipp ] ]) { .timerlogstart. [ $+ [ %ipp ] ] 1 1 rconlogstart %ipp }
- var %i = 1, %next, %last | while (%i <= $bvar(&srcon.pckt.string1,0)) {
- if ($bvar(&srcon.pckt.string1,%i) == $asc($lf)) {
- if (*L * - *: * !iswm %next) { srcon_sockread %ipp %next }
- var %next, %last
- }
- else { var %next = $+(%next,$iif(%last == 32,$chr(32)),$bvar(&srcon.pckt.string1,%i).text), %last = $bvar(&srcon.pckt.string1,%i) }
- inc %i
- }
- if (%next) { srcon_sockread %ipp %next }
- return
- var %bytes = $bvar(&srcon.pckt.string1, 0), %bytes.max = 300, %bytes.x = 1, %bytes.now = %bytes.max, %bvar.chr = $asc($lf), %bvar.text
- while (%bytes.x <= %bytes) {
- var %bvar.text = $+(%bvar.text,$bvar(&srcon.pckt.string1, %bytes.x, %bytes.now).text), %bytes.x = $calc(%bytes.now +1), %bytes.send
- while ($numtok(%bvar.text,%bvar.chr) > 1) {
- var %bytes.send = 1, %temp = $gettok(%bvar.text,1,%bvar.chr), %bvar.text = $gettok(%bvar.text,2-,%bvar.chr) | srcon_sockread %ipp %temp
- }
- if (%bytes.send) { var %bytes.now = $calc(%bytes.now + %bytes.max) } | else { var %bytes.now = $calc(%bytes.now + (%bytes.max / 5)) }
- }
- var %i = 1 | while ($gettok(%bvar.text,%i,%bvar.chr)) { var %temp = $ifmatch | srcon_sockread %ipp %temp | inc %i }
- }
- }
- }
- on *:UDPREAD:$($+($log.prefix,*)):{
- :nextread
- if (!$sock($sockname)) { return }
- var %check = $+($sock($sockname).saddr,:,$sock($sockname).sport), %ipp = $remove($sockname,$log.prefix), %temp. [ $+ [ %ipp ] ]
- if ($sockerr) { srcon_echo %ipp 04 Error: Reading from socket (SockERR): $sock($sockname).wsmsg | return }
- %temp. [ $+ [ %ipp ] ] = $gettok(%temp. [ $+ [ %ipp ] ],1-,32)
- sockread -f %temp. [ $+ [ %ipp ] ]
- if ($sockbr == 0) { return }
- if (%temp. [ $+ [ %ipp ] ]) { .timerlogcheck. [ $+ [ %ipp ] ] 1 20 logcheck %ipp | srcon_sockread %ipp %temp. [ $+ [ %ipp ] ] }
- goto nextread
- }
- alias logit2 {
- var %txt = $+(rcon_,$replace($1,$chr(58),$chr(45)),.log), %id = $+($chr(35),$serverid($1))
- .timer -o 1 0 write %txt $+($chr(91),$date,$chr(93),$chr(91),$time,$chr(93),$chr(91),%id,$chr(93)) $iif($2-,$ifmatch,---------------)
- }
- alias rl {
- noop $regex($1-,/"(.+?)<(.+?)><(.+?)>/i)
- if ($prop == Steam) return $regml(3)
- }
- alias srcon_sockread {
- var %ipp = $1, %logip = %ipp, %temp. [ $+ [ %ipp ] ] $replace($2-,$chr(124),>|<)
- if (%temp. [ $+ [ %ipp ] ]) {
- tokenize 32 %temp. [ $+ [ %ipp ] ] | srcon_echo %ipp $1-
- logit2 %ipp $1-
- if (%retry. [ $+ [ %ipp ] ]) {
- unset %retry. [ $+ [ %ipp ] ]
- }
- if (say isin $gettok(%temp. [ $+ [ %ipp ] ],3,34)) || (say_team isin $gettok(%temp. [ $+ [ %ipp ] ],3,34)) {
- var %say = $gettok(%temp. [ $+ [ %ipp ] ],4,34)
- ;if (%say == !rr) { set -u3 %fld. [ $+ [ %ipp ] ] 1 | rconsend %ipp mp_restartgame 2 }
- if (%say == !rr) && ($rl($1-).steam == STEAM_0:0:61161104) { rconsend %ipp mp_restartgame 2 }
- }
- ;echo -s $rl($1-).steam
- }
- return
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement