
Threat Research
/Security News
Searchjacked: Hidden Browser Extensions Hijack Searches for 13 Million Users
319 browser extensions installed by 13.4 million users hijack searches, capture queries, and collect referral payments from Yahoo and Bing.
patrol-helper
Advanced tools
Patrol-Helperis a JavaScript library designed to help developers manage camera preset polling. It allows you to easily control camera presets, cycle through them, and execute custom actions at various stages of the polling process.
Installing with npm is recommended and it works seamlessly with webpack.
npm install patrol-helper --save
CDN
Get the latest version from unpkg.com/patrol-helper , and import JavaScript file in your page.
<script src="https://unpkg.com/patrol-helper@latest/dist/patrol-helper.min.js"></script>
Create a preset poller responsible for polling presets: start, pause, resume, and stop
import { createPresetPoller } from "patrol-helper";
// Parameter explanation: screendId: Screen number, starts from 1; cameraId: Camera gun ID; presetList: List of presets
const presetPoller = createPresetPoller(screendId, cameraId, presetList);
// Progress callback
presetPoller.onRun((i) => {
console.log("multi-cloud preset: onRun", i);
// add your code...
});
// Countdown callback
presetPoller.onCountdown((i) => {
console.log("multi-cloud preset: onCountdown", i);
// add your code...
});
// Resume callback
presetPoller.onResume(() => {
console.log("multi-cloud preset: resume");
// add your code...
});
// Pause callback
presetPoller.onPause(() => {
console.log("multi-cloud preset: onPause");
// add your code...
});
// End callback
presetPoller.onEnd((i) => {
console.log("multi-cloud preset: onEnd", i);
// add your code...
});
// Start the timer
presetPoller.start();
Explanation of Code:
You can replace the // add your code... comments with any custom logic you need to implement at each stage.import { createScreenPoller } from "patrol-helper";
const screenPoller = createScreenPoller(screendId, list);
// Create callback
screenPoller.onCreate((i) => {
console.log("single patrol: onCreate", i);
// add your code...
});
// Resume polling
screenPoller.onResume((i) => {
console.log("single patrol: onResume", i);
// add your code...
});
// Pause polling
screenPoller.onPause((i) => {
console.log("single patrol: onPause", i);
// add your code...
});
// Countdown callback
screenPoller.onCountdown((i) => {
console.log("single patrol: onCountdown", i);
// add your code...
});
// Terminate or stop polling
screenPoller.onTeminate((i) => {
console.log("single patrol: onTeminate", i);
// add your code...
});
// Polling progress callback
screenPoller.onProgress((i) => {
console.log("single patrol: onProgress", i);
// add your code...
});
// Before moving to the next camera
screenPoller.onProgressBeforeNext(async (i) => {
console.log("single patrol: onProgressBeforeNext", i);
// add your code...
});
// Start the polling process
screenPoller.start();
Explanation of Code:
Create a single-screen poller manager(
for the convenience of batch controlling single-screen pollers) responsible for adding, deleting, and finding single-screen pollers
import { createSinglePollerManager } from "patrol-helper";
// Create a single-screen poller manager
const spm = createSinglePollerManager();
// Create a single-screen poller
const sp = createScreenPoller(screendId, list);
// Add the single-screen poller to the single-screen poller manager
spm.addPoller(sp);
// Check if a single-screen poller with screen ID 'screendId' exists
spm.has(screendId);
// Get the capacity of the single-screen poller manager
spm.size();
// Delete the single-screen poller with screen ID 'screendId'
spm.deletePoller(screendId);
// Start all single-screen pollers in the single-screen poller manager
spm.start();
// Find the single-screen poller by its screen ID 'screendId'
const sp = spm.findByPId(screendId);
Explanation of Code:
Create a multi-screen poller: responsible for pausing, resuming, deleting, and stopping the multi-screen patrol sequence
import { createMutiPollerManager } from "patrol-helper";
const mpm = createMutiPollerManager();
mpm.init(data, screenNum, interval);
mpm.onCountdown((i) => {
console.log("multi patrol: onCountdown", i);
// add your code...
});
mpm.onProgressBeforeNext(async (i) => {
console.log("multi patrol: onProgressBeforeNext", i);
// add your code...
});
mpm.onPause((i) => {
console.log("multi patrol: onPause", i);
// add your code...
});
mpm.onResume((i) => {
console.log("multi patrol: onResume", i);
// add your code...
});
mpm.onTerminate((i) => {
console.log("multi patrol: onTerminate", i);
// add your code...
});
mpm.onProgress((i) => {
console.log("multi patrol: onProgress", i);
// add your code...
});
mpm.start();
Explanation of Code:
Create a multi-screen cloud patrol manager: responsible for pausing, resuming, fast-forwarding, and stopping multi-screen patrols
import { createMutiCloudPollerManager } from "patrol-helper";
const mcpm = createMutiCloudPollerManager();
mcpm.init(data, screenNum, interval);
mcpm.onProgressBeforeNext((i) => {
console.log("multi cloud patrol: onProgressBeforeNext", i);
// add your code...
});
mcpm.onPause((i) => {
console.log("multi cloud onPause:", i);
// add your code...
});
mcpm.onResume((i) => {
console.log("multi cloud onResume:", i);
// add your code...
});
mcpm.onTerminate((i) => {
console.log("multi cloud onTerminate:", i);
// add your code...
});
mcpm.onProgress(async (i) => {
console.log("multi cloud onProgress:", i);
return i.next(); // Call i.next() to move to the next step
});
mcpm.start();
Explanation of Code:
FAQs
A javaScript library designed to help developers manage camera preset polling
The npm package patrol-helper receives a total of 0 weekly downloads. As such, patrol-helper popularity was classified as not popular.
We found that patrol-helper demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Threat Research
/Security News
319 browser extensions installed by 13.4 million users hijack searches, capture queries, and collect referral payments from Yahoo and Bing.

Threat Research
Malicious Firefox extensions mimic Phantom, Jupiter, and Bitget wallets to steal recovery phrases and private keys, with one fetching its payload remotely.

Product
Socket Threat Intel now shows which malware campaigns were blocked or detected in your organization, with links to scans and Firewall events.