Advertisement
Guest User

Untitled

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