prog

ROMS

Sep 26th, 2010
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var http_server = context.CreateTcpServer();
  2. http_server.onaccept = 'http_server_accept';
  3. http_server.listen(5000, "0.0.0.0");
  4.  
  5. function http_server_accept()
  6. {
  7.   peer.onreadline = 'peer_readline';
  8. }
  9.  
  10. function peer_readline()
  11. {
  12.   if (peer.hand.length == 0)
  13.   {
  14.     var args = text.split(' ');
  15.     if (args[0] == 'GET' || args[0] == 'POST')
  16.     {
  17.       peer.hand = args[1] + ' ' + args[2];
  18.     }
  19.   }
  20.   else
  21.   {
  22.     if (text.length == 0)
  23.     {
  24.       processRequest(peer.hand.split(' ')[0]);
  25.       peer.hand = '';
  26.     }
  27.   }
  28. }
  29.  
  30. function sendResponse(response)
  31. {
  32.   peer.sendline(peer.hand.split(' ')[1] + ' 200 OK');
  33.   peer.sendline('Server: cubix 7.0');
  34.   peer.sendline('Date: ' + new Date());
  35.   peer.sendline('Content-Type: text/html');
  36.   peer.sendline('Content-Length: ' + (response.length + 2));
  37.   peer.sendline('');
  38.   peer.sendline(response);
  39.   //peer.disconnect();
  40. }
  41.  
  42. function processRequest(document)
  43. {
  44.   switch (document)
  45.   {
  46.     case '/':
  47.       sendResponse("<h1>You are at the root directory</h1>");
  48.       break;
  49.     default:
  50.       sendResponse(dumpChannel('#' + document.substring(1)));
  51.       break;
  52.   }
  53. }
  54.  
  55. function dumpChannel(chan)
  56. {
  57.   var chan = irc.channel(chan);
  58.   var result = '';
  59.   result += '<html>' + '\r\n';
  60.   result += '<head>' + '\r\n';
  61. //  result += '<meta http-equiv="refresh" content="5">' + '\r\n';
  62.   result += '<style type="text/css">' + '\r\n';
  63.   result += '<!--' + '\r\n';
  64.   result += '@font-face { font-family:"Fixedsys Excelsior 2.00"; src: url("fixedsys.ttf"); }';
  65.   result += 'table, td, th, h2 { border:1px solid orange; font-family:"Fixedsys Excelsior 2.00"; font-size: 11pt; }' + '\r\n';
  66.   result += 'table { border-collapse:collapse; }' + '\r\n';
  67.   result += 'th { background-color:orange; color:white; }' + '\r\n';
  68.   result += 'h1 { font-weight: normal; }' + '\r\n';
  69.   result += 'h2 { font-weight: normal; }' + '\r\n';
  70.   result += 'title { font-size: 36pt; }' + '\r\n';
  71.   result += 'a { text-decoration:none; }' + '\r\n';
  72.   result += '--->' + '\r\n';
  73.   result += '</style>' + '\r\n';
  74.   result += '</head>' + '\r\n';
  75.   result += '<body>' + '\r\n';
  76.   result += '<h1><a href="http://chat.mibbit.com/?url=irc%3A%2F%2Fprog.ma%3A5556"><span class="title">' + chan + '</span></a> as of ' + new Date() + '</h1>' + '\r\n';
  77.   result += '<h2><b>Topic:</b> ' + colorize(chan.topic) + '</h2>' + '\r\n';
  78.   result += '<h2><b>Users:</b> ' + chan.users.count + '</h2>' + '\r\n';
  79.   result += '<table border="0" width="100%" style="table-layout:fixed">' + '\r\n';
  80.   result += '<col width="110">' + '\r\n';
  81.   result += '<col width="550">' + '\r\n';
  82.   result += '<col>' + '\r\n';
  83.   result += '<tr>' + '\r\n';
  84.   result += '<th>User</th>' + '\r\n';
  85.   result += '<th>Full address</th>' + '\r\n';
  86.   result += '<th>Real name</th>' + '\r\n';
  87.   result += '</tr>' + '\r\n';
  88.   for (var i = 0; i < chan.users.count; i++)
  89.   {
  90.     var user = chan.users(i);
  91.     if (user.hasop(chan))
  92.     {
  93.       result += '<tr>' + '\r\n';
  94.       result += '<td>@' + user.nickname + '</td>' + '\r\n';
  95.       result += '<td>' + user.fulladdress + '</td>' + '\r\n';
  96.       result += '<td>' + colorize(user.realname) + '</td>' + '\r\n';
  97.       result += '</tr>' + '\r\n';
  98.     }
  99.   }
  100.   for (var i = 0; i < chan.users.count; i++)
  101.   {
  102.     var user = chan.users(i);
  103.     if (!user.hasop(chan) && user.hasvoice(chan))
  104.     {
  105.       result += '<tr>' + '\r\n';
  106.       result += '<td>+' + user.nickname + '</td>' + '\r\n';
  107.       result += '<td>' + user.fulladdress + '</td>' + '\r\n';
  108.       result += '<td>' + colorize(user.realname) + '</td>' + '\r\n';
  109.       result += '</tr>' + '\r\n';
  110.     }
  111.   }
  112.   for (var i = 0; i < chan.users.count; i++)
  113.   {
  114.     var user = chan.users(i);
  115.     if (!user.hasop(chan) && !user.hasvoice(chan))
  116.     {
  117.       result += '<tr>' + '\r\n';
  118.       result += '<td> ' + user.nickname + '</td>' + '\r\n';
  119.       result += '<td>' + user.fulladdress + '</td>' + '\r\n';
  120.       result += '<td>' + colorize(user.realname) + '</td>' + '\r\n';
  121.       result += '</tr>' + '\r\n';
  122.     }
  123.   }
  124.   result += '</table>' + '\r\n';
  125.   result += '</body>' + '\r\n';
  126.   result += '</html>' + '\r\n';
  127.  
  128.   return result;
  129. }
  130.  
  131.  
  132. // Copyright (c) 2006 Chris Chabot <chabotc@xs4all.nl>
  133. //
  134. // this script is freely distributable under the terms of an MIT-style license.
  135. // For details, see the web site: http://www.chabotc.nl/
  136.  
  137. function colorize (message) {
  138.     var pageBack  = 'white';
  139.     var pageFront = 'black';
  140.     var length    = message.length;
  141.     var newText   = '';
  142.     var bold      = false;
  143.     var color     = false;
  144.     var reverse   = false;
  145.     var underline = false;
  146.     var foreColor = '';
  147.     var backColor = '';
  148.     for (var i = 0 ; i < length ; i++) {
  149.         switch (message.charAt(i)) {
  150.             case String.fromCharCode(2):
  151.                 if (bold) {
  152.                     newText += '</b>';
  153.                     bold     = false;
  154.                 } else {
  155.                     newText += '<b>';
  156.                     bold    = true;
  157.                 }
  158.                 break;
  159.             case String.fromCharCode(3):
  160.                 if (color) {
  161.                     newText += '</span>';
  162.                     if (!backColor) {
  163.                         color = false;
  164.                     }
  165.                 }
  166.                 foreColor = '';
  167.                 if ((parseInt(message.charAt(i+1)) >= 0) && (parseInt(message.charAt(i+1)) <= 9)) {
  168.                     color = true;
  169.                     if ((parseInt(message.charAt(++i+1)) >= 0) && (parseInt(message.charAt(i+1)) <= 9)) {
  170.                         foreColor = getColor(parseInt(message.charAt(i)) * 10 + parseInt(message.charAt(++i)));
  171.                     } else {
  172.                         foreColor = getColor(parseInt(message.charAt(i)));
  173.                     }
  174.                     if ((message.charAt(i+1) == ',') && (parseInt(message.charAt(++i+1)) >= 0) && (parseInt(message.charAt(i+1)) <= 9)) {
  175.                         if ((parseInt(message.charAt(++i+1)) >= 0) && (parseInt(message.charAt(i+1)) <= 9)) {
  176.                             backColor = getColor(parseInt(message.charAt(i)) * 10 + parseInt(message.charAt(++i)));
  177.                         } else {
  178.                             backColor = getColor(parseInt(message.charAt(i)));
  179.                         }
  180.                     }
  181.                 }
  182.                 else {
  183.                     backColor = '';
  184.                 }
  185.                 if (foreColor) {
  186.                     newText += '<span style="color:'+foreColor;
  187.                     if (backColor) {
  188.                         newText += ';background-color:'+backColor;
  189.                     }
  190.                     newText += '">';
  191.                 }
  192.                 break;
  193.             case String.fromCharCode(15):
  194.                 if (bold) {
  195.                     newText += '</b>';
  196.                     bold     = false;
  197.                 }
  198.                 if (color) {
  199.                     newText += '</span>';
  200.                     color    = false;
  201.                 }
  202.                 if (reverse) {
  203.                     newText += '</span>';
  204.                     reverse  = false;
  205.                 }
  206.                 if (underline) {
  207.                     newText  += '</u>';
  208.                     underline = false;
  209.                 }
  210.                 break;
  211.             case String.fromCharCode(22):
  212.                 if (reverse) {
  213.                     newText += '</span>';
  214.                     reverse  = false;
  215.                 } else {
  216.                     newText += '<span style="color:'+pageBack+';background-color:'+pageFront+'">';
  217.                     reverse  = true;
  218.                 }
  219.             case String.fromCharCode(31):
  220.                 if (underline) {
  221.                     newText  += '</u>';
  222.                     underline = false;
  223.                 } else {
  224.                     newText  += '<u>';
  225.                     underline = true;
  226.                 }
  227.             default:
  228.                 newText += message.charAt(i);
  229.                 break;
  230.         }
  231.  
  232.     }
  233.     if (bold)      newText += '</b>';
  234.     if (color)     newText += '</span>';
  235.     if (reverse)   newText += '</span>'
  236.     if (underline) newText += '</u>';
  237.     return newText;
  238. }
  239.  
  240. function getColor(numeric)
  241. {
  242.     var num = parseInt(numeric);
  243.     switch (num) {
  244.         case 0:  return 'white';
  245.         case 1:  return 'black';
  246.         case 2:  return 'navy';
  247.         case 3:  return 'green';
  248.         case 4:  return 'red';
  249.         case 5:  return 'maroon';
  250.         case 6:  return 'purple';
  251.         case 7:  return 'orange';
  252.         case 8:  return 'yellow';
  253.         case 9:  return 'lime';
  254.         case 10: return 'teal';
  255.         case 11: return 'aqua';
  256.         case 12: return 'blue';
  257.         case 13: return 'fuchsia';
  258.         case 14: return 'gray';
  259.         default: return 'silver';
  260.     }
  261. }
Add Comment
Please, Sign In to add comment