omnyssh_core/ssh/services/
nodejs.rs1use async_trait::async_trait;
6
7use super::ServiceProvider;
8use crate::event::ServiceKind;
9use crate::ssh::probe::ProbeOutput;
10
11pub struct NodeJSProvider;
13
14#[async_trait]
15impl ServiceProvider for NodeJSProvider {
16 fn kind(&self) -> ServiceKind {
17 ServiceKind::NodeJS
18 }
19
20 fn detect(&self, probe_output: &ProbeOutput) -> bool {
21 if let Some(processes) = probe_output.get_section("PROCESS") {
23 if processes.contains("node ") || processes.contains("/node") {
24 return true;
25 }
26 }
27 false
28 }
29}
30
31#[cfg(test)]
36mod tests {
37 use super::*;
38
39 #[test]
40 fn test_nodejs_detect_from_process() {
41 let probe = "===OMNYSSH:PROCESS===\nuser 1234 /usr/bin/node server.js\n";
42 let parsed = ProbeOutput::parse(probe).expect("should parse");
43 assert!(NodeJSProvider.detect(&parsed));
44 }
45
46 #[test]
47 fn test_nodejs_not_detected() {
48 let probe = "===OMNYSSH:SERVICES===\nsshd.service\n";
49 let parsed = ProbeOutput::parse(probe).expect("should parse");
50 assert!(!NodeJSProvider.detect(&parsed));
51 }
52}