ruanmed

mIRC Control Panel

Apr 24th, 2013
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
mIRC 12.77 KB | None | 0 0
  1. ; mIRC Control Panel
  2. ; By Thomas Edwards 2013
  3. ; Using this script you can control your mIRC from any web enabled device.
  4.  
  5. ; ########## WORK IN PROGRESS ############
  6.  
  7. ; Instructions:
  8. ; Set your admin username and your password below and type /cpanel to start
  9. ; Typing /cpanel again will turn the panel off.
  10. ; You can edit what IP or Port it listens on.
  11. ; You can also enable a stats mode to enable public users to view where you are connected
  12. ; and what channels you are currently in.
  13.  
  14. alias cpanel_config {
  15.   ; CPanel Configuration
  16.   set %cpanel.user Admin
  17.   set %cpanel.pass pass
  18.   set %cpanel.host 127.0.0.1
  19.   set %cpanel.port 8080
  20.   set %cpanel.dir $mircdir $+ cpanel
  21.  
  22.   ; The following Variable toggles information in the @cpanel window.
  23.   set %cpanel.quiet 0
  24.  
  25.   ; CPanel Vars - Ignore these
  26.   set %cpanel.running 0
  27.   set %cpanel.conn 0
  28. }
  29.  
  30. alias cpanel {
  31.   if ($1 == start) {
  32.     if (%cpanel.running == 1) {
  33.       echo mIRC Control Panel is already running!
  34.     }
  35.     else {
  36.       cpanel_start
  37.     }
  38.   }
  39.   elseif ($1 == stop) {
  40.     if (%cpanel.running == 0) {
  41.       echo mIRC Control Panel is not running! You can't stop what you havent started!
  42.     }
  43.     else {
  44.       cpanel_stop
  45.     }
  46.   }
  47.   elseif ($1 == config) {
  48.     if (%cpanel.quiet == 0) {
  49.       echo Loading mIRC Control Panel configuration.
  50.     }
  51.     cpanel_config
  52.   }
  53.   else {
  54.     if (%cpanel.running == 0) {
  55.       cpanel_start
  56.     }
  57.     else {
  58.       cpanel_stop
  59.     }
  60.   }
  61. }
  62.  
  63. alias cpanel_start {
  64.   cpanel_config
  65.   if (%cpanel.quiet == 0) {
  66.     echo mIRC Control Panel by Thomas Edwards Started.
  67.     echo =!= Listening on %cpanel.host $+ : $+ %cpanel.port =!=
  68.     echo =!= Web URL: http:// $+ %cpanel.host $+ : $+ %cpanel.port $+ /login =!=
  69.     ; We dont actually do anything till now! :P
  70.     socklisten cpanel_listener %cpanel.port
  71.   }
  72.   set %cpanel.running 1
  73. }
  74. alias cpanel_stop {
  75.   if (%cpanel.quiet == 0) {
  76.     echo mIRC Control Panel by Thomas Edwards halted.
  77.     if ($1 == panel) {
  78.       echo =!= Stopped via Web Panel =!=
  79.     }
  80.   }
  81.   set %cpanel.running 0
  82.   sockclose cpanel_*
  83. }
  84.  
  85. ; Now for the madness!
  86.  
  87. on 1:socklisten:cpanel_listener:{
  88.   sockaccept cpanel_conn $+ %cpanel.conn
  89.   if (%cpanel.quiet == 0) {
  90.     echo =!= Accepted connection to mIRC Control Panel CCID 4cpanel_conn $+ %cpanel.conn =!=
  91.   }
  92.   inc %cpanel.conn
  93. }
  94. on *:sockread:cpanel_conn*:{
  95.   var %data
  96.   sockread %data
  97.   tokenize 32 %data
  98.   var %url = $lower($2)
  99.   echo =!= GOT: %data
  100.   if ($gettok(%url,1,47) == home || %url == $chr(47)) {
  101.     sockwrite -n $sockname $cpanel_code(200)
  102.     cpanel_head $sockname
  103.     sockwrite -n $sockname <h1>Network List</h1>
  104.     if ($scon(0) == 0) {
  105.       sockwrite -n Your client is not connected to any IRC Networks!
  106.     }
  107.     else {
  108.       var %i 1
  109.       while (%i <= $scon(0)) {
  110.         if ($scon(%i).status == connected) {
  111.           sockwrite -n $sockname Connection # $+ %i - <a href="/network/ $+ %i $+ "> $+ $scon(%i).network $+ </a> - <a href="/network/ $+ %i $+ /dc">Disconnect</a></br>
  112.         }
  113.         else {
  114.           sockwrite -n $sockname Connection # $+ %i - <i>Not connected</i></br>
  115.         }
  116.         inc %i
  117.       }
  118.     }
  119.     cpanel_footer $sockname  
  120.   }
  121.   elseif ($gettok(%url,1,47) == network) {
  122.     ; Asking for something network related.
  123.     var %netid $gettok(%url,2,47)
  124.     var %action $gettok(%url,3,47)
  125.     if (%action == $null || %action == view) {
  126.       sockwrite -n $sockname $cpanel_code(200)
  127.       cpanel_head $sockname
  128.       sockwrite -n $sockname <h3>Details regarding the network ' $+ $scon(%netid).network $+ '</h3>
  129.       sockwrite -n $sockname <hr/><h3>Your Details</h3>
  130.       scon %netid
  131.       sockwrite -n $sockname Your Nickname: $nick
  132.       sockwrite -n $sockname <br/> Your Host: $host
  133.       sockwrite -n $sockname <br/> Channel Count: $chan(0)
  134.       sockwrite -n $sockname <hr/>
  135.       sockwrite -n $sockname <h3>Channels you currently reside in:</h3>
  136.       if ($chan(0) > 0) {
  137.         var %i 1
  138.         while (%i <= $chan(0)) {
  139.           sockwrite -n $sockname <a href="/channel/ $+ %netid $+ / $+ %i $+ /view"> $+ $chan(%i) $+ </a> - Total Users: $nick($chan(%i),0) - <a href="/channel/ $+ %netid $+ / $+ %i $+ /part">Part Channel</a> <br>
  140.           inc %i
  141.         }
  142.       }
  143.       else {
  144.         sockwrite -n $sockname <i>You're not in any channels!</i>
  145.       }
  146.       sockwrite -n $sockname <hr><form action="/join/ $+ %netid $+ /"> Join a channel: #<input name="c"/> <button type="submit">Join</button></form>
  147.       sockwrite -n $sockname <hr/><h3>Query Windows</h3>
  148.       if ($query(0) > 0) {
  149.         var %i 1
  150.         while (%i <= $query(0)) {
  151.           sockwrite -n $sockname <a href="/query/ $+ %netid $+ / $+ %i $+ "> $+ $query(%i) $+ </a> - $line($query(%i),0) Lines <br/>
  152.           inc %i
  153.         }
  154.       }
  155.       else {
  156.         sockwrite -n $sockname <i>You have no Query Windows Open</i>
  157.       }
  158.       cpanel_footer $sockname
  159.     }
  160.     else if (%action == dc) {
  161.       if ($scon(%netid).status == connected) {
  162.         scon %netid
  163.         quit Disconnected - Action Taken via mIRC Control Panel
  164.         if (%cpanel.quiet == 0) {
  165.           echo =!= Connection Terminated via mIRC Control Panel =!=
  166.         }
  167.       }
  168.       sockwrite -n $sockname $cpanel_code(200)
  169.       cpanel_redirect $sockname /
  170.     }
  171.   }
  172.   else if ($gettok(%url,1,47) == scripts) {
  173.     var %scid $gettok(%url,2,47)
  174.     if (%scid == $null) {
  175.       sockwrite -n $sockname $cpanel_code(200)
  176.       cpanel_head $sockname
  177.       sockwrite -n $sockname <h3>Loaded Scripts</h3>
  178.       if ($script(0) > 0) {
  179.         sockwrite -n $sockname <b>You have $script(0) scripts loaded.</b><br>
  180.         var %i 1
  181.         while (%i < $script(0)) {
  182.           sockwrite -n $sockname $chr(35) $+ %i  <a href="/scripts/ $+ %i $+ "> $+ $script(%i) $+ </a> - <a href="/scripts/ $+ %i $+ /unload">Unload</a><br/>
  183.           inc %i
  184.         }
  185.         sockwrite -n $sockname $chr(35) $+ $script(0) - $script - <b>Current Script</b>
  186.       }
  187.       else {
  188.         sockwrite -n $sockname <b>You have no Scripts currently loaded.</b>
  189.       }
  190.     }
  191.     else {
  192.       sockwrite -n $sockname $cpanel_code(200)
  193.       cpanel_head $sockname
  194.       sockwrite -n $sockname <h3>Viewing $script(%scid) $+ </h3>
  195.       sockwrite -n $sockname <div id="chat" style="width:100% $+ $chr(37) $+ ;height:60 $+ $chr(37) $+ ;border:1px solid black;overflow:scroll;"><table>
  196.       var %i 2
  197.       while (%i <= $lines($script(%scid))) {
  198.         sockwrite -n $sockname <tr><td style="background:silver;text-align:center;"> $+ %i $+ </td><td> $+ $readini($script(%scid),script,$calc(%i-2)) $+ </td></tr>
  199.         inc %i
  200.       }
  201.       sockwrite -n $sockname </table></div>
  202.  
  203.     }
  204.     cpanel_footer $sockname
  205.   }
  206.   else if ($gettok(%url,1,47) == query) {
  207.     var %netid $gettok(%url,2,47)
  208.     var %quid $gettok(%url,3,47)
  209.     scon %netid
  210.     sockwrite -n $sockname $cpanel_code(200)
  211.     cpanel_head $sockname
  212.     if ($query(%quid)) {
  213.       sockwrite -n $sockname <center><h3><a href="/network/ $+ %netid $+ /"> $+ $network $+ </a> > $query(%quid) </h3></center><hr/>
  214.       sockwrite -n $sockname <div id="chat" style="width:100% $+ $chr(37) $+ ;height:60 $+ $chr(37) $+ ;border:1px solid black;overflow:scroll;float:left;"><pre>
  215.       var %i 1
  216.       while (%i <= $line($query(%quid),0)) {
  217.         var %line $line($query(%quid),%i)
  218.         var %line $replace(%line,$chr(60),&#60;,$chr(62),&#62;)
  219.         sockwrite -n $sockname %line $+ $crlf
  220.         inc %i
  221.       }
  222.       sockwrite -n $sockname </pre></div>
  223.  
  224.     }
  225.     else {
  226.       sockwrite -n $sockname <h3>No Such Query Window!</h3>
  227.     }
  228.   }
  229.   else if ($gettok(%url,1,47) == channel) {
  230.     ; Channel stuff requested
  231.     var %netid $gettok(%url,2,47)
  232.     var %cid $gettok(%url,3,47)
  233.     var %action $gettok(%url,4,47)
  234.     if (%action == part) {
  235.       scon %netid
  236.       part $chan(%cid) Parted via mIRC Control Panel
  237.       echo Parted $chan(%cid)
  238.       sockwrite -n $sockname $cpanel_code(200)
  239.       cpanel_redirect $sockname /network/ $+ %netid
  240.     }
  241.     else if (%action == view) {
  242.       scon %netid
  243.       sockwrite -n $sockname $cpanel_code(200)
  244.       cpanel_head $sockname
  245.       sockwrite -n $sockname <center><h3> $+ <a href="/network/ $+ %netid $+ "> $+ $network $+ </a> > $chan(%cid) $+ </h3></center>
  246.       sockwrite -n $sockname <hr/><b>Mode(s):</b><small> $chan(%cid).mode </small>
  247.       sockwrite -n $sockname <br/><b>User Count:</b><small> $nick($chan(%cid),0) </small>
  248.       sockwrite -n $sockname <br/><b>Topic:</b><small> $chan(%cid).topic
  249.       if ($me isop $chan(%cid)) {
  250.         sockwrite -n $sockname  <a href="/channel/ $+ %netid $+ / $+ %cid $+ /topic">(Change Topic)</a>
  251.       }
  252.       sockwrite -n $sockname </small></b>
  253.       sockwrite -n $sockname <div id="chat" style="width:80 $+ $chr(37) $+ ;height:60 $+ $chr(37) $+ ;border:1px solid black;overflow:scroll;float:left;"><pre>
  254.       var %i 1
  255.       while (%i <= $line($chan(%cid),0)) {
  256.         var %line $line($chan(%cid),%i)
  257.         var %line $replace(%line,$chr(60),&#60;,$chr(62),&#62;)
  258.         sockwrite -n $sockname %line $+ $crlf
  259.         inc %i
  260.       }
  261.       sockwrite -n $sockname </pre></div>
  262.       sockwrite -n $sockname <div style="width:19 $+ $chr(37) $+ ;height:60 $+ $chr(37) $+ ;border:1px solid black;overflow:scroll;float:right;text-align:right;">
  263.       var %i 1
  264.       while (%i <= $nick($chan(%cid),0)) {
  265.         sockwrite -n $sockname $nick($chan(%cid),%i)).pnick </br>
  266.         inc %i
  267.       }
  268.       sockwrite -n $sockname </div>
  269.       sockwrite -n $sockname <script> var objDiv = document.getElementById("chat"); objDiv.scrollTop = objDiv.scrollHeight; </script>
  270.       cpanel_footer $sockname
  271.     }
  272.     else if (%action == topic) {
  273.       sockwrite -n $sockname $cpanel_code(200)
  274.       cpanel_head $sockname
  275.       sockwrite -n $sockname <h3>Change topic in $chan(%cid) </h3>
  276.       if ($me isop $chan(%cid)) {
  277.         sockwrite -n $sockname <form action="/channel/ $+ %netid $+ / $+ %cid $+ /ctopic/">
  278.         sockwrite -n $sockname <b>Topic:</b> <input size="100" name="t" value=" $+ $chan(%cid).topic $+ "/> <button type="submit">Update</button></form>
  279.       }
  280.       else {
  281.         sockwrite -n $sockname You need at least OP to change the topic in $chan(%cid) $+ !
  282.       }
  283.       cpanel_footer $sockname
  284.     }
  285.     else {
  286.       sockwrite -n $sockname $cpanel_code(404)
  287.       sockwrite -n $sockname Unknown action %action $+ !
  288.     }
  289.   }
  290.   elseif ($gettok(%url,1,47) == join) {
  291.     var %netid $gettok(%url,2,47)
  292.     var %channel $gettok($gettok(%url,3,47),2,61)
  293.     scon %netid
  294.     if (%cpanel.quiet == 0) { echo =!= Joining # $+ %channel =!= }
  295.     join $chr(35) $+ %channel
  296.     sockwrite -n $sockname $cpanel_code(200)
  297.     cpanel_redirect $sockname /network/ $+ %netid
  298.  
  299.   }
  300.   elseif ($exists(%cpanel.dir $+ %url)) {
  301.     var %fname %cpanel.dir $+ %url
  302.     echo Reading %fname
  303.     var %i 1
  304.     sockwrite -n $sockname $cpanel_code(200,text/plain)
  305.     while (%i <= $lines(%fname)) {
  306.       sockwrite -nt $sockname $read(%fname,n,%i)
  307.       inc %i
  308.     }
  309.   }
  310.   .timer 1 1 /sockclose $sockname
  311.   else {
  312.     sockwrite -n $sockname $cpanel_code(404)
  313.     sockwrite -n $sockname <h1>404 Not Found</h1>
  314.     sockwrite -n $sockname The Page you are looking for is not here!
  315.     sockwrite -n $sockname <br/> We couldnt find <b> $+ $gettok(%url,1,47) $+ </b>
  316.     cpanel_footer $sockname
  317.   }
  318. }
  319. alias cpanel_code {
  320.   if ($1 == 404) {
  321.     var %ret HTTP/1.1 404 Not Found
  322.   }
  323.   else if ($1 == 200) {
  324.     var %ret HTTP/1.1 200 OK
  325.   }
  326.   else {
  327.     var %ret HTTP/1.1 $1 Responded
  328.   }
  329.   var %ret %ret $+ $crlf $+ Content-Type: $iif($2 == $null,text/html,$2)
  330.   ;var %ret %ret $+ $crlf $+ WWW-Authenticate: Basic realm="mIRC Control Panel"
  331.   var %ret %ret $+ $crlf $+ $crlf
  332.   return %ret
  333. }
  334. alias cpanel_css {
  335.   sockwrite -n $1 <style>
  336.   sockwrite -n $1 body $chr(123) font-family:"Arial"; $chr(125)
  337.   sockwrite -n $1 </style>
  338. }
  339. alias cpanel_head {
  340.   sockwrite -n $1 <title>mIRC Control Panel</title>
  341.   cpanel_css $1
  342.   sockwrite -n $1 <center>mIRC Control Panel</center>
  343.   sockwrite -n $1 <hr />
  344.   sockwrite -n $1 <center><a href="/home">Home</a> <!-- <a href="/scripts">Loaded Scripts</a> --> - <a href="/logout">Logout</a></center>
  345.   sockwrite -n $1 <hr/>
  346. }
  347. alias cpanel_footer {
  348.   sockwrite -n $1 <hr />
  349.   sockwrite -n $1 <center><small>mIRC Control Panel by Thomas Edwards &copy; 2013</small></center>
  350.  
  351. }
  352. alias cpanel_redirect {
  353.   cpanel_css $1
  354.   sockwrite -n $1 <h1>Redirecting</h1>
  355.   sockwrite -n $1 If you are not redirected <a href=" $+ $2- $+ ">Click Here</a>!
  356.   sockwrite -n $1 <meta http-equiv="refresh" content="0.1;URL=' $+ $2- $+ '">
  357. }
  358. alias cpanel_include {
  359.   echo Including $2- into Socket $1
  360.   var %i 1
  361.   while (%i <= $lines($2-)) {
  362.     var %line $read($2-,%i)
  363.     if (%line == $null) {
  364.       var %line $chr(32)
  365.     }
  366.     sockwrite -n $1 %line
  367.     inc %i
  368.   }
  369. }
Advertisement
Add Comment
Please, Sign In to add comment