Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- f;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; ;;
- ;; RuneHead Admin Control ;;
- ;; by Oliver ;;
- ;; Made for FOE - www.foe-rs.com ;;
- ;; ;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;;; USAGE ;;;;
- ; !runeheadadd <rsname> <group>
- ; !runeheaddel <rsname>
- ; /runeHead.add <rsname> <group>
- ; /runeHead.del <rsname>
- on *:TEXT:!runeheadadd *:#demonstaff: {
- if ($address($nick, 2) == $address($me, 2)) {
- if ($3) run.runeHead add $nick $2 $3-
- else runeHead.notice $nick RuneHead Invalid format! !runeheadadd <rsname> <group>
- }
- }
- on *:TEXT:!runeheaddel *:#: {
- if ($address($nick, 2) == $address($me, 2)) {
- if ($2) run.runeHead del $nick $2
- else runeHead.notice $nick RuneHead Invalid format! !runeheaddel <rsname>
- }
- }
- alias -l runeHead.user return oliphonics
- alias -l runeHead.pass return oliverw92
- alias -l runeHead.notice { notice $1 $+($c2([), $c1($2), $c2(])) $c2($3-) }
- alias -l c1 { return $+($chr(3), 07, $1-, $chr(3)) }
- alias -l c2 { return $+($chr(3), 14, $1-, $chr(3)) }
- alias runeHead.add run.runeHead add $me $1 $2-
- alias runeHead.del run.runeHead del $me $1
- ;;FUNCTION: Add/delete someone from RuneHead - /SMF.runeHead <add | del> <nick> <nick to add> <group>
- alias -l run.runeHead {
- var %sock = runeHead. $+ $ticks
- hmake %sock 10
- sockopen %sock runehead.com 80
- sockmark %sock %sock getcookie $2 $1 $3 $replace($4-, $chr(32), @)
- }
- on *:SOCKOPEN:runeHead.*: {
- var %i = sockwrite -nt $sockname, %type = $getMark($sockname, 2), %data
- if (%type == getcookie) {
- %i GET /clans/index.php HTTP/1.1
- %i Host: runehead.com
- %i Connection: close
- %i $crlf
- }
- elseif (%type == update) {
- %i GET /clans/updatemembersAjax.php?selectedmembers= $+ $getMark($sockname, 5) HTTP/1.1
- %i Host: runehead.com
- %i Connection: close
- if ($rHead.compileCookie($sockname)) %i Cookie: $v1
- %i $crlf
- }
- else {
- if (%type == login) %data = $+(username=, $runeHead.user, &password=, $runeHead.pass, &log=Login)
- elseif (%type == add) %data = $+(rsname=, $getMark($sockname, 4), &rank=, $getMark($sockname, 5), &log=Add Member(s)&autoupdate=1)
- elseif (%type == del) %data = $+(rsname2=, $getMark($sockname, 4), &log=Delete Member(s)&autoupdate=1, &member[]=, $getMark($sockname, 5-))
- %i POST /clans/admin.php HTTP/1.1
- %i Host: runehead.com
- if ($rHead.compileCookie($sockname)) %i Cookie: $v1
- %i Content-Type: application/x-www-form-urlencoded
- %i Content-Length: $len(%data)
- %i Connection: close
- %i $crlf %data
- }
- }
- on *:SOCKREAD:runeHead.*: {
- var %sockread, %data, %sock, %x, %type = $getMark($sockname, 2), %pos, %filename = $qt($+($scriptdir,$sockname,.txt))
- ;Run through the buffer, storing it in a bvar.
- while ($sock($sockname).rq) {
- sockread &socktemp
- if ($bvar(&socktemp, 0)) bcopy &sockread $calc($bvar(&sockread, 0) + 1) &socktemp 1 -1
- }
- ;Add to file
- bwrite %filename -1 -1 &sockread
- ;If we are at the end...
- if ($bfind(&sockread, 1, </html>)) {
- ;Read file into bvar and destroy the file
- bunset &sockread
- bread %filename 1 $file(%filename).size &sockread
- .remove %filename
- %pos = 0
- while ($bfind(&sockread, $calc(%pos + 1), $crlf) && %pos <= $bvar(&sockread, 0)) {
- var %v1 = $bfind(&sockread, $calc(%pos + 1), $lf), %npos = $bfind(&sockread, $calc(%v1 + 2), $lf), %do = $getMark($sockname, 4)
- %sockread = $remove($bvar(&sockread, %pos, $iif($calc(%npos - %pos) > 4050, 4050, $v1)).text, $lf)
- %pos = %npos
- ;Mmmmmm cookies
- if (*Set-Cookie: * iswm %sockread) {
- ;Loop through cookie and store in hash table ready to be compiled
- %data = $right($remove(%sockread, Set-Cookie:), -1)
- %x = 1
- while ($gettok(%data, %x, 59)) {
- hadd -m $getMark($sockname, 1) $remove($gettok($v1, 1, 61), $chr(32), $crlf) $gettok($v1, 2, 61)
- inc %x
- }
- }
- if (%type == getcookie) {
- if (Content-Type: text/html isin %sockread) {
- ;Open a new socket to login
- %sock = runeHead. $+ $ticks
- sockopen %sock runehead.com 80
- sockmark %sock $getMark($sockname, 1) login $getMark($sockname, 3) $getMark($sockname, 4-)
- sockclose $sockname
- break
- }
- }
- elseif (%type == login) {
- ;If we are logged in
- if (*<td>Logged in as *</td>* iswm %sockread) {
- ;We are logged in! Loop through the groups checking if its right group
- if (%do == add) {
- var %x = $bfind(&sockread, 1, <select name='rank' style='width: 125px;'>), %y = %x
- while (%x <= $bfind(&sockread, %y, </select>) && $bfind(&sockread, %x, <option)) {
- var %i = $bfind(&sockread, $v1, </option>)
- noop $regex($bvar(&sockread, $v1, $calc(%i - $v1)).text, /^<option value='(\d+?)'>(.+?)$/i)
- if ($regml(2) == $replace($getMark($sockname, 6), @, $chr(32))) var %group = $regml(1)
- %x = %i
- }
- ;If we we didnt find the group, throw an error
- if (!%group) {
- runeHead.msg 6 $sockname
- sockclose $sockname
- halt
- }
- }
- elseif (%do == del) {
- ;We are logged in! Loop through the nicks checking if our nick is in there
- var %x = $bfind(&sockread, 1, <select multiple='multiple' id='member' name='member[]'), %y = %x
- while (%x <= $bfind(&sockread, %y, </select>) && $bfind(&sockread, %x, <option)) {
- var %i = $bfind(&sockread, $v1, </option>)
- noop $regex($bvar(&sockread, $v1, $calc(%i - $v1)).text, /^<option value='(.+?)\|(\d+?)'>/i)
- if ($regml(1) == $getMark($sockname, 5)) var %member = $+($regml(1), $chr(124), $regml(2))
- %x = %i
- }
- ;If we havnt found our member
- if (!%member) {
- runeHead.msg 8 $sockname
- sockclose $sockname
- halt
- }
- }
- ;Open the new socket to add/del a nick and sockmark with required data
- %sock = runeHead. $+ $ticks
- sockopen %sock runehead.com 80
- sockmark %sock $getMark($sockname, 1) $getMark($sockname, 4) $getMark($sockname, 3) $getMark($sockname, 5) %group %member
- sockclose $sockname
- break
- }
- }
- elseif (%type == add) {
- ;Success
- if (*<p><b><span class='success'>New member * added</span><br /></b></p>* iswm %sockread) {
- ;Nick added! Loop through the nicks checking if our nick is in there
- var %x = $bfind(&sockread, 1, <select multiple='multiple' id='member' name='member[]'), %y = %x
- while (%x <= $bfind(&sockread, %y, </select>) && $bfind(&sockread, %x, <option)) {
- var %i = $bfind(&sockread, $v1, </option>)
- noop $regex($bvar(&sockread, $v1, $calc(%i - $v1)).text, /^<option value='(.+?)\|(\d+?)'>/i)
- if ($regml(1) == $getMark($sockname, 4)) var %member = $+($regml(1), $chr(124), $regml(2))
- %x = %i
- }
- %sock = runeHead. $+ $ticks
- sockopen %sock runehead.com 80
- sockmark %sock $getMark($sockname, 1) update $getMark($sockname, 3) $getMark($sockname, 4) %member
- runeHead.msg 5 $sockname
- sockclose $sockname
- break
- }
- ;Failed
- elseif (*<p><b><span class='redc'>No changes to make</span></b></p>* iswm %sockread) {
- runeHead.msg 3 $sockname
- sockclose $sockname
- }
- ;Already added
- elseif (*<p><b>* has already been added<br /></b></p>* iswm %sockread) {
- runeHead.msg 4 $sockname
- sockclose $sockname
- }
- }
- elseif (%type == del) {
- ;Successfully deleted?
- if (*<p><b><span class='success'>Selected members have been deleted from your memberlist</span><br /></b></p>* iswm %sockread) {
- runeHead.msg 7 $sockname
- sockclose $sockname
- }
- ;Or failed
- elseif (*<p><b><span class='redc'>No changes to make</span></b></p>* iswm %sockread) {
- runeHead.msg 8 $sockname
- sockclose $sockname
- }
- }
- }
- }
- elseif ($bfind(&sockread, 1, background-color: #727272;'>Memberlist Updated</span>)) { sockclose $sockname }
- }
- on *:SOCKCLOSE:runeHead.*: {
- ;Display error messages if required
- var %id, %type = $getMark($sockname, 2)
- if (%type == login) %id = 1
- elseif (%type == getcookie) %id = 2
- elseif (%type == add) %id = 3
- elseif (%type == del) %id = 9
- elseif (%type == update) %id = 10
- if (%id) runeHead.msg %id $sockname
- }
- ;;FUNCTION: Display a set message - /runeHead.msg 5 $sockname
- alias runeHead.msg {
- var %msg
- if ($1 == 1) %msg = ERROR! Unable to log into runehead!
- elseif ($1 == 2) %msg = ERROR! Unable to find cookie!
- elseif ($1 == 3) %msg = ERROR! Unable to add user!
- elseif ($1 == 4) %msg = ERROR! Nick already exists in RuneHead list!
- elseif ($1 == 5) %msg = $getMark($sockname, 4) added to RuneHead!
- elseif ($1 == 6) %msg = ERROR! Group: $replace($getMark($sockname, 6), @, $chr(32)) not found!
- elseif ($1 == 7) %msg = $getMark($sockname, 4) deleted from RuneHead!
- elseif ($1 == 8) %msg = ERROR! User not found!
- elseif ($1 == 9) %msg = ERROR! Unable to delete user from RuneHead!
- elseif ($1 == 10) %msg = ERROR! Unable to update user!
- runeHead.notice $getMark($2, 3) RuneHead %msg
- }
- ;;FUNCTION: Return part of the sockmark of the inputted socket - $getMark($sockname 4)
- alias getMark return $gettok($sock($1).mark, $2, 32)
- ;;FUNCTION: Compile the cookie of the inputted socket - $rHead.compileCookie($sockname)
- alias rHead.compileCookie {
- var %x = 1, %cookie, %table = $getMark($1, 1)
- while ($hget(%table, $hget(%table, %x).item)) {
- %cookie = $+(%cookie, $hget(%table, %x).item, =, $v1, ;)
- inc %x
- }
- return %cookie
- }
Add Comment
Please, Sign In to add comment