Пример #1
0
exports.serve = function (crawler, port) {
  var webserver = require('webserver');
  var server = webserver.create();

  var service = server.listen(port, function(request, response) {
    var context = {
      postParams: request.post,
      getParams: getParams(request.url)
    };

    crawler(context, function (event, context) {
      response.statusCode = 200;
      response.headers = {
          'Cache': 'no-cache',
          'Content-Type': 'application/json;charset=utf-8'
      };
      response.write(JSON.stringify(context.data, null, 2));
      response.close();
    });
  });

  return function () {
    server.close();
  };
};
Пример #2
0
function Server(bind,page){
    log.debug("server constructor start execute");
    this.COMMAND_FUNCTION_NAME_SIGNATURE = "command_" ;
    this.page = page;
    this.serverBind = bind || "127.0.0.1:5030";
    this.serverHandler = webserver.create();
}
	localWebServer = function () {
		var server = require("webserver"),
			serverInstance,
			fs = require("fs"),
			root = rootDir,
			protocol = 'http:',
			port = httpServerPort,
			createServerCallback;

		createServerCallback = function (request, response) {
			var uri = URI(root + request.url),
				filename = uri.normalizePathname().pathname(),
				contentTypes = {
					'html': 'text/html',
					'js': 'text/javascript',
					'css': 'text/css',
					'png': 'image/png',
					'jpg': 'image/jpeg',
					'gif': 'image/gif',
					'svg': 'image/svg+xml',
					'swf': 'application/x-shockwave-flash'
				},
				file,
				data,
				extension;
			if (fs.exists(filename)) {
				data = fs.read(filename);
				extension = filename.split('.').pop();

				response.statusCode = 200;

				response.headers = {
					"Content-Type": contentTypes[extension] || "text/plain",
					"Content-Length": data.length,
					"Pragma": "no-cache",
					"Expires": "Wed, 11 Jan 1984 05:00:00 GMT",
					"Cache-Control": "max-age=0, no-cache, no-store, must-revalidate",
					"Access-Control-Allow-Origin": "*"
				};
				response.write(data);
			} else {
				console.log("Phantomjs webserver sends 404 for:", filename);

				response.statusCode = 404;
				response.headers = {
					"Content-Type": "text/plain"
				};
				response.write("404 Not Found\n");
			}
			response.close();
		};

		serverInstance = server.create()
			.listen(port, {'keepAlive': true}, createServerCallback);

		console.log();
		console.log("Static file server running at\n  => " + protocol + "://localhost:" + port);
	},
Пример #4
0
function Server(bind){
    log.debug("server constructor start execute");
    this.COMMAND_FUNCTION_NAME_SIGNATURE = "command_" ;
    if (!bind && this.hasOwnProperty("config")){
        if (this.config.hasOwnProperty("bind")){
            this.serverBind = this.config.bind;
        }

    }
    this.serverBind = this.serverBind || "127.0.0.1:5030";
    this.serverHandler = webserver.create();
}
Пример #5
0
page.open(settings.pageUrl, function(status) {
  if (status !== 'success') {
    console.log('Failed to load the address', settings.pageUrl);
    phantom.exit(1);
  }

  var phantomRunnerDefinition = page.evaluate(function() {
    return getPhantomRunnerDefinition();
  });

  if(!phantomRunnerDefinition) {
    console.error("Unable to get runner definition from page.");
    phantom.exit(2);
  }

  console.log('Opened page', settings.pageUrl, JSON.stringify(phantomRunnerDefinition));

  var server = webserver.create();
  var service = server.listen(settings.port, function(request, response) {
    var responseHelper = new ResponseHelper(response);

    var returnValue = null;

    try {
      page.onCallback = function(data) {
        if(data.status === "success") {
          var base64 = null;

          if(data.base64) {
            base64 = data.base64;
          }

          responseHelper.write(base64);
        } else {
          responseHelper.error(data.message);
        }
      };

      returnValue = page.evaluate(function(request) {
        return execute(request);
      }, request);

      if(!!returnValue && !returnValue.async) {
        responseHelper.json(returnValue);
      }
    } catch(e) {
      responseHelper.error(e);
    }
  });
  console.log('PhantomJs server instance is running.');
});
Пример #6
0
Angel.prototype.init = function (ip, port) {
  var self = this;
  self._ip = ip;
  self._port = port;
  self._page = webpage.create();
  self._server = webserver.create();
  self._adblock = new adblock();
  console.log("Creating new Tab: " + ip + ":" + port);
  self._page.viewportSize = {
    width: 1024,
    height: 768
  };
  self._page.settings.resourceTimeout = 60000;
  self._page.onResourceRequested = function (requestData, networkRequest) {
    self._onResourceRequested(requestData, networkRequest);
  };
  self._page.onResourceReceived = function (response) {
    self._onResourceReceived(response);
  };
  self._page.onResourceTimeout = function (request) {
    self._onResourceTimeout(request);
  };
  self._page.onResourceError = function (resourceError) {
    self._onResourceError(resourceError);
  };
  self._page.onConsoleMessage = function (msg, lineNum, sourceId) {
    self._onConsoleMessage(msg, lineNum, sourceId);
  };
  try {
    self._server.listen(ip + ":" + port,
      function (request, response) {
        self._handleRequest(request, response);
      });
    self._announceAngel();
  } catch (ex) {
    phantom.exit();
  }
  console.log("Starting Angel on port: " + self._port);
  self._resetAutoDestruct();
};
Пример #7
0
 * alert, confirm, etc. The page will be evaluated, and the DOM
 * triggers will alert us of any suspicious JS.
