kopia lustrzana https://github.com/c9/core
137 wiersze
2.8 KiB
JavaScript
137 wiersze
2.8 KiB
JavaScript
var net = require("net");
|
|
var fs = require("fs");
|
|
|
|
var debug = function() {};
|
|
// var debug = console.error.bind(console);
|
|
var socketPath = process.env.HOME + "/.c9/xdebug.sock";
|
|
if (process.platform == "win32")
|
|
socketPath = "\\\\.\\pipe\\" + socketPath.replace(/\//g, "\\");
|
|
|
|
var host = "{HOST}" || "127.0.0.1";
|
|
var port = parseInt("{PORT}", 10) || 9000;
|
|
|
|
var browserBuffer = [];
|
|
var debugBuffer = [];
|
|
var browserClient;
|
|
var debugClient;
|
|
|
|
var log = console.log;
|
|
|
|
console.warn = console.log = function() {
|
|
return console.error.apply(console, arguments);
|
|
};
|
|
function send() {
|
|
log.apply(console, arguments);
|
|
}
|
|
|
|
|
|
/*** --- ***/
|
|
|
|
var browserServer = net.createServer(function(client) {
|
|
debug("browserClient::connect");
|
|
|
|
if (browserClient)
|
|
browserClient.end();
|
|
|
|
browserClient = client;
|
|
debugBuffer = [];
|
|
|
|
browserClient.on("end", function() {
|
|
debug("browserClient::end");
|
|
process.exit(0);
|
|
browserClient = null;
|
|
});
|
|
|
|
browserClient.on("data", function(data) {
|
|
debug("browserClient::data:", data.toString("utf8"));
|
|
if (debugClient) {
|
|
debugClient.write(data);
|
|
} else {
|
|
debugBuffer.push(data);
|
|
}
|
|
});
|
|
|
|
if (browserBuffer.length) {
|
|
browserBuffer.forEach(function(data) {
|
|
browserClient.write(data);
|
|
});
|
|
browserBuffer = [];
|
|
}
|
|
});
|
|
|
|
|
|
if (process.platform !== "win32") {
|
|
try {
|
|
fs.unlinkSync(socketPath);
|
|
} catch (e) {
|
|
if (e.code != "ENOENT")
|
|
console.log(e);
|
|
}
|
|
}
|
|
browserServer.listen(socketPath, function() {
|
|
debug("netproxy listening for " + socketPath);
|
|
start();
|
|
});
|
|
|
|
browserServer.on("error", function(err) {
|
|
console.log(err);
|
|
process.exit(0);
|
|
});
|
|
browserServer.on("close", function(err) {
|
|
console.log(err);
|
|
process.exit(0);
|
|
});
|
|
|
|
/*** --- ***/
|
|
|
|
var debugServer = net.createServer(function(client) {
|
|
debug("debugClient::connect");
|
|
|
|
if (debugClient)
|
|
debugClient.end();
|
|
|
|
debugClient = client;
|
|
|
|
debugBuffer = [];
|
|
browserBuffer = [];
|
|
|
|
debugClient.on("end", function() {
|
|
debug("debugClient::end");
|
|
process.exit(0);
|
|
});
|
|
|
|
debugClient.on("data", function(data) {
|
|
debug("debugClient::data:", data.toString("utf8"));
|
|
if (browserClient) {
|
|
browserClient.write(data);
|
|
} else {
|
|
browserBuffer.push(data);
|
|
}
|
|
});
|
|
|
|
if (debugBuffer.length) {
|
|
debugBuffer.forEach(function(data) {
|
|
debugClient.write(data);
|
|
});
|
|
debugBuffer = [];
|
|
}
|
|
});
|
|
|
|
debugServer.listen(port, host, function() {
|
|
debug("netproxy listening for debugger on port " + port);
|
|
start();
|
|
});
|
|
|
|
debugServer.on("error", function(err) {
|
|
console.log(err);
|
|
process.exit(0);
|
|
});
|
|
|
|
/*** --- ***/
|
|
|
|
var I = 0;
|
|
function start() {
|
|
if (++I == 2)
|
|
send("ß");
|
|
}
|