glacier_rat

Glacier_Rat

May 17th, 2010
363
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.16 KB | None | 0 0
  1. f;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;; ;;
  3. ;; RuneHead Admin Control ;;
  4. ;; by Oliver ;;
  5. ;; Made for FOE - www.foe-rs.com ;;
  6. ;; ;;
  7. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  8.  
  9. ;;;; USAGE ;;;;
  10.  
  11. ; !runeheadadd <rsname> <group>
  12. ; !runeheaddel <rsname>
  13. ; /runeHead.add <rsname> <group>
  14. ; /runeHead.del <rsname>
  15.  
  16.  
  17. on *:TEXT:!runeheadadd *:#demonstaff: {
  18.  
  19. if ($address($nick, 2) == $address($me, 2)) {
  20. if ($3) run.runeHead add $nick $2 $3-
  21. else runeHead.notice $nick RuneHead Invalid format! !runeheadadd <rsname> <group>
  22. }
  23.  
  24. }
  25.  
  26. on *:TEXT:!runeheaddel *:#: {
  27.  
  28. if ($address($nick, 2) == $address($me, 2)) {
  29. if ($2) run.runeHead del $nick $2
  30. else runeHead.notice $nick RuneHead Invalid format! !runeheaddel <rsname>
  31. }
  32.  
  33. }
  34.  
  35. alias -l runeHead.user return oliphonics
  36. alias -l runeHead.pass return oliverw92
  37. alias -l runeHead.notice { notice $1 $+($c2([), $c1($2), $c2(])) $c2($3-) }
  38. alias -l c1 { return $+($chr(3), 07, $1-, $chr(3)) }
  39. alias -l c2 { return $+($chr(3), 14, $1-, $chr(3)) }
  40. alias runeHead.add run.runeHead add $me $1 $2-
  41. alias runeHead.del run.runeHead del $me $1
  42.  
  43. ;;FUNCTION: Add/delete someone from RuneHead - /SMF.runeHead <add | del> <nick> <nick to add> <group>
  44. alias -l run.runeHead {
  45.  
  46. var %sock = runeHead. $+ $ticks
  47. hmake %sock 10
  48. sockopen %sock runehead.com 80
  49. sockmark %sock %sock getcookie $2 $1 $3 $replace($4-, $chr(32), @)
  50.  
  51. }
  52.  
  53. on *:SOCKOPEN:runeHead.*: {
  54. var %i = sockwrite -nt $sockname, %type = $getMark($sockname, 2), %data
  55. if (%type == getcookie) {
  56.  
  57. %i GET /clans/index.php HTTP/1.1
  58. %i Host: runehead.com
  59. %i Connection: close
  60. %i $crlf
  61.  
  62. }
  63. elseif (%type == update) {
  64.  
  65. %i GET /clans/updatemembersAjax.php?selectedmembers= $+ $getMark($sockname, 5) HTTP/1.1
  66. %i Host: runehead.com
  67. %i Connection: close
  68. if ($rHead.compileCookie($sockname)) %i Cookie: $v1
  69. %i $crlf
  70.  
  71. }
  72. else {
  73.  
  74. if (%type == login) %data = $+(username=, $runeHead.user, &password=, $runeHead.pass, &log=Login)
  75. elseif (%type == add) %data = $+(rsname=, $getMark($sockname, 4), &rank=, $getMark($sockname, 5), &log=Add Member(s)&autoupdate=1)
  76. elseif (%type == del) %data = $+(rsname2=, $getMark($sockname, 4), &log=Delete Member(s)&autoupdate=1, &member[]=, $getMark($sockname, 5-))
  77.  
  78. %i POST /clans/admin.php HTTP/1.1
  79. %i Host: runehead.com
  80. if ($rHead.compileCookie($sockname)) %i Cookie: $v1
  81. %i Content-Type: application/x-www-form-urlencoded
  82. %i Content-Length: $len(%data)
  83. %i Connection: close
  84. %i $crlf %data
  85.  
  86. }
  87.  
  88. }
  89.  
  90. on *:SOCKREAD:runeHead.*: {
  91.  
  92. var %sockread, %data, %sock, %x, %type = $getMark($sockname, 2), %pos, %filename = $qt($+($scriptdir,$sockname,.txt))
  93.  
  94. ;Run through the buffer, storing it in a bvar.
  95. while ($sock($sockname).rq) {
  96.  
  97. sockread &socktemp
  98. if ($bvar(&socktemp, 0)) bcopy &sockread $calc($bvar(&sockread, 0) + 1) &socktemp 1 -1
  99.  
  100. }
  101.  
  102. ;Add to file
  103. bwrite %filename -1 -1 &sockread
  104.  
  105. ;If we are at the end...
  106. if ($bfind(&sockread, 1, </html>)) {
  107.  
  108. ;Read file into bvar and destroy the file
  109. bunset &sockread
  110. bread %filename 1 $file(%filename).size &sockread
  111. .remove %filename
  112.  
  113. %pos = 0
  114. while ($bfind(&sockread, $calc(%pos + 1), $crlf) && %pos <= $bvar(&sockread, 0)) {
  115.  
  116. var %v1 = $bfind(&sockread, $calc(%pos + 1), $lf), %npos = $bfind(&sockread, $calc(%v1 + 2), $lf), %do = $getMark($sockname, 4)
  117. %sockread = $remove($bvar(&sockread, %pos, $iif($calc(%npos - %pos) > 4050, 4050, $v1)).text, $lf)
  118. %pos = %npos
  119.  
  120. ;Mmmmmm cookies
  121. if (*Set-Cookie: * iswm %sockread) {
  122.  
  123. ;Loop through cookie and store in hash table ready to be compiled
  124. %data = $right($remove(%sockread, Set-Cookie:), -1)
  125. %x = 1
  126. while ($gettok(%data, %x, 59)) {
  127. hadd -m $getMark($sockname, 1) $remove($gettok($v1, 1, 61), $chr(32), $crlf) $gettok($v1, 2, 61)
  128. inc %x
  129. }
  130.  
  131. }
  132.  
  133. if (%type == getcookie) {
  134.  
  135. if (Content-Type: text/html isin %sockread) {
  136.  
  137. ;Open a new socket to login
  138. %sock = runeHead. $+ $ticks
  139. sockopen %sock runehead.com 80
  140. sockmark %sock $getMark($sockname, 1) login $getMark($sockname, 3) $getMark($sockname, 4-)
  141. sockclose $sockname
  142. break
  143.  
  144. }
  145.  
  146. }
  147. elseif (%type == login) {
  148.  
  149. ;If we are logged in
  150. if (*<td>Logged in as *</td>* iswm %sockread) {
  151.  
  152. ;We are logged in! Loop through the groups checking if its right group
  153. if (%do == add) {
  154.  
  155. var %x = $bfind(&sockread, 1, <select name='rank' style='width: 125px;'>), %y = %x
  156. while (%x <= $bfind(&sockread, %y, </select>) && $bfind(&sockread, %x, <option)) {
  157.  
  158. var %i = $bfind(&sockread, $v1, </option>)
  159. noop $regex($bvar(&sockread, $v1, $calc(%i - $v1)).text, /^<option value='(\d+?)'>(.+?)$/i)
  160. if ($regml(2) == $replace($getMark($sockname, 6), @, $chr(32))) var %group = $regml(1)
  161. %x = %i
  162.  
  163. }
  164.  
  165. ;If we we didnt find the group, throw an error
  166. if (!%group) {
  167. runeHead.msg 6 $sockname
  168. sockclose $sockname
  169. halt
  170. }
  171.  
  172. }
  173. elseif (%do == del) {
  174.  
  175. ;We are logged in! Loop through the nicks checking if our nick is in there
  176. var %x = $bfind(&sockread, 1, <select multiple='multiple' id='member' name='member[]'), %y = %x
  177. while (%x <= $bfind(&sockread, %y, </select>) && $bfind(&sockread, %x, <option)) {
  178.  
  179. var %i = $bfind(&sockread, $v1, </option>)
  180. noop $regex($bvar(&sockread, $v1, $calc(%i - $v1)).text, /^<option value='(.+?)\|(\d+?)'>/i)
  181. if ($regml(1) == $getMark($sockname, 5)) var %member = $+($regml(1), $chr(124), $regml(2))
  182.  
  183. %x = %i
  184.  
  185. }
  186.  
  187. ;If we havnt found our member
  188. if (!%member) {
  189. runeHead.msg 8 $sockname
  190. sockclose $sockname
  191. halt
  192. }
  193.  
  194. }
  195.  
  196. ;Open the new socket to add/del a nick and sockmark with required data
  197. %sock = runeHead. $+ $ticks
  198. sockopen %sock runehead.com 80
  199. sockmark %sock $getMark($sockname, 1) $getMark($sockname, 4) $getMark($sockname, 3) $getMark($sockname, 5) %group %member
  200. sockclose $sockname
  201. break
  202.  
  203. }
  204.  
  205. }
  206. elseif (%type == add) {
  207.  
  208. ;Success
  209. if (*<p><b><span class='success'>New member * added</span><br /></b></p>* iswm %sockread) {
  210.  
  211. ;Nick added! Loop through the nicks checking if our nick is in there
  212. var %x = $bfind(&sockread, 1, <select multiple='multiple' id='member' name='member[]'), %y = %x
  213. while (%x <= $bfind(&sockread, %y, </select>) && $bfind(&sockread, %x, <option)) {
  214.  
  215. var %i = $bfind(&sockread, $v1, </option>)
  216. noop $regex($bvar(&sockread, $v1, $calc(%i - $v1)).text, /^<option value='(.+?)\|(\d+?)'>/i)
  217. if ($regml(1) == $getMark($sockname, 4)) var %member = $+($regml(1), $chr(124), $regml(2))
  218.  
  219. %x = %i
  220.  
  221. }
  222.  
  223. %sock = runeHead. $+ $ticks
  224. sockopen %sock runehead.com 80
  225. sockmark %sock $getMark($sockname, 1) update $getMark($sockname, 3) $getMark($sockname, 4) %member
  226.  
  227. runeHead.msg 5 $sockname
  228. sockclose $sockname
  229. break
  230.  
  231. }
  232. ;Failed
  233. elseif (*<p><b><span class='redc'>No changes to make</span></b></p>* iswm %sockread) {
  234. runeHead.msg 3 $sockname
  235. sockclose $sockname
  236. }
  237. ;Already added
  238. elseif (*<p><b>* has already been added<br /></b></p>* iswm %sockread) {
  239. runeHead.msg 4 $sockname
  240. sockclose $sockname
  241. }
  242.  
  243. }
  244. elseif (%type == del) {
  245.  
  246. ;Successfully deleted?
  247. if (*<p><b><span class='success'>Selected members have been deleted from your memberlist</span><br /></b></p>* iswm %sockread) {
  248. runeHead.msg 7 $sockname
  249. sockclose $sockname
  250. }
  251. ;Or failed
  252. elseif (*<p><b><span class='redc'>No changes to make</span></b></p>* iswm %sockread) {
  253. runeHead.msg 8 $sockname
  254. sockclose $sockname
  255. }
  256.  
  257. }
  258.  
  259. }
  260. }
  261. elseif ($bfind(&sockread, 1, background-color: #727272;'>Memberlist Updated</span>)) { sockclose $sockname }
  262. }
  263.  
  264. on *:SOCKCLOSE:runeHead.*: {
  265.  
  266. ;Display error messages if required
  267. var %id, %type = $getMark($sockname, 2)
  268. if (%type == login) %id = 1
  269. elseif (%type == getcookie) %id = 2
  270. elseif (%type == add) %id = 3
  271. elseif (%type == del) %id = 9
  272. elseif (%type == update) %id = 10
  273. if (%id) runeHead.msg %id $sockname
  274.  
  275. }
  276.  
  277. ;;FUNCTION: Display a set message - /runeHead.msg 5 $sockname
  278. alias runeHead.msg {
  279.  
  280. var %msg
  281. if ($1 == 1) %msg = ERROR! Unable to log into runehead!
  282. elseif ($1 == 2) %msg = ERROR! Unable to find cookie!
  283. elseif ($1 == 3) %msg = ERROR! Unable to add user!
  284. elseif ($1 == 4) %msg = ERROR! Nick already exists in RuneHead list!
  285. elseif ($1 == 5) %msg = $getMark($sockname, 4) added to RuneHead!
  286. elseif ($1 == 6) %msg = ERROR! Group: $replace($getMark($sockname, 6), @, $chr(32)) not found!
  287. elseif ($1 == 7) %msg = $getMark($sockname, 4) deleted from RuneHead!
  288. elseif ($1 == 8) %msg = ERROR! User not found!
  289. elseif ($1 == 9) %msg = ERROR! Unable to delete user from RuneHead!
  290. elseif ($1 == 10) %msg = ERROR! Unable to update user!
  291.  
  292. runeHead.notice $getMark($2, 3) RuneHead %msg
  293.  
  294. }
  295.  
  296. ;;FUNCTION: Return part of the sockmark of the inputted socket - $getMark($sockname 4)
  297. alias getMark return $gettok($sock($1).mark, $2, 32)
  298.  
  299. ;;FUNCTION: Compile the cookie of the inputted socket - $rHead.compileCookie($sockname)
  300. alias rHead.compileCookie {
  301.  
  302. var %x = 1, %cookie, %table = $getMark($1, 1)
  303. while ($hget(%table, $hget(%table, %x).item)) {
  304. %cookie = $+(%cookie, $hget(%table, %x).item, =, $v1, ;)
  305. inc %x
  306. }
  307. return %cookie
  308.  
  309. }
Add Comment
Please, Sign In to add comment