*/
var DEBUG = true

var system = require('system');
var fs = require('fs');

// Create xss object that will be used to track XSS information
var xss = new Object();
xss.value = 0;
xss.msg = "";

// Create webserver object
var webserver = require('webserver');
server = webserver.create();

// Server config details
var host = '127.0.0.1';
var port = '8093';

/**
 * parse incoming HTTP responses that are provided via BURP intruder.
 * data is base64 encoded to prevent issues passing via HTTP.
 */
parsePage = function(data,url,headers) {
	if (DEBUG) {	
		console.log("Beginning to parse page");
		console.log("\tURL: " + url);
		console.log("\tHeaders: " + headers);
	}
Пример #8
0
var webpage = require('webpage');
var server = require('webserver')
var system = require('system');
var waitfor = require('./waitfor.js');

var listening = server.create().listen(8080, function (request, response) {

    var page = webpage.create();
    page.settings.loadImages = false;

    response.headers = {
        "Content-Type" : "text/html; charset=UTF-8",
        "X-PhantomJS" : "true"
    };
    page.onResourceRequested = function (requestData, request) {
        if ((/http:\/\/.+?\.css/gi).test(requestData['url']) ||
                requestData.headers['Content-Type'] == 'text/css') {
            console.log('The url of the request is matching. Aborting: ' + requestData['url']);
            request.abort();
        }
    };

    page.onResourceError = function (resourceError) {
        console.log('Unable to load resource (#' + resourceError.id + 'URL:' + resourceError.url + ')');
        console.log('Error code: ' + resourceError.errorCode + '. Description: ' + resourceError.errorString);
    };

    page.onError = function (msg, trace) {

        var msgStack = ['ERROR: ' + msg];
Пример #9
0

phantom.injectJs("./test-environment.js");
phantom.injectJs("./test-require.js");
phantom.injectJs("./test-system.js");
phantom.injectJs("./test-webpage.js");
phantom.injectJs("./test-webpage-listeners.js");
phantom.injectJs("./test-webpage-keyevent.js");
phantom.injectJs("./test-webpage-keyevent2.js");
phantom.injectJs("./test-webpage-mouseevent.js");
phantom.injectJs("./test-webpage-callbacks.js");
phantom.injectJs("./test-webpage-render.js");
phantom.injectJs("./test-webpage-prompt.js");
phantom.injectJs("./test-webpage-open.js");

var webserverTest = webServerFactory.create();
webserverTest.listen(8083, function(request, response) {

    var filepath = phantom.libraryPath+'/www'+request.url;
    if (fs.exists(filepath)){
        if (fs.isFile(filepath)) {
            response.statusCode = 200;
            var str = fs.read(filepath, "b")
            var h = {};
            var enc = '';
            if (filepath.match(/\.png$/)) {
                response.setEncoding("binary");
                h['Content-Type'] = 'image/png';
            }
            else if (filepath.match(/\.css$/))
                h['Content-Type'] = 'text/css';
Пример #10
0
    var queryEnd = url.indexOf("#");

    if (queryEnd < 0) {
        queryEnd = url.length;
    }

    var queryString = url.substring(pathEnd + 1, queryEnd);
    var query = parseQuery(queryString);

    return {
        pathname: path,
        query: query
    };
}

var s = server.create();
var service = s.listen(46317, function (req, resp) {
    var u = parseUrl(req.url);
    var params = u.query;

    function writeError(e) {
        console.error("Error: " + e.message + " (fetching " + params.url + ")");
        console.error(JSON.stringify(e));

        resp.statusCode = 500;
        resp.setHeader("Content-Type", "text/plain");
        resp.write("Message: " + e.message + "\n");
        resp.write(JSON.stringify(e));
        resp.write("\n" + e);
        resp.close();
    }
Пример #11
0
var FORMATS = {
    png: {ext: "png", contentType: ""}
},
    IMG_URL = system.env["THUMBER_IMG_URL"] || "/thumb",
    IMG_DIR = system.env["THUMBER_IMG_DIR"] ||
        fs.workingDirectory + fs.separator + "thumb",
    TIMEOUT_DEFAULT = parseInt(system.env["THUMBER_TIMEOUT"]),
    PORT = system.env["PHANTOM_PORT"];

PORT = PORT ? parseInt(PORT) : 8080;

if (isNaN(TIMEOUT_DEFAULT))
    TIMEOUT_DEFAULT = 5000;


var server = webserver.create(),
    service = server.listen(PORT, function(request, response) {
        var url = request.url,
            urlParts = url.split("?"),
            query = parseQuery(urlParts[1]),
            fetchURL = query.url,
            format = query.format,
            timeout = parseInt(query.timeout);

        if (!query.url) {
            response.statusCode = 401;
            response.closeGracefully();
            return;
        }

        if (!format)
var pageCache = [];

var adapterName = phantom.libraryPath + '/' + 'phantomjs-template-adapter.html';
var adapterHTML = fs.read(adapterName);

var renderFormats = {
    'application/pdf': 'pdf',
    'image/jpeg':      'jpeg',
    'image/png':       'png',
};

if (!secret) {
    console.warn('Warning: No secret supplied. Will accept unsigned requests!');
}

if (webserver.create().listen(port, function(request, response) {
    // HTTP headers are case-insensitive
    request.headers = Object.keys(request.headers).reduce(function(headers, key) {
        headers[key.toLowerCase()] = request.headers[key];
        return headers;
    }, {});

    try {
        $renderTemplate(parseRequest(request))
            .catch(function(err) {
                return err;
            })
            .then(function(result) {
                if (!(result instanceof Array)) {
                    result = [500, result && result.message || ('Unknown renderer response: ' + result)];
                }
Пример #13
0
function main() {
    var port = 9005;
    var svr = webserver.create();
    svr.listen(port, handle_request);
}
Пример #14
0
        top:    clipRect.top,
        left:   clipRect.left,
        width:  clipRect.width,
        height: clipRect.height
    };

    var pic = page.renderBase64('png');

    console.log("Rendered image of size: " + clipRect.width + 'x' + clipRect.height + " (" + pic.length + " bytes)");

    return pic;
};


console.log("-> Starting server on port " + PORT + ".");
webserver.create().listen(PORT, function(request, response) {
    console.log(request.method + ' ' + request.url);

    if (request.method != 'POST' || request.url != '/') {
        response.statusCode = 404;
        response.close();
        return;
    }

    // TODO: Add some kind of security here?
    var render_fn = request.post && request.post['src'];
    var page = webpage.create();

    page.open('shell.html', function(status) {
        if (status != 'success') {
            console.log("Failed to load shell page, status: " + status);