packetsnitch 1.5.599
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +28 -0
- package/.webpack/x64/main/index.js +2 -0
- package/.webpack/x64/main/index.js.map +1 -0
- package/.webpack/x64/renderer/assets/css/rubikglitch.woff2 +0 -0
- package/.webpack/x64/renderer/assets/css/style.css +1916 -0
- package/.webpack/x64/renderer/assets/images/loading.gif +0 -0
- package/.webpack/x64/renderer/assets/images/logo.webp +0 -0
- package/.webpack/x64/renderer/assets/images/packet-snitch-tag.webp +0 -0
- package/.webpack/x64/renderer/main_window/index.html +3 -0
- package/.webpack/x64/renderer/main_window/index.js +3 -0
- package/.webpack/x64/renderer/main_window/index.js.LICENSE.txt +36 -0
- package/.webpack/x64/renderer/main_window/index.js.map +1 -0
- package/.webpack/x64/renderer/main_window/preload.js +2 -0
- package/.webpack/x64/renderer/main_window/preload.js.map +1 -0
- package/backend/common/GeoLite2-City.mmdb +0 -0
- package/backend/common/mac-vendors-export.csv +56923 -0
- package/backend/common/service-names-port-numbers.csv +15368 -0
- package/backend/requirements.txt +14 -0
- package/backend/snitch.py +3611 -0
- package/forge.config.js +80 -0
- package/package.json +102 -0
- package/ps-icon.ico +0 -0
- package/snitch.spec +44 -0
- package/src/assets/css/rubikglitch.woff2 +0 -0
- package/src/assets/css/style.css +1916 -0
- package/src/assets/images/loading.gif +0 -0
- package/src/assets/images/logo.webp +0 -0
- package/src/assets/images/packet-snitch-tag.webp +0 -0
- package/src/back-comm.js +70 -0
- package/src/decoders.js +579 -0
- package/src/filter.js +461 -0
- package/src/front.js +10 -0
- package/src/index.html +1036 -0
- package/src/logging.js +150 -0
- package/src/main.js +571 -0
- package/src/preload.js +73 -0
- package/src/renderer.js +30 -0
- package/src/ui/common-frontend.js +13 -0
- package/src/ui/context-menu.js +88 -0
- package/src/ui/decoders.js +1 -0
- package/src/ui/main-frontend.js +4957 -0
- package/src/ui/panels/crypt-panel.js +565 -0
- package/src/ui/panels/data-panel.js +151 -0
- package/src/ui/panels/data-tools-panel.js +939 -0
- package/src/ui/panels/install-screen.js +59 -0
- package/src/ui/panels/keystore-panel.js +1248 -0
- package/src/ui/panels/list-panel.js +403 -0
- package/src/ui/panels/stats-panel.js +351 -0
- package/src/ui/panels/summary-panel.js +63 -0
- package/webpack.main.config.js +11 -0
- package/webpack.plugins.js +13 -0
- package/webpack.preload.config.js +7 -0
- package/webpack.renderer.config.js +30 -0
- package/webpack.rules.js +35 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
function initializeContextMenu({
|
|
2
|
+
documentRef = document,
|
|
3
|
+
windowRef = window,
|
|
4
|
+
convertContextMenuEl,
|
|
5
|
+
getPasteTargetFromContextTarget,
|
|
6
|
+
getTrimmedSelectionText,
|
|
7
|
+
getConversionTextFromTarget,
|
|
8
|
+
detectConvertibleFormats,
|
|
9
|
+
buildContextFilterQueries,
|
|
10
|
+
getCookieJarTextForContextTarget,
|
|
11
|
+
showConvertContextMenu,
|
|
12
|
+
hideConvertContextMenu,
|
|
13
|
+
}) {
|
|
14
|
+
documentRef.addEventListener("contextmenu", (event) => {
|
|
15
|
+
const target = event.target;
|
|
16
|
+
const pasteTarget = getPasteTargetFromContextTarget(target);
|
|
17
|
+
const selectedText = getTrimmedSelectionText();
|
|
18
|
+
const insideEligiblePanel = target?.closest(
|
|
19
|
+
"#packetInfoPane, #packetPayloadPane, #stats_box, #list_box, #notes_box, #data_tools_box, #crypt_box, #keystore_box, #sidedata",
|
|
20
|
+
);
|
|
21
|
+
const isHexViewTarget = Boolean(target?.closest("#hexg"));
|
|
22
|
+
let conversionText = "";
|
|
23
|
+
let formats = [];
|
|
24
|
+
if (insideEligiblePanel) {
|
|
25
|
+
conversionText = getConversionTextFromTarget(target);
|
|
26
|
+
if (conversionText || isHexViewTarget) {
|
|
27
|
+
formats = conversionText ? detectConvertibleFormats(conversionText) : [];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const filterQueries = insideEligiblePanel
|
|
31
|
+
? buildContextFilterQueries(target, selectedText, conversionText)
|
|
32
|
+
: {};
|
|
33
|
+
const cookieJarText = insideEligiblePanel
|
|
34
|
+
? getCookieJarTextForContextTarget(target)
|
|
35
|
+
: "";
|
|
36
|
+
|
|
37
|
+
event.preventDefault();
|
|
38
|
+
showConvertContextMenu(
|
|
39
|
+
event.clientX,
|
|
40
|
+
event.clientY,
|
|
41
|
+
conversionText,
|
|
42
|
+
formats,
|
|
43
|
+
{
|
|
44
|
+
isHexViewTarget,
|
|
45
|
+
target,
|
|
46
|
+
pasteTarget,
|
|
47
|
+
showCopySelection: Boolean(selectedText),
|
|
48
|
+
showPaste: Boolean(pasteTarget),
|
|
49
|
+
showSaveJson: true,
|
|
50
|
+
filterQueries,
|
|
51
|
+
cookieJarText,
|
|
52
|
+
showManualKeystoreUri: Boolean(insideEligiblePanel),
|
|
53
|
+
},
|
|
54
|
+
);
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
documentRef.addEventListener("click", () => {
|
|
58
|
+
hideConvertContextMenu();
|
|
59
|
+
});
|
|
60
|
+
documentRef.addEventListener(
|
|
61
|
+
"mousedown",
|
|
62
|
+
(event) => {
|
|
63
|
+
if (event.button !== 0) return;
|
|
64
|
+
if (
|
|
65
|
+
!convertContextMenuEl.hidden &&
|
|
66
|
+
!convertContextMenuEl.contains(event.target)
|
|
67
|
+
) {
|
|
68
|
+
hideConvertContextMenu();
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
true,
|
|
72
|
+
);
|
|
73
|
+
documentRef.addEventListener("scroll", () => {
|
|
74
|
+
hideConvertContextMenu();
|
|
75
|
+
});
|
|
76
|
+
windowRef.addEventListener("resize", () => {
|
|
77
|
+
hideConvertContextMenu();
|
|
78
|
+
});
|
|
79
|
+
documentRef.addEventListener("keydown", (event) => {
|
|
80
|
+
if (event.key === "Escape" && !convertContextMenuEl.hidden) {
|
|
81
|
+
hideConvertContextMenu();
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
module.exports = {
|
|
87
|
+
initializeContextMenu,
|
|
88
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require("../decoders");
|