Skip to content

Instantly share code, notes, and snippets.

@atdt
Created November 8, 2012 06:32
Show Gist options
  • Save atdt/4037228 to your computer and use it in GitHub Desktop.
Save atdt/4037228 to your computer and use it in GitHub Desktop.

Revisions

  1. atdt created this gist Nov 8, 2012.
    43 changes: 43 additions & 0 deletions wp-telnet.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,43 @@
    // Wikipedia telnet server
    //
    // To install depenedncies:
    // npm install request
    // npm install cheerio
    //

    var net = require( 'net' );
    var cheerio = require('cheerio');
    var request = require('request');
    var fs = require('fs');

    var port = 1081;
    var logo = fs.readFileSync( 'wiki-logo.txt' );
    var baseUrl = 'http://en.wikipedia.org/wiki/';
    var ps1 = '\n\n>>> ';

    function recv( socket, data ) {

    data = data.toString().replace( /(\r\n|\n|\r)/gm, '' );
    data = data.replace( /\s/g, '_' );

    if ( data === 'quit' ) {
    socket.end( 'Bye!\n' );
    return;
    }

    request( { uri: baseUrl + data }, function ( error, response, body ) {
    if ( body && body.length ) {
    $ = cheerio.load( body );
    socket.write( $( '#mw-content-text p' ).first().text() + '\n' );
    } else {
    socket.write( 'Error: ' + response.statusCode );
    }
    socket.write( ps1 );
    } );
    }

    net.createServer( function ( socket ) {
    socket.write( logo );
    socket.write( ps1 );
    socket.on( 'data', recv.bind( null, socket ) );
    } ).listen( port );