Community-based GPL-licensed network monitoring system
This report summarizes scanner evidence for librenms/librenms, a PHP project with 4,980 GitHub stars. SynthScan examined 5,006,043 lines of code across 9229 source files, recording 1521 pattern matches distributed across 20 syntactic categories. The legacy adjusted pattern signal is 0.3 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 1378 finding(s).
Are imports declared and package/API names verified? 85 finding(s).
Are wrappers, guards, and repeated structures necessary? 1377 finding(s).
Which changes need focused human review? 1521 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 1521 distinct pattern matches across 20 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/ConfigRepository.php | 402 | private function loadPreUserConfigDefaults(): void | CODE |
| LOW | app/ConfigRepository.php | 433 | private function loadPostUserConfigDefaults(): void | CODE |
| LOW | app/ConfigRepository.php | 586 | public function populateLegacyDbCredentials(): void | CODE |
| LOW | app/Providers/AppServiceProvider.php | 118 | private function bootCustomBladeDirectives(): void | CODE |
| LOW | app/Models/Port.php | 216 | public function getIfPhysAddressAttribute($mac) | CODE |
| LOW | app/Models/BgpPeerCbgp.php | 73 | public function getSyncProtectedAttributes(): array | CODE |
| LOW | app/Models/Vminfo.php | 115 | public function getMemoryFormattedAttribute(): string | CODE |
| LOW | app/Models/Vminfo.php | 120 | public function getOperatingSystemAttribute(): string | CODE |
| LOW | app/Models/Vrf.php | 101 | public function getSyncProtectedAttributes(): array | CODE |
| LOW | app/Models/DeviceGroup.php | 119 | public function scopeNotInServiceTemplate($query, $serviceTemplate) | CODE |
| LOW⚡ | app/Models/AlertSchedule.php | 116 | public function getStartRecurringDtAttribute() | CODE |
| LOW⚡ | app/Models/AlertSchedule.php | 121 | public function getStartRecurringHrAttribute() | CODE |
| LOW⚡ | app/Models/AlertSchedule.php | 126 | public function getEndRecurringDtAttribute() | CODE |
| LOW⚡ | app/Models/AlertSchedule.php | 133 | public function getEndRecurringHrAttribute() | CODE |
| LOW⚡ | app/Models/AlertSchedule.php | 138 | public function setStartRecurringDtAttribute($date) | CODE |
| LOW⚡ | app/Models/AlertSchedule.php | 143 | public function setStartRecurringHrAttribute($time) | CODE |
| LOW⚡ | app/Models/AlertSchedule.php | 148 | public function setEndRecurringDtAttribute($date) | CODE |
| LOW⚡ | app/Models/AlertSchedule.php | 153 | public function setEndRecurringHrAttribute($time) | CODE |
| LOW | app/Models/User.php | 158 | public function setCanModifyPasswdAttribute($modify) | CODE |
| LOW | app/Models/Sensor.php | 172 | public function getSyncProtectedAttributes(): array | CODE |
| LOW | app/Models/Mempool.php | 145 | public function getSyncProtectedAttributes(): array | CODE |
| LOW | app/Models/WirelessSensor.php | 137 | public function getSyncProtectedAttributes(): array | CODE |
| LOW | app/Models/Storage.php | 44 | public function getSyncProtectedAttributes(): array | CODE |
| LOW | app/Models/Device.php | 642 | protected function scopeWhereAttributeDisabled(Builder $query, string $attribute): Builder | CODE |
| LOW | app/Models/Device.php | 708 | public function scopeNotInServiceTemplate($query, $serviceTemplate) | CODE |
| LOW | app/Models/Device.php | 1494 | protected function childRouteBindingRelationshipName($childType): string | CODE |
| LOW | app/Models/BgpPeer.php | 88 | public function getSyncProtectedAttributes(): array | CODE |
| LOW | app/Models/ServiceTemplate.php | 114 | public static function updateServiceTemplatesForDevice($device) | CODE |
| LOW | app/Models/ServiceTemplate.php | 160 | public static function updateServiceTemplatesForDeviceGroup($deviceGroup) | CODE |
| LOW | app/Exceptions/ErrorReporting.php | 90 | private function adjustErrorHandlingForAppEnv(string $environment): void | CODE |
| LOW | app/Http/Middleware/FormatJsonApiError.php | 55 | protected function generateJsonApiErrorResponse(int $code): ?Response | CODE |
| LOW | app/Http/Controllers/GraphsPageController.php | 61 | private function handleWidescreenPreference(GraphsPageRequest $request): void | CODE |
| LOW | app/Http/Controllers/Device/EditPollingController.php | 261 | private function reachabilityFailedResponse( | CODE |
| LOW | app/Http/Controllers/Select/OsController.php | 40 | private function sortAndFilterBySimilarity(string $term, array $items): array | CODE |
| LOW | app/Facades/LibrenmsConfig.php | 47 | public static function invalidateAndReload(): void | CODE |
| LOW | app/View/FieldSchema/FieldDefinition.php | 296 | public static function buildVisibleIfExpressionFromArray(array $conditions, string $dataVar = 'formData'): ?string | CODE |
| LOW | app/Console/Commands/SmokepingGenerateCommand.php | 130 | public function buildTargetsConfiguration(Collection $devices): int | CODE |
| LOW | app/Console/Commands/DevGenerateTestData.php | 178 | private function registerProgressListeners(Progress $progressBar): void | CODE |
| LOW | app/Console/Commands/Traits/CompletesConfigArgument.php | 70 | protected function suggestionsForSelectDynamic(DynamicConfigItem $config, ?string $value): array | CODE |
| LOW | …/components/notification-subscription-status.blade.php | 22 | function notificationSubscriptionStatus() { | CODE |
| LOW | resources/views/map/custom-legend-modal.blade.php | 229 | function mapLegendCustomColourToggle() { | CODE |
| LOW | resources/views/widgets/alerts.blade.php | 28 | function updateSeverityQuickFilterButtons() { | CODE |
| LOW⚡ | tests/tests.py | 224 | def test_full_fallback_to_meminfo_when_no_cgroup(self): | CODE |
| LOW⚡ | tests/tests.py | 230 | def test_nothing_readable_returns_none(self): | CODE |
| LOW⚡ | tests/tests.py | 235 | def test_zero_limit_no_div_by_zero(self): | CODE |
| LOW⚡ | tests/tests.py | 266 | def test_from_config_rejects_out_of_range(self): | CODE |
| LOW⚡ | tests/tests.py | 271 | def test_from_config_rejects_non_int(self): | CODE |
| LOW⚡ | tests/tests.py | 275 | def test_pause_when_at_or_above_limit(self): | CODE |
| LOW | tests/tests.py | 287 | def test_hysteresis_holds_between_bands(self): | CODE |
| LOW | tests/tests.py | 301 | def test_fails_open_when_undeterminable(self): | CODE |
| LOW | tests/tests.py | 333 | def test_pause_and_resume_under_real_pressure(self): | CODE |
| LOW | tests/Unit/UnimusProviderTest.php | 60 | public function testIsConfiguredDelegatesToClient(): void | CODE |
| LOW | tests/Unit/UnimusProviderTest.php | 73 | public function testBackupsStringifiesIds(): void | CODE |
| LOW | tests/Unit/UnimusProviderTest.php | 93 | public function testLatestStringifiesIdAndIncludesContent(): void | CODE |
| LOW | tests/Unit/UnimusProviderTest.php | 108 | public function testRefreshTriggersBackupJob(): void | CODE |
| LOW⚡ | tests/Unit/UnimusProviderTest.php | 121 | public function testRefreshReturnsFalseWhenBackupRefused(): void | CODE |
| LOW⚡ | tests/Unit/UnimusProviderTest.php | 131 | public function testRefreshReturnsFalseWhenDeviceNotFound(): void | CODE |
| LOW⚡ | tests/Unit/UnimusProviderTest.php | 138 | public function testContentRejectsNonNumericId(): void | CODE |
| LOW | tests/Unit/UnimusProviderTest.php | 149 | public function testDiffRejectsNonNumericIds(): void | CODE |
| LOW | tests/Unit/UnimusProviderTest.php | 160 | public function testDeviceNotFoundErrorPassthrough(): void | CODE |
| 1258 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | snmp-scan.py | 131 | except (herror, gaierror): | CODE |
| HIGH | tests/tests.py | 314 | except OSError: | CODE |
| HIGH | LibreNMS/service.py | 14 | except ImportError: | CODE |
| HIGH | LibreNMS/service.py | 29 | except ImportError: | CODE |
| HIGH | LibreNMS/service.py | 594 | except KeyboardInterrupt: | CODE |
| HIGH | LibreNMS/service.py | 847 | except AttributeError: | CODE |
| HIGH | LibreNMS/service.py | 857 | except AttributeError: | CODE |
| HIGH | LibreNMS/service.py | 381 | except ValueError: | CODE |
| HIGH | LibreNMS/wrapper.py | 143 | except: | CODE |
| HIGH | LibreNMS/wrapper.py | 554 | except: | CODE |
| HIGH | LibreNMS/wrapper.py | 198 | except: | CODE |
| HIGH | LibreNMS/queuemanager.py | 146 | except Exception: | CODE |
| HIGH | LibreNMS/queuemanager.py | 254 | except Empty: | CODE |
| HIGH | LibreNMS/command_runner.py | 35 | except ImportError: | CODE |
| HIGH | LibreNMS/command_runner.py | 40 | except ImportError: | CODE |
| HIGH | LibreNMS/command_runner.py | 53 | except ImportError: | CODE |
| HIGH | LibreNMS/command_runner.py | 172 | except Exception: | CODE |
| HIGH | LibreNMS/command_runner.py | 498 | except queue.Empty: | CODE |
| HIGH | LibreNMS/command_runner.py | 469 | except queue.Empty: | CODE |
| HIGH | LibreNMS/command_runner.py | 486 | except (TimeoutExpired, ValueError): | CODE |
| HIGH | LibreNMS/command_runner.py | 554 | except AttributeError: | CODE |
| HIGH | LibreNMS/command_runner.py | 479 | except (TimeoutExpired, ValueError): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/Http/Controllers/DashboardController.php | 133 | 'widget' => 'placeholder', | CODE |
| LOW | app/Http/Controllers/DashboardController.php | 259 | if (str_ends_with($route->uri, 'placeholder')) { | CODE |
| LOW | app/Http/Controllers/Widgets/PlaceholderController.php | 31 | protected string $name = 'placeholder'; | CODE |
| LOW | app/View/FieldSchema/FieldDefinition.php | 263 | $array['placeholder'] = $this->getPlaceholder(); | CODE |
| LOW | resources/definitions/config_definitions.json | 7069 | "placeholder": "Select secret to add..." | CODE |
| LOW | resources/definitions/schema/config_schema.json | 85 | "placeholder": {"type": "string"}, | CODE |
| LOW | resources/definitions/schema/config_schema.json | 104 | "placeholder": {"type": "string"}, | CODE |
| LOW | …sources/views/components/field-schema-fields.blade.php | 61 | * 'placeholder' => string|null, | COMMENT |
| LOW | …sources/views/components/field-schema-fields.blade.php | 91 | 'placeholder' => $config['placeholder'] ?? null, | CODE |
| LOW | …sources/views/components/field-schema-fields.blade.php | 176 | @if(filled($field['placeholder'])) placeholder="{{ __($field['placeholder']) }}" @endif | CODE |
| LOW | …sources/views/components/field-schema-fields.blade.php | 202 | @if(filled($field['placeholder'])) placeholder="{{ __($field['placeholder']) }}" @endif | CODE |
| LOW | …sources/views/components/field-schema-fields.blade.php | 214 | @if(filled($field['placeholder'])) placeholder="{{ __($field['placeholder']) }}" @endif | CODE |
| LOW | resources/views/components/date-range-picker.blade.php | 6 | 'placeholder' => __('Select date range...'), | CODE |
| LOW | resources/views/components/select2.blade.php | 7 | 'placeholder' => null, | CODE |
| LOW⚡ | tests/Unit/Polling/PollingMethodDefinitionTest.php | 62 | $this->assertSame('1161', $fields['port']['placeholder']); | CODE |
| LOW⚡ | tests/Unit/Polling/PollingMethodDefinitionTest.php | 63 | $this->assertSame('7', $fields['max_repeaters']['placeholder']); | CODE |
| LOW⚡ | tests/Unit/Polling/PollingMethodDefinitionTest.php | 64 | $this->assertArrayNotHasKey('placeholder', $fields['context']); | CODE |
| LOW⚡ | tests/Unit/Polling/PollingMethodDefinitionTest.php | 68 | $this->assertSame("Default: device's hostname", $ipmiFields['hostname']['placeholder']); | CODE |
| LOW⚡ | tests/Unit/Polling/PollingMethodDefinitionTest.php | 69 | $this->assertSame('Default: ipmitool', $ipmiFields['timeout']['placeholder']); // ipmitool's default differs by | CODE |
| LOW⚡ | tests/Unit/Util/MailTest.php | 35 | 'user@example.com', | CODE |
| LOW⚡ | tests/Unit/Util/MailTest.php | 36 | ['user@example.com' => 'LibreNMS'], | CODE |
| LOW⚡ | tests/Unit/Util/MailTest.php | 39 | '"John Doe" <john@example.com>', | CODE |
| LOW⚡ | tests/Unit/Util/MailTest.php | 40 | ['john@example.com' => 'John Doe'], | CODE |
| LOW⚡ | tests/Unit/Util/MailTest.php | 43 | "'John Doe' <john@example.com>", | CODE |
| LOW⚡ | tests/Unit/Util/MailTest.php | 44 | ['john@example.com' => 'John Doe'], | CODE |
| LOW | tests/Unit/Util/MailTest.php | 71 | ['john@example.com' => 'John Doe'], | CODE |
| LOW | tests/Unit/Http/Parsers/AlertLogDetailParserTest.php | 305 | 'sysContact' => 'admin@example.com', // should be included | CODE |
| LOW⚡ | tests/Unit/View/SimpleTemplateTest.php | 259 | $template = new SimpleTemplate('{{ user.name }}', ['user.name' => 'John Doe']); | CODE |
| LOW⚡ | tests/Unit/View/SimpleTemplateTest.php | 260 | $this->assertEquals('John Doe', (string) $template); | CODE |
| LOW | tests/Feature/AuthSSOTest.php | 83 | $_SERVER['mail'] = 'test@example.org'; | CODE |
| LOW | tests/Feature/AuthSSOTest.php | 97 | $_SERVER['HTTP_MAIL'] = 'test@example.org'; | CODE |
| LOW | tests/data/airos-af60_v3.4.json | 9 | "sysContact": "test@test.com", | CODE |
| LOW | tests/data/mediornet_mn-horizon.json | 9 | "sysContact": "noc@example.org", | CODE |
| LOW | …Polling/Method/Definitions/PollingMethodDefinition.php | 46 | } elseif (! isset($schemaField['placeholder']) && $default !== null && $default !== '') { | CODE |
| LOW | …Polling/Method/Definitions/PollingMethodDefinition.php | 47 | $schemaField['placeholder'] = (string) $default; | CODE |
| LOW | html/js/bootstrap-datetimepicker.min.js | 2 | return d.keepInvalid=a,l},l.datepickerInput=function(a){if(0===arguments.length)return d.datepickerInput;if("string"!=ty | CODE |
| LOW | html/js/select2.full.min.js | 2 | !function(n){"function"==typeof define&&define.amd?define(["jquery"],n):"object"==typeof module&&module.exports?module.e | CODE |
| LOW | html/js/RrdGraphJS/q-5.0.2.min.js | 14 | (function(){var b=".prototype",c="function",d="Boolean",e="Error",f="Object.keys requires an object as argument.",g="con | CODE |
| LOW | lang/sv/widgets.php | 55 | 'placeholder' => [ | CODE |
| LOW | lang/it/search.php | 4 | 'placeholder' => 'Inserisci / per la ricerca', | CODE |
| LOW | lang/ru/search.php | 4 | 'placeholder' => 'Введите / для поиска', | CODE |
| LOW | lang/zh-CN/search.php | 4 | 'placeholder' => '输入 / 进行搜索', | CODE |
| LOW | lang/uk/search.php | 4 | 'placeholder' => 'Введіть / для пошуку', | CODE |
| LOW | lang/sr/search.php | 4 | 'placeholder' => 'Унесите / за претрагу', | CODE |
| LOW | lang/zh-TW/widgets.php | 55 | 'placeholder' => [ | CODE |
| LOW | lang/zh-TW/search.php | 4 | 'placeholder' => '輸入 / 進行搜尋', | CODE |
| LOW | lang/pt-BR/search.php | 4 | 'placeholder' => 'Digite / para pesquisar', | CODE |
| LOW | lang/ka/search.php | 4 | 'placeholder' => 'აკრიფეთ / მოსაძებნად', | CODE |
| LOW | lang/de/search.php | 4 | 'placeholder' => 'Geben Sie / ein, um zu suchen', | CODE |
| LOW | lang/ko/widgets.php | 55 | 'placeholder' => [ | CODE |
| LOW | lang/ko/search.php | 4 | 'placeholder' => '검색하려면 /를 입력하세요', | CODE |
| LOW | lang/fr/search.php | 4 | 'placeholder' => 'Entrez / pour la recherche', | CODE |
| LOW | lang/es/widgets.php | 52 | 'placeholder' => [ | CODE |
| LOW | lang/es/search.php | 4 | 'placeholder' => 'Ingrese / para buscar', | CODE |
| LOW | lang/en/widgets.php | 55 | 'placeholder' => [ | CODE |
| LOW | lang/en/first_run.php | 49 | 'placeholder' => 'Add a network, like 192.168.1.0/24', | CODE |
| LOW | lang/en/search.php | 4 | 'placeholder' => 'Type / to search', | CODE |
| LOW | doc/Developing/Using-Git.md | 31 | git config --global user.name "John Doe" | CODE |
| LOW | doc/General/Changelogs/2019.md | 1319 | - fake-name (1) | CODE |
| LOW | doc/General/Changelogs/2019.md | 1340 | * Fix Smokeping setup instructions so they actually work ([#9731](https://github.com/librenms/librenms/pull/9731)) - [fa | COMMENT |
| 2 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | html/js/vis-timeline-graph2d.min.js | 83 | * Licensed under the MIT license */function WD(){return(WD=Object.assign||function(t){for(var e=1;e<arguments.length;e | COMMENT |
| CRITICAL | html/js/jquery.min.js | 2 | !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):f | CODE |
| CRITICAL | html/js/esri-leaflet-vector.js | 4 | !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("esri-leaflet"),require("leaflet") | CODE |
| CRITICAL | html/js/esri-leaflet.js | 11 | * Apache-2.0 */function T(t,e){return I(t,e)}function C(t,e){return S(t,e)}function w(t){if("NaN"!==t.xmin&&"NaN"!==t | COMMENT |
| CRITICAL | html/js/RrdGraphJS/q-5.0.2.min.js | 14 | (function(){var b=".prototype",c="function",d="Boolean",e="Error",f="Object.keys requires an object as argument.",g="con | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | daily.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | daily.sh | 41 | # Append a timestamped line to the daily log | COMMENT |
| LOW | resources/js/bootstrap.js | 41 | // key: import.meta.env.VITE_PUSHER_APP_KEY, | COMMENT |
| LOW | resources/definitions/os_discovery/primekey.yaml | 161 | - { value: 1, generic: 2, descr: '> 80% full' } | COMMENT |
| LOW | resources/definitions/os_discovery/scalance.yaml | 161 | # - { value: 1, generic: 2, descr: 'notPresent' } | COMMENT |
| LOW | includes/systemd-shared.inc.php | 1 | <?php | COMMENT |
| LOW | includes/systemd-shared.inc.php | 21 | // Therefore, existing metrics are now associated with | COMMENT |
| LOW | includes/polling/ucd-mib.inc.php | 1 | <?php | COMMENT |
| LOW | includes/polling/ucd-mib.inc.php | 21 | // UCD-SNMP-MIB::ssCpuRawWait.0 = Counter32: 205336019 | COMMENT |
| LOW | includes/polling/netscaler-vsvr.inc.php | 1 | <?php | COMMENT |
| LOW | includes/polling/netscaler-vsvr.inc.php | 21 | // NS-ROOT-MIB::vsvrCurServicesTransToOutOfSvc."librenms" = Gauge32: 0 | COMMENT |
| LOW | includes/polling/cisco-remote-access-monitor.inc.php | 1 | <?php | COMMENT |
| LOW | includes/polling/cisco-remote-access-monitor.inc.php | 21 | // CISCO-REMOTE-ACCESS-MONITOR-MIB::crasIPSecCumulateSessions.0 = Counter32: 0 Sessions | COMMENT |
| LOW | includes/polling/cisco-ipsec-flow-monitor.inc.php | 1 | <?php | COMMENT |
| LOW | includes/polling/cisco-ipsec-flow-monitor.inc.php | 21 | // CISCO-IPSEC-FLOW-MONITOR-MIB::cipSecGlobalOutOctets.0 = Counter32: 3486168696 Octets | COMMENT |
| LOW | includes/polling/applications/ss.inc.php | 61 | // List to track which sockets we should graph. If the end-user | COMMENT |
| LOW | includes/discovery/sensors/state/fortigate.inc.php | 41 | // As of July 2024: | COMMENT |
| LOW | includes/html/pages/device/apps/suricata.inc.php | 121 | // capture__kernel_drops | COMMENT |
| LOW | includes/html/pages/device/apps/suricata.inc.php | 221 | // http__memuse | COMMENT |
| LOW | LibreNMS/OS/Traits/VminfoLibvirt.php | 81 | [$dom_id] = explode(' ', trim($dom), 2); | COMMENT |
| LOW | html/css/styles.css | 421 | border-top: 1px solid #a8a8a8; | COMMENT |
| LOW | html/js/raphael.min.js | 1 | // ┌────────────────────────────────────────────────────────────────────┐ \\ | COMMENT |
| LOW | html/js/overlib_mini.js | 1 | //\///// | COMMENT |
| LOW | scripts/watchmaillog/watchmaillog.pl | 1 | #!/usr/bin/env perl | COMMENT |
| LOW | scripts/Migration/XML_Conversion/mkdir.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/Migration/XML_Conversion/destwork.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/Migration/XML_Conversion/convert.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/Migration/Standard_Conversion/mkdir.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/Migration/Standard_Conversion/convert_no_xml.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | …ripts/Migration/Standard_Conversion/destwork_no_xml.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | doc/Extensions/Syslog.md | 221 | url => "https://sink.librenms.org/api/v0/syslogsink/ # replace with your librenms host | COMMENT |
| LOW | doc/Extensions/Varnish.md | 181 | # | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | poller-wrapper.py | 0 | this is a bootstrap script for wrapper.py, in order to retain compatibility with earlier librenms setups | STRING |
| HIGH | discovery-wrapper.py | 0 | this is a bootstrap script for wrapper.py, in order to retain compatibility with earlier librenms setups | STRING |
| HIGH | services-wrapper.py | 0 | this is a bootstrap script for wrapper.py, in order to retain compatibility with earlier librenms setups | STRING |
| HIGH | poller-wrapper.py | 0 | take the amount of threads we want to run in parallel from the commandline if none are given or the argument was garbage | STRING |
| HIGH | discovery-wrapper.py | 0 | take the amount of threads we want to run in parallel from the commandline if none are given or the argument was garbage | STRING |
| HIGH | services-wrapper.py | 0 | take the amount of threads we want to run in parallel from the commandline if none are given or the argument was garbage | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | librenms-service.py | 73 | except Exception as e: | CODE |
| LOW | LibreNMS/service.py | 740 | except Exception as e: | CODE |
| LOW | LibreNMS/service.py | 918 | except Exception: | CODE |
| MEDIUM | LibreNMS/service.py | 308 | def load_poller_config(self, db): | CODE |
| LOW | LibreNMS/wrapper.py | 332 | except Exception: | CODE |
| LOW | LibreNMS/wrapper.py | 590 | except Exception: | CODE |
| LOW | LibreNMS/queuemanager.py | 111 | except Exception: | CODE |
| LOW | LibreNMS/queuemanager.py | 146 | except Exception: | CODE |
| LOW | LibreNMS/queuemanager.py | 262 | except Exception as e: | CODE |
| LOW | LibreNMS/queuemanager.py | 394 | except Exception as e: | CODE |
| MEDIUM | LibreNMS/queuemanager.py | 132 | def _frac_meminfo(proc_meminfo): | CODE |
| LOW | LibreNMS/command_runner.py | 172 | except Exception: | CODE |
| LOW | LibreNMS/command_runner.py | 184 | except Exception: | CODE |
| LOW | LibreNMS/command_runner.py | 605 | except Exception as exc: | CODE |
| MEDIUM | LibreNMS/__init__.py | 41 | def logger_get_console_handler(): | CODE |
| MEDIUM | LibreNMS/__init__.py | 339 | def connect(self): | CODE |
| LOW | LibreNMS/__init__.py | 178 | except Exception as exc: | CODE |
| LOW | LibreNMS/__init__.py | 222 | except Exception: | CODE |
| LOW | LibreNMS/__init__.py | 237 | except Exception: | CODE |
| LOW | LibreNMS/__init__.py | 390 | except Exception as e: | CODE |
| LOW | LibreNMS/__init__.py | 419 | except Exception as e: | CODE |
| LOW | LibreNMS/__init__.py | 763 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | html/js/raphael.min.js | 1 | // ┌────────────────────────────────────────────────────────────────────┐ \\ | COMMENT |
| MEDIUM⚡ | html/js/raphael.min.js | 3 | // ├────────────────────────────────────────────────────────────────────┤ \\ | COMMENT |
| MEDIUM⚡ | html/js/raphael.min.js | 6 | // ├────────────────────────────────────────────────────────────────────┤ \\ | COMMENT |
| MEDIUM⚡ | html/js/raphael.min.js | 8 | // └────────────────────────────────────────────────────────────────────┘ \\ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | LibreNMS/command_runner.py | 24 | CODE | |
| LOW | LibreNMS/command_runner.py | 52 | CODE | |
| LOW | LibreNMS/command_runner.py | 52 | CODE | |
| LOW | LibreNMS/command_runner.py | 52 | CODE | |
| LOW | LibreNMS/command_runner.py | 52 | CODE | |
| LOW | LibreNMS/command_runner.py | 52 | CODE | |
| LOW | LibreNMS/command_runner.py | 52 | CODE | |
| LOW | LibreNMS/__init__.py | 19 | CODE | |
| LOW | LibreNMS/__init__.py | 19 | CODE | |
| LOW | LibreNMS/__init__.py | 19 | CODE | |
| LOW | LibreNMS/__init__.py | 19 | CODE | |
| LOW | LibreNMS/__init__.py | 19 | CODE | |
| LOW | LibreNMS/__init__.py | 19 | CODE | |
| LOW | LibreNMS/__init__.py | 27 | CODE | |
| LOW | LibreNMS/__init__.py | 27 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | snmp-scan.py | 122 | CODE | |
| LOW | tests/tests.py | 306 | CODE | |
| LOW | LibreNMS/service.py | 373 | CODE | |
| LOW | LibreNMS/service.py | 479 | CODE | |
| LOW | LibreNMS/wrapper.py | 158 | CODE | |
| LOW | LibreNMS/wrapper.py | 228 | CODE | |
| LOW | LibreNMS/wrapper.py | 338 | CODE | |
| LOW | LibreNMS/queuemanager.py | 132 | CODE | |
| LOW | LibreNMS/queuemanager.py | 213 | CODE | |
| LOW | LibreNMS/command_runner.py | 199 | CODE | |
| LOW | LibreNMS/command_runner.py | 341 | CODE | |
| LOW | LibreNMS/command_runner.py | 433 | CODE | |
| LOW | LibreNMS/__init__.py | 253 | CODE | |
| LOW | LibreNMS/__init__.py | 309 | CODE | |
| LOW | LibreNMS/__init__.py | 339 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .agents/skills/add-os-support/SKILL.md | 99 | ## Step 1: Add Vendor MIBs | COMMENT |
| LOW | .agents/skills/add-os-support/SKILL.md | 115 | ## Step 2: Define OS Detection | COMMENT |
| LOW | .agents/skills/add-os-support/SKILL.md | 170 | ## Step 3: Define OS Discovery | COMMENT |
| LOW | .agents/skills/add-os-support/SKILL.md | 337 | ## Step 4: Add Icons | COMMENT |
| LOW | .agents/skills/add-os-support/SKILL.md | 345 | ## Step 5: Create Test Data (Mandatory) | COMMENT |
| LOW | .agents/skills/add-os-support/SKILL.md | 378 | ## Step 6: Verify Tests | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | doc/Extensions/Varnish.md | 199 | # In this example our objective is to cache static content with Varnish and temporarily | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | LibreNMS/command_runner.py | 4 | # This file is part of command_runner module | COMMENT |
| MEDIUM | scripts/dynamic_check_requirements.py | 4 | # This file is part of LibreNMS | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | LibreNMS/wrapper.py | 22 | FreeBSD: cd /usr/ports/*/py-MySQLdb && make install clean | STRING |
| HIGH | LibreNMS/wrapper.py | 24 | RHEL 8: dnf install mariadb-connector-c-devel gcc && python -m pip install mysqlclient | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | doc/Alerting/Transports/Flowtriq.md | 11 | | API Key | your-api-key | | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | LibreNMS/service.py | 40 | logger = logging.getLogger(__name__) | CODE |
| LOW | LibreNMS/wrapper.py | 58 | logger = logging.getLogger(__name__) | CODE |
| LOW | LibreNMS/queuemanager.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | LibreNMS/__init__.py | 33 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | daily.sh | 381 | # Check if we need to revert (Must be in post pull so we can update it) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | snmp-scan.py | 127 | # attempt to convert IP to hostname, if anything goes wrong, just use the IP | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | LibreNMS/command_runner.py | 199 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | html/js/esri-leaflet-vector.js | 4 | !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("esri-leaflet"),require("leaflet") | CODE |