New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

whatap

Package Overview
Dependencies
Maintainers
1
Versions
182
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

whatap - npm Package Compare versions

Comparing version 0.4.91 to 0.4.92

142

lib/observers/socket.io-observer.js

@@ -7,18 +7,3 @@ /**

var MeterSocketio = require('../counter/meter/meter-socket.io'),
TraceContextManager = require('../trace/trace-context-manager'),
SocketStep = require('../step/socket-step'),
conf = require('../conf/configure'),
IPUtil = require('../util/iputil'),
Logger = require('../logger');
const {Detector: URLPatternDetector} = require("whatap/lib/trace/serviceurl-pattern-detector");
const HashUtil = require("whatap/lib/util/hashutil");
const DataTextAgent = require("whatap/lib/data/datatext-agent");
const ResourceProfile = require("whatap/lib/util/resourceprofile");
const ProfilePack = require('../pack/profile-pack');
const TxRecord = require('../service/tx-record');
const DateUtil = require('../util/dateutil');
const SecurityMaster = require('../net/security-master');
const DataProfileAgent = require('../data/dataprofile-agent');
const MeterService = require('../counter/meter/meter-service').MeterService;
var MeterSocketio = require('../counter/meter/meter-socket.io');

@@ -30,113 +15,42 @@ var SocketIOObserver = function(agent){

SocketIOObserver.prototype.inject = function (mod, moduleName) {
if (mod.__whatap_observe__) {
return;
}
mod.__whatap_observe__ = true;
Logger.initPrint("SocketIOObserver");
if (conf.trace_background_socket_enabled === false) {
return;
}
SocketIOObserver.prototype.inject = function( mod ){
var self = this;
var aop = self.agent.aop;
aop.before(mod.Server?.prototype, 'on', function (obj, args, ret, lctx) {
args[args.length-1] = self.__createTransactionObserver(args[args.length-1]);
})
};
if(mod.__whatap_observe__) { return; }
mod.__whatap_observe__ = true;
SocketIOObserver.prototype.__createTransactionObserver = function (callback) {
var self = this;
aop.after(mod.prototype, ['listen','attach'], function(obj, args, ret) {
if (!ret.sockets) return;
return function (){
TraceContextManager._asyncLocalStorage.run(initCtx(), () => {
var ctx = TraceContextManager._asyncLocalStorage.getStore();
if(!ctx) {
return;
}
aop.before(ret.sockets, ['on', 'addListener'], function(obj, args) {
if (args[0] !== 'connection') return;
MeterSocketio.connected(1);
aop.functionHook(args, -1, function(obj, args) {
if (!args[0]) return; //no client socket
var host;
const socket = arguments[0];
const address = socket.handshake.address;
if(address && address.includes(':')){
host = address.substring(address.lastIndexOf(':')+1);
}
var socket = args[0];
ctx.socket_connecting = true;
MeterSocketio.connected(1);
ctx.footprint('Socket Connecting: ' + host);
socket.on('disconnect', function() {
MeterSocketio.disconnected();
});
var step = new SocketStep();
step.start_time = ctx.getElapsedTime();
step.ipaddr = Buffer.from(IPUtil.stringToBytes(host));
// step.port = port;
aop.before(socket, ['emit', 'send'], function(obj, args) {
if (args[0] === 'newListener') return;
MeterSocketio.send(null, args);
});
ctx.socket_connecting = false;
step.elapsed = ctx.getElapsedTime() - step.start_time;
ctx.profile.push(step);
ctx.footprint('Socket Connecting Done');
self.__endTransaction(null, ctx);
return;
})
}
aop.before(socket, ['on', 'addListener'], function(obj, args) {
if (args[0] === 'disconnect') return;
aop.functionHook(args, -1, function (obj, args) {
MeterSocketio.receive(null, args[0]);
});
});
});
});
});
}
SocketIOObserver.prototype.__endTransaction = function(error, ctx) {
try {
var profile = new ProfilePack();
var wtx = new TxRecord();
wtx.endTime = DateUtil.currentTime();
profile.time = wtx.endTime;
wtx.elapsed = ctx.getElapsedTime();
ctx.service_hash = HashUtil.hashFromString(ctx.service_name);
DataTextAgent.SERVICE.add(ctx.service_hash, ctx.service_name);
wtx.service = ctx.service_hash;
wtx.cpuTime = ResourceProfile.getCPUTime() - ctx.start_cpu;
wtx.malloc = ResourceProfile.getUsedHeapSize()-ctx.start_malloc;
if(wtx.malloc < 0) { wtx.malloc = 0; }
wtx.status = 2;
MeterService.add(wtx.service, wtx.elapsed,
wtx.errorLevel, ctx.mcaller_pcode, ctx.mcaller_okind, ctx.mcaller_oid);
profile.oid = SecurityMaster.OID;
profile.service = wtx;
TraceContextManager.end(ctx._id);
setTimeout(function () {
DataProfileAgent.sendProfile(ctx, profile, false);
ctx = null;
}, 100);
} catch (e) {
Logger.printError('WHATAP-607', 'End transaction error..', e, false);
TraceContextManager.end(ctx._id);
ctx = null;
}
};
function initCtx() {
const ctx = TraceContextManager.start();
if (!ctx) {
return;
}
ctx.start_malloc = ResourceProfile.getUsedHeapSize();
ctx.start_cpu = ResourceProfile.getCPUTime();
var remote_addr = IPUtil.checkIp4("0.0.0.0");
ctx.remoteIp = IPUtil.stringToInt(remote_addr);
return ctx;
}
exports.SocketIOObserver = SocketIOObserver;

4

package.json
{
"name": "whatap",
"homepage": "http://www.whatap.io",
"version": "0.4.91",
"releaseDate": "20240205",
"version": "0.4.92",
"releaseDate": "20240206",
"description": "Monitoring and Profiling Service",

@@ -7,0 +7,0 @@ "main": "index.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc