Compare commits
3
Commits
65d4985d16
...
97ff9c321d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
97ff9c321d | ||
|
|
5928d96aec | ||
|
|
688b7190e6 |
@@ -1,5 +1,27 @@
|
|||||||
# Agent Guidelines
|
# Agent Guidelines
|
||||||
|
|
||||||
|
## Repository Layout
|
||||||
|
|
||||||
|
Knowing where things live prevents broken edits:
|
||||||
|
|
||||||
|
- **Vendored framework**: `KNELShellFramework` lives at
|
||||||
|
`vendor/git@git.knownelement.com/29418/KNEL/KNELShellFramework/`, **not** at
|
||||||
|
the repo root. Its includes are under `Framework-Includes/` there. Never
|
||||||
|
assume `./Framework-Includes` exists relative to the repo root.
|
||||||
|
- **Self-locating scripts**: All provisioning scripts derive their own
|
||||||
|
location via `BASH_SOURCE` and compute `PROJECT_ROOT_PATH` from it. They must
|
||||||
|
**never** depend on the current working directory or on `cd`/`realpath ..`
|
||||||
|
chains. Run them from anywhere — `sudo bash SetupNewSystem.sh` works.
|
||||||
|
- **Local config files are the source of truth**: Configs in
|
||||||
|
`ProjectCode/ConfigFiles/` are read with `cat`/`cp`. Do **not** re-introduce
|
||||||
|
`curl ${DL_ROOT}/...` downloads from `dl.knownelement.com` — that CDN is
|
||||||
|
deprecated for this repo.
|
||||||
|
- **Path variables**: Scripts export `PROJECT_ROOT_PATH`, `CONFIGFILES_PATH`,
|
||||||
|
`MODULES_PATH`, `SCRIPTS_PATH`, and `AGENTS_PATH` for locating repo content.
|
||||||
|
- **Non-bash agents**: Some files under `ProjectCode/Agents/` carry a `.sh`
|
||||||
|
extension but are PHP (e.g. `mysql.sh`, shebang `#!/usr/bin/php`). Syntax
|
||||||
|
checkers must skip these.
|
||||||
|
|
||||||
## Git Commit Requirements
|
## Git Commit Requirements
|
||||||
|
|
||||||
When making changes to this repository, ALWAYS:
|
When making changes to this repository, ALWAYS:
|
||||||
@@ -39,7 +61,16 @@ deployment.
|
|||||||
Assisted-by: GLM-5 via Crush <crush@charm.land>
|
Assisted-by: GLM-5 via Crush <crush@charm.land>
|
||||||
```
|
```
|
||||||
|
|
||||||
## Important
|
## Autonomous Git Workflow
|
||||||
|
|
||||||
**NEVER wait to be asked to commit and push your work.**
|
**Agents are authorized to commit AND push autonomously. Do not wait to be
|
||||||
**Commit immediately after each logical unit of work.**
|
asked.** After each logical unit of work:
|
||||||
|
|
||||||
|
1. Stage only the files belonging to that logical change.
|
||||||
|
2. Commit with a conventional, well-formed message (see above).
|
||||||
|
3. Push to `origin` (`git push`). The branch tracks `origin/main`.
|
||||||
|
4. Repeat per logical unit.
|
||||||
|
|
||||||
|
Group changes so each commit is coherent on its own (a reader should
|
||||||
|
understand the commit without seeing the others). Never batch unrelated
|
||||||
|
changes into one commit.
|
||||||
|
|||||||
@@ -5,10 +5,19 @@
|
|||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
# Source framework includes
|
# Resolve repository root from this script's location (Project-Tests/ -> repo root)
|
||||||
PROJECT_ROOT="$(dirname "$(realpath "${BASH_SOURCE[0]}")")/.."
|
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
source "$PROJECT_ROOT/Framework-Includes/Logging.sh"
|
|
||||||
source "$PROJECT_ROOT/Framework-Includes/PrettyPrint.sh"
|
# The KNELShellFramework is vendored under vendor/
|
||||||
|
FRAMEWORK_INCLUDES="$PROJECT_ROOT/vendor/git@git.knownelement.com/29418/KNEL/KNELShellFramework/Framework-Includes"
|
||||||
|
source "$FRAMEWORK_INCLUDES/Logging.sh"
|
||||||
|
source "$FRAMEWORK_INCLUDES/PrettyPrint.sh"
|
||||||
|
|
||||||
|
# The vendored PrettyPrint only defines print_info/print_error; provide the
|
||||||
|
# additional output helpers the test suite relies on.
|
||||||
|
function print_header() { echo ""; echo "=== $1 ==="; }
|
||||||
|
function print_success() { echo "✅ $1"; }
|
||||||
|
function print_warning() { echo "⚠️ $1"; }
|
||||||
|
|
||||||
# Test configuration
|
# Test configuration
|
||||||
TEST_LOG_DIR="$PROJECT_ROOT/logs/tests"
|
TEST_LOG_DIR="$PROJECT_ROOT/logs/tests"
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ function test_2fa_packages() {
|
|||||||
echo "✅ Package installed: $package"
|
echo "✅ Package installed: $package"
|
||||||
else
|
else
|
||||||
echo "❌ Package missing: $package"
|
echo "❌ Package missing: $package"
|
||||||
((failed++))
|
((++failed))
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -27,7 +27,7 @@ function test_2fa_packages() {
|
|||||||
echo "✅ Google Authenticator command available"
|
echo "✅ Google Authenticator command available"
|
||||||
else
|
else
|
||||||
echo "❌ Google Authenticator command not found"
|
echo "❌ Google Authenticator command not found"
|
||||||
((failed++))
|
((++failed))
|
||||||
fi
|
fi
|
||||||
|
|
||||||
return $failed
|
return $failed
|
||||||
@@ -44,21 +44,21 @@ function test_ssh_2fa_config() {
|
|||||||
echo "✅ ChallengeResponseAuthentication enabled"
|
echo "✅ ChallengeResponseAuthentication enabled"
|
||||||
else
|
else
|
||||||
echo "❌ ChallengeResponseAuthentication not enabled"
|
echo "❌ ChallengeResponseAuthentication not enabled"
|
||||||
((failed++))
|
((++failed))
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if grep -q "^UsePAM yes" "$ssh_config"; then
|
if grep -q "^UsePAM yes" "$ssh_config"; then
|
||||||
echo "✅ UsePAM enabled"
|
echo "✅ UsePAM enabled"
|
||||||
else
|
else
|
||||||
echo "❌ UsePAM not enabled"
|
echo "❌ UsePAM not enabled"
|
||||||
((failed++))
|
((++failed))
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if grep -q "^AuthenticationMethods publickey,keyboard-interactive" "$ssh_config"; then
|
if grep -q "^AuthenticationMethods publickey,keyboard-interactive" "$ssh_config"; then
|
||||||
echo "✅ AuthenticationMethods configured for 2FA"
|
echo "✅ AuthenticationMethods configured for 2FA"
|
||||||
else
|
else
|
||||||
echo "❌ AuthenticationMethods not configured for 2FA"
|
echo "❌ AuthenticationMethods not configured for 2FA"
|
||||||
((failed++))
|
((++failed))
|
||||||
fi
|
fi
|
||||||
|
|
||||||
return $failed
|
return $failed
|
||||||
@@ -75,7 +75,7 @@ function test_pam_2fa_config() {
|
|||||||
echo "✅ PAM Google Authenticator module configured"
|
echo "✅ PAM Google Authenticator module configured"
|
||||||
else
|
else
|
||||||
echo "❌ PAM Google Authenticator module not configured"
|
echo "❌ PAM Google Authenticator module not configured"
|
||||||
((failed++))
|
((++failed))
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if nullok is present (allows users without 2FA setup)
|
# Check if nullok is present (allows users without 2FA setup)
|
||||||
@@ -106,7 +106,7 @@ function test_cockpit_2fa_config() {
|
|||||||
echo "✅ Cockpit configuration file exists"
|
echo "✅ Cockpit configuration file exists"
|
||||||
else
|
else
|
||||||
echo "❌ Cockpit configuration file missing"
|
echo "❌ Cockpit configuration file missing"
|
||||||
((failed++))
|
((++failed))
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check Cockpit PAM configuration
|
# Check Cockpit PAM configuration
|
||||||
@@ -114,7 +114,7 @@ function test_cockpit_2fa_config() {
|
|||||||
echo "✅ Cockpit PAM 2FA configured"
|
echo "✅ Cockpit PAM 2FA configured"
|
||||||
else
|
else
|
||||||
echo "❌ Cockpit PAM 2FA not configured"
|
echo "❌ Cockpit PAM 2FA not configured"
|
||||||
((failed++))
|
((++failed))
|
||||||
fi
|
fi
|
||||||
|
|
||||||
return $failed
|
return $failed
|
||||||
@@ -137,14 +137,14 @@ function test_webmin_2fa_config() {
|
|||||||
echo "✅ Webmin TOTP provider configured"
|
echo "✅ Webmin TOTP provider configured"
|
||||||
else
|
else
|
||||||
echo "❌ Webmin TOTP provider not configured"
|
echo "❌ Webmin TOTP provider not configured"
|
||||||
((failed++))
|
((++failed))
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if grep -q "^twofactor=1" "$webmin_config"; then
|
if grep -q "^twofactor=1" "$webmin_config"; then
|
||||||
echo "✅ Webmin 2FA enabled"
|
echo "✅ Webmin 2FA enabled"
|
||||||
else
|
else
|
||||||
echo "❌ Webmin 2FA not enabled"
|
echo "❌ Webmin 2FA not enabled"
|
||||||
((failed++))
|
((++failed))
|
||||||
fi
|
fi
|
||||||
|
|
||||||
return $failed
|
return $failed
|
||||||
@@ -163,7 +163,7 @@ function test_user_2fa_setup() {
|
|||||||
echo "✅ 2FA setup script exists for user: $user"
|
echo "✅ 2FA setup script exists for user: $user"
|
||||||
else
|
else
|
||||||
echo "❌ 2FA setup script missing for user: $user"
|
echo "❌ 2FA setup script missing for user: $user"
|
||||||
((failed++))
|
((++failed))
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if instructions exist
|
# Check if instructions exist
|
||||||
@@ -171,7 +171,7 @@ function test_user_2fa_setup() {
|
|||||||
echo "✅ 2FA instructions exist for user: $user"
|
echo "✅ 2FA instructions exist for user: $user"
|
||||||
else
|
else
|
||||||
echo "❌ 2FA instructions missing for user: $user"
|
echo "❌ 2FA instructions missing for user: $user"
|
||||||
((failed++))
|
((++failed))
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "⚠️ User $user not found, skipping"
|
echo "⚠️ User $user not found, skipping"
|
||||||
@@ -191,7 +191,7 @@ function test_service_status() {
|
|||||||
echo "✅ SSH service is running"
|
echo "✅ SSH service is running"
|
||||||
else
|
else
|
||||||
echo "❌ SSH service is not running"
|
echo "❌ SSH service is not running"
|
||||||
((failed++))
|
((++failed))
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Test SSH configuration
|
# Test SSH configuration
|
||||||
@@ -199,7 +199,7 @@ function test_service_status() {
|
|||||||
echo "✅ SSH configuration is valid"
|
echo "✅ SSH configuration is valid"
|
||||||
else
|
else
|
||||||
echo "❌ SSH configuration is invalid"
|
echo "❌ SSH configuration is invalid"
|
||||||
((failed++))
|
((++failed))
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Test Cockpit service if installed
|
# Test Cockpit service if installed
|
||||||
@@ -208,7 +208,7 @@ function test_service_status() {
|
|||||||
echo "✅ Cockpit service is running"
|
echo "✅ Cockpit service is running"
|
||||||
else
|
else
|
||||||
echo "❌ Cockpit service is not running"
|
echo "❌ Cockpit service is not running"
|
||||||
((failed++))
|
((++failed))
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -218,7 +218,7 @@ function test_service_status() {
|
|||||||
echo "✅ Webmin service is running"
|
echo "✅ Webmin service is running"
|
||||||
else
|
else
|
||||||
echo "❌ Webmin service is not running"
|
echo "❌ Webmin service is not running"
|
||||||
((failed++))
|
((++failed))
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -242,7 +242,7 @@ function test_backup_existence() {
|
|||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "❌ Backup directory does not exist"
|
echo "❌ Backup directory does not exist"
|
||||||
((failed++))
|
((++failed))
|
||||||
fi
|
fi
|
||||||
|
|
||||||
return $failed
|
return $failed
|
||||||
|
|||||||
@@ -5,23 +5,24 @@
|
|||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
PROJECT_ROOT="$(dirname "$(realpath "${BASH_SOURCE[0]}")")/../.."
|
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||||
|
FRAMEWORK_INCLUDES="$PROJECT_ROOT/vendor/git@git.knownelement.com/29418/KNEL/KNELShellFramework/Framework-Includes"
|
||||||
|
|
||||||
function test_no_http_urls() {
|
function test_no_http_urls() {
|
||||||
echo "🔍 Checking for HTTP URLs in scripts..."
|
echo "🔍 Checking for HTTP URLs in scripts..."
|
||||||
|
|
||||||
local http_violations=0
|
local http_violations=0
|
||||||
local script_dirs=("ProjectCode" "Framework-Includes" "Project-Includes")
|
local script_dirs=("$PROJECT_ROOT/ProjectCode" "$FRAMEWORK_INCLUDES" "$PROJECT_ROOT/Project-Includes")
|
||||||
|
|
||||||
for dir in "${script_dirs[@]}"; do
|
for dir in "${script_dirs[@]}"; do
|
||||||
if [[ -d "$PROJECT_ROOT/$dir" ]]; then
|
if [[ -d "$dir" ]]; then
|
||||||
# Find HTTP URLs in shell scripts (excluding comments)
|
# Find HTTP URLs in shell scripts (excluding comments)
|
||||||
while IFS= read -r -d '' file; do
|
while IFS= read -r -d '' file; do
|
||||||
if grep -n "http://" "$file" | grep -v "^[[:space:]]*#" | grep -v "schema.org" | grep -v "xmlns"; then
|
if grep -n "http://" "$file" | grep -v "^[[:space:]]*#" | grep -v "schema.org" | grep -v "xmlns"; then
|
||||||
echo "❌ HTTP URL found in: $file"
|
echo "❌ HTTP URL found in: $file"
|
||||||
((http_violations++))
|
((++http_violations))
|
||||||
fi
|
fi
|
||||||
done < <(find "$PROJECT_ROOT/$dir" -name "*.sh" -type f -print0)
|
done < <(find "$dir" -name "*.sh" -type f -print0)
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -37,12 +38,12 @@ function test_no_http_urls() {
|
|||||||
function test_https_urls_valid() {
|
function test_https_urls_valid() {
|
||||||
echo "🔍 Validating HTTPS URLs are accessible..."
|
echo "🔍 Validating HTTPS URLs are accessible..."
|
||||||
|
|
||||||
local script_dirs=("ProjectCode" "Framework-Includes" "Project-Includes")
|
local script_dirs=("$PROJECT_ROOT/ProjectCode" "$FRAMEWORK_INCLUDES" "$PROJECT_ROOT/Project-Includes")
|
||||||
local https_failures=0
|
local https_failures=0
|
||||||
|
|
||||||
# Extract HTTPS URLs from scripts
|
# Extract HTTPS URLs from scripts
|
||||||
for dir in "${script_dirs[@]}"; do
|
for dir in "${script_dirs[@]}"; do
|
||||||
if [[ -d "$PROJECT_ROOT/$dir" ]]; then
|
if [[ -d "$dir" ]]; then
|
||||||
while IFS= read -r -d '' file; do
|
while IFS= read -r -d '' file; do
|
||||||
# Extract HTTPS URLs from non-comment lines
|
# Extract HTTPS URLs from non-comment lines
|
||||||
grep -o "https://[^[:space:]\"']*" "$file" | grep -v "schema.org" | while read -r url; do
|
grep -o "https://[^[:space:]\"']*" "$file" | grep -v "schema.org" | while read -r url; do
|
||||||
@@ -51,10 +52,10 @@ function test_https_urls_valid() {
|
|||||||
echo "✅ HTTPS URL accessible: $url"
|
echo "✅ HTTPS URL accessible: $url"
|
||||||
else
|
else
|
||||||
echo "❌ HTTPS URL not accessible: $url"
|
echo "❌ HTTPS URL not accessible: $url"
|
||||||
((https_failures++))
|
((++https_failures))
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
done < <(find "$PROJECT_ROOT/$dir" -name "*.sh" -type f -print0)
|
done < <(find "$dir" -name "*.sh" -type f -print0)
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -78,7 +79,7 @@ function test_ssl_certificate_validation() {
|
|||||||
echo "✅ SSL certificate valid: $url"
|
echo "✅ SSL certificate valid: $url"
|
||||||
else
|
else
|
||||||
echo "❌ SSL certificate validation failed: $url"
|
echo "❌ SSL certificate validation failed: $url"
|
||||||
((ssl_failures++))
|
((++ssl_failures))
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|||||||
@@ -5,37 +5,31 @@
|
|||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
PROJECT_ROOT="$(dirname "$(realpath "${BASH_SOURCE[0]}")")/../.."
|
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||||
|
|
||||||
# Source framework functions
|
# Source framework functions from the vendored KNELShellFramework
|
||||||
source "$PROJECT_ROOT/Framework-Includes/Logging.sh" 2>/dev/null || echo "Warning: Logging.sh not found"
|
FRAMEWORK_INCLUDES="$PROJECT_ROOT/vendor/git@git.knownelement.com/29418/KNEL/KNELShellFramework/Framework-Includes"
|
||||||
source "$PROJECT_ROOT/Framework-Includes/PrettyPrint.sh" 2>/dev/null || echo "Warning: PrettyPrint.sh not found"
|
source "$FRAMEWORK_INCLUDES/Logging.sh" 2>/dev/null || echo "Warning: Logging.sh not found"
|
||||||
source "$PROJECT_ROOT/Framework-Includes/ErrorHandling.sh" 2>/dev/null || echo "Warning: ErrorHandling.sh not found"
|
source "$FRAMEWORK_INCLUDES/PrettyPrint.sh" 2>/dev/null || echo "Warning: PrettyPrint.sh not found"
|
||||||
|
source "$FRAMEWORK_INCLUDES/ErrorHandling.sh" 2>/dev/null || echo "Warning: ErrorHandling.sh not found"
|
||||||
|
|
||||||
function test_logging_functions() {
|
function test_logging_variables() {
|
||||||
echo "🔍 Testing logging functions..."
|
echo "🔍 Testing logging variables..."
|
||||||
|
|
||||||
local test_log="/tmp/test-log-$$"
|
if [[ -n "${CURRENT_TIMESTAMP:-}" ]]; then
|
||||||
|
echo "✅ CURRENT_TIMESTAMP is set"
|
||||||
# Test if logging functions exist and work
|
|
||||||
if command -v log_info >/dev/null 2>&1; then
|
|
||||||
log_info "Test info message" 2>/dev/null || true
|
|
||||||
echo "✅ log_info function exists"
|
|
||||||
else
|
else
|
||||||
echo "❌ log_info function missing"
|
echo "❌ CURRENT_TIMESTAMP is not set"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if command -v log_error >/dev/null 2>&1; then
|
if [[ -n "${LOGFILENAME:-}" ]]; then
|
||||||
log_error "Test error message" 2>/dev/null || true
|
echo "✅ LOGFILENAME is set"
|
||||||
echo "✅ log_error function exists"
|
|
||||||
else
|
else
|
||||||
echo "❌ log_error function missing"
|
echo "❌ LOGFILENAME is not set"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Cleanup
|
|
||||||
rm -f "$test_log"
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,14 +53,6 @@ function test_pretty_print_functions() {
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if command -v print_success >/dev/null 2>&1; then
|
|
||||||
print_success "Test success message" >/dev/null 2>&1 || true
|
|
||||||
echo "✅ print_success function exists"
|
|
||||||
else
|
|
||||||
echo "❌ print_success function missing"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,10 +60,17 @@ function test_error_handling() {
|
|||||||
echo "🔍 Testing error handling..."
|
echo "🔍 Testing error handling..."
|
||||||
|
|
||||||
# Test if error handling functions exist
|
# Test if error handling functions exist
|
||||||
if command -v handle_error >/dev/null 2>&1; then
|
if command -v error_out >/dev/null 2>&1; then
|
||||||
echo "✅ handle_error function exists"
|
echo "✅ error_out function exists"
|
||||||
else
|
else
|
||||||
echo "❌ handle_error function missing"
|
echo "❌ error_out function missing"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if command -v handle_failure >/dev/null 2>&1; then
|
||||||
|
echo "✅ handle_failure function exists"
|
||||||
|
else
|
||||||
|
echo "❌ handle_failure function missing"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -112,11 +105,11 @@ function test_framework_includes_exist() {
|
|||||||
local missing_files=0
|
local missing_files=0
|
||||||
|
|
||||||
for include_file in "${required_includes[@]}"; do
|
for include_file in "${required_includes[@]}"; do
|
||||||
if [[ -f "$PROJECT_ROOT/Framework-Includes/$include_file" ]]; then
|
if [[ -f "$FRAMEWORK_INCLUDES/$include_file" ]]; then
|
||||||
echo "✅ Framework include exists: $include_file"
|
echo "✅ Framework include exists: $include_file"
|
||||||
else
|
else
|
||||||
echo "❌ Framework include missing: $include_file"
|
echo "❌ Framework include missing: $include_file"
|
||||||
((missing_files++))
|
((++missing_files))
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -127,18 +120,28 @@ function test_syntax_validation() {
|
|||||||
echo "🔍 Testing script syntax validation..."
|
echo "🔍 Testing script syntax validation..."
|
||||||
|
|
||||||
local syntax_errors=0
|
local syntax_errors=0
|
||||||
local script_dirs=("Framework-Includes" "Project-Includes" "ProjectCode")
|
local script_dirs=(
|
||||||
|
"$FRAMEWORK_INCLUDES"
|
||||||
|
"$PROJECT_ROOT/Project-Includes"
|
||||||
|
"$PROJECT_ROOT/ProjectCode"
|
||||||
|
)
|
||||||
|
|
||||||
for dir in "${script_dirs[@]}"; do
|
for dir in "${script_dirs[@]}"; do
|
||||||
if [[ -d "$PROJECT_ROOT/$dir" ]]; then
|
if [[ -d "$dir" ]]; then
|
||||||
while IFS= read -r -d '' file; do
|
while IFS= read -r -d '' file; do
|
||||||
|
# Skip files that aren't bash scripts despite a .sh extension (e.g. PHP agents)
|
||||||
|
local shebang
|
||||||
|
shebang="$(head -c 32 "$file" 2>/dev/null)"
|
||||||
|
case "$shebang" in
|
||||||
|
*php*|*python*|*perl*) continue ;;
|
||||||
|
esac
|
||||||
if bash -n "$file" 2>/dev/null; then
|
if bash -n "$file" 2>/dev/null; then
|
||||||
echo "✅ Syntax valid: $(basename "$file")"
|
echo "✅ Syntax valid: $(basename "$file")"
|
||||||
else
|
else
|
||||||
echo "❌ Syntax error in: $(basename "$file")"
|
echo "❌ Syntax error in: $(basename "$file")"
|
||||||
((syntax_errors++))
|
((++syntax_errors))
|
||||||
fi
|
fi
|
||||||
done < <(find "$PROJECT_ROOT/$dir" -name "*.sh" -type f -print0)
|
done < <(find "$dir" -name "*.sh" -type f -print0)
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -154,7 +157,7 @@ function main() {
|
|||||||
|
|
||||||
# Run all unit tests
|
# Run all unit tests
|
||||||
test_framework_includes_exist || ((total_failures++))
|
test_framework_includes_exist || ((total_failures++))
|
||||||
test_logging_functions || ((total_failures++))
|
test_logging_variables || ((total_failures++))
|
||||||
test_pretty_print_functions || ((total_failures++))
|
test_pretty_print_functions || ((total_failures++))
|
||||||
test_error_handling || ((total_failures++))
|
test_error_handling || ((total_failures++))
|
||||||
test_syntax_validation || ((total_failures++))
|
test_syntax_validation || ((total_failures++))
|
||||||
|
|||||||
@@ -5,15 +5,22 @@
|
|||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
PROJECT_ROOT="$(dirname "$(realpath "${BASH_SOURCE[0]}")")/../.."
|
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||||
|
|
||||||
# Source framework functions
|
# Source framework functions from the vendored KNELShellFramework
|
||||||
source "$PROJECT_ROOT/Framework-Includes/SafeDownload.sh"
|
FRAMEWORK_INCLUDES="$PROJECT_ROOT/vendor/git@git.knownelement.com/29418/KNEL/KNELShellFramework/Framework-Includes"
|
||||||
|
|
||||||
|
# The vendored PrettyPrint only defines print_info/print_error, but SafeDownload.sh
|
||||||
|
# calls print_success/print_warning; define lightweight shims before sourcing.
|
||||||
|
function print_success() { echo "✅ $1"; }
|
||||||
|
function print_warning() { echo "⚠️ $1"; }
|
||||||
|
|
||||||
|
source "$FRAMEWORK_INCLUDES/SafeDownload.sh"
|
||||||
|
|
||||||
function test_network_connectivity() {
|
function test_network_connectivity() {
|
||||||
echo "🔍 Testing network connectivity..."
|
echo "🔍 Testing network connectivity..."
|
||||||
|
|
||||||
if test_network_connectivity; then
|
if check_url_accessibility "https://github.com"; then
|
||||||
echo "✅ Network connectivity test passed"
|
echo "✅ Network connectivity test passed"
|
||||||
return 0
|
return 0
|
||||||
else
|
else
|
||||||
@@ -37,7 +44,7 @@ function test_url_accessibility() {
|
|||||||
echo "✅ URL accessible: $url"
|
echo "✅ URL accessible: $url"
|
||||||
else
|
else
|
||||||
echo "❌ URL not accessible: $url"
|
echo "❌ URL not accessible: $url"
|
||||||
((failed++))
|
((++failed))
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -60,20 +67,20 @@ function test_safe_download() {
|
|||||||
echo "✅ Downloaded file exists and has content"
|
echo "✅ Downloaded file exists and has content"
|
||||||
else
|
else
|
||||||
echo "❌ Downloaded file is missing or empty"
|
echo "❌ Downloaded file is missing or empty"
|
||||||
((failed++))
|
((++failed))
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Cleanup
|
# Cleanup
|
||||||
rm -f "$test_dest"
|
rm -f "$test_dest"
|
||||||
else
|
else
|
||||||
echo "❌ Safe download failed"
|
echo "❌ Safe download failed"
|
||||||
((failed++))
|
((++failed))
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Test download with invalid URL
|
# Test download with invalid URL
|
||||||
if safe_download "https://invalid.example.com/nonexistent" "/tmp/test-invalid-$$" 2>/dev/null; then
|
if safe_download "https://invalid.example.com/nonexistent" "/tmp/test-invalid-$$" 2>/dev/null; then
|
||||||
echo "❌ Invalid URL download should have failed"
|
echo "❌ Invalid URL download should have failed"
|
||||||
((failed++))
|
((++failed))
|
||||||
else
|
else
|
||||||
echo "✅ Invalid URL download failed as expected"
|
echo "✅ Invalid URL download failed as expected"
|
||||||
fi
|
fi
|
||||||
@@ -97,13 +104,13 @@ function test_checksum_verification() {
|
|||||||
echo "✅ Correct checksum verification passed"
|
echo "✅ Correct checksum verification passed"
|
||||||
else
|
else
|
||||||
echo "❌ Correct checksum verification failed"
|
echo "❌ Correct checksum verification failed"
|
||||||
((failed++))
|
((++failed))
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Test incorrect checksum
|
# Test incorrect checksum
|
||||||
if verify_checksum "$test_file" "invalid_checksum" 2>/dev/null; then
|
if verify_checksum "$test_file" "invalid_checksum" 2>/dev/null; then
|
||||||
echo "❌ Incorrect checksum should have failed"
|
echo "❌ Incorrect checksum should have failed"
|
||||||
((failed++))
|
((++failed))
|
||||||
else
|
else
|
||||||
echo "✅ Incorrect checksum verification failed as expected"
|
echo "✅ Incorrect checksum verification failed as expected"
|
||||||
fi
|
fi
|
||||||
@@ -111,7 +118,7 @@ function test_checksum_verification() {
|
|||||||
# Test missing file
|
# Test missing file
|
||||||
if verify_checksum "/tmp/nonexistent-file-$$" "$expected_checksum" 2>/dev/null; then
|
if verify_checksum "/tmp/nonexistent-file-$$" "$expected_checksum" 2>/dev/null; then
|
||||||
echo "❌ Missing file checksum should have failed"
|
echo "❌ Missing file checksum should have failed"
|
||||||
((failed++))
|
((++failed))
|
||||||
else
|
else
|
||||||
echo "✅ Missing file checksum verification failed as expected"
|
echo "✅ Missing file checksum verification failed as expected"
|
||||||
fi
|
fi
|
||||||
@@ -143,7 +150,7 @@ function test_batch_download() {
|
|||||||
echo "✅ Batch file downloaded: $(basename "$file")"
|
echo "✅ Batch file downloaded: $(basename "$file")"
|
||||||
else
|
else
|
||||||
echo "❌ Batch file missing: $(basename "$file")"
|
echo "❌ Batch file missing: $(basename "$file")"
|
||||||
((failed++))
|
((++failed))
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -153,7 +160,7 @@ function test_batch_download() {
|
|||||||
done
|
done
|
||||||
else
|
else
|
||||||
echo "❌ Batch download failed"
|
echo "❌ Batch download failed"
|
||||||
((failed++))
|
((++failed))
|
||||||
fi
|
fi
|
||||||
|
|
||||||
return $failed
|
return $failed
|
||||||
@@ -172,7 +179,7 @@ function test_config_backup_and_restore() {
|
|||||||
# Test safe config download (this will fail with invalid URL, triggering restore)
|
# Test safe config download (this will fail with invalid URL, triggering restore)
|
||||||
if safe_config_download "https://invalid.example.com/config" "$test_config" ".test-backup" 2>/dev/null; then
|
if safe_config_download "https://invalid.example.com/config" "$test_config" ".test-backup" 2>/dev/null; then
|
||||||
echo "❌ Invalid config download should have failed"
|
echo "❌ Invalid config download should have failed"
|
||||||
((failed++))
|
((++failed))
|
||||||
else
|
else
|
||||||
echo "✅ Invalid config download failed as expected"
|
echo "✅ Invalid config download failed as expected"
|
||||||
|
|
||||||
@@ -181,7 +188,7 @@ function test_config_backup_and_restore() {
|
|||||||
echo "✅ Original config was restored after failed download"
|
echo "✅ Original config was restored after failed download"
|
||||||
else
|
else
|
||||||
echo "❌ Original config was not restored properly"
|
echo "❌ Original config was not restored properly"
|
||||||
((failed++))
|
((++failed))
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -199,14 +206,14 @@ function test_download_error_handling() {
|
|||||||
# Test download with missing parameters
|
# Test download with missing parameters
|
||||||
if safe_download "" "/tmp/test" 2>/dev/null; then
|
if safe_download "" "/tmp/test" 2>/dev/null; then
|
||||||
echo "❌ Download with empty URL should have failed"
|
echo "❌ Download with empty URL should have failed"
|
||||||
((failed++))
|
((++failed))
|
||||||
else
|
else
|
||||||
echo "✅ Download with empty URL failed as expected"
|
echo "✅ Download with empty URL failed as expected"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if safe_download "https://example.com" "" 2>/dev/null; then
|
if safe_download "https://example.com" "" 2>/dev/null; then
|
||||||
echo "❌ Download with empty destination should have failed"
|
echo "❌ Download with empty destination should have failed"
|
||||||
((failed++))
|
((++failed))
|
||||||
else
|
else
|
||||||
echo "✅ Download with empty destination failed as expected"
|
echo "✅ Download with empty destination failed as expected"
|
||||||
fi
|
fi
|
||||||
@@ -214,7 +221,7 @@ function test_download_error_handling() {
|
|||||||
# Test download to read-only location (should fail)
|
# Test download to read-only location (should fail)
|
||||||
if safe_download "https://github.com" "/test-readonly-$$" 2>/dev/null; then
|
if safe_download "https://github.com" "/test-readonly-$$" 2>/dev/null; then
|
||||||
echo "❌ Download to read-only location should have failed"
|
echo "❌ Download to read-only location should have failed"
|
||||||
((failed++))
|
((++failed))
|
||||||
else
|
else
|
||||||
echo "✅ Download to read-only location failed as expected"
|
echo "✅ Download to read-only location failed as expected"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ function test_required_commands() {
|
|||||||
echo "✅ Required command available: $cmd"
|
echo "✅ Required command available: $cmd"
|
||||||
else
|
else
|
||||||
echo "❌ Required command missing: $cmd"
|
echo "❌ Required command missing: $cmd"
|
||||||
((failed++))
|
((++failed))
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -87,7 +87,7 @@ function test_network_connectivity() {
|
|||||||
echo "✅ Network connectivity: $url"
|
echo "✅ Network connectivity: $url"
|
||||||
else
|
else
|
||||||
echo "❌ Network connectivity failed: $url"
|
echo "❌ Network connectivity failed: $url"
|
||||||
((failed++))
|
((++failed))
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -103,7 +103,7 @@ function test_permissions() {
|
|||||||
echo "✅ Write permission: $dir"
|
echo "✅ Write permission: $dir"
|
||||||
else
|
else
|
||||||
echo "❌ Write permission denied: $dir"
|
echo "❌ Write permission denied: $dir"
|
||||||
((failed++))
|
((++failed))
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
export PROJECT_ROOT_PATH
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
PROJECT_ROOT_PATH="$(realpath ../../../)"
|
|
||||||
|
|
||||||
#Framework variables are read from hee
|
export PROJECT_ROOT_PATH
|
||||||
|
PROJECT_ROOT_PATH="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
||||||
|
|
||||||
export GIT_VENDOR_PATH_ROOT
|
export GIT_VENDOR_PATH_ROOT
|
||||||
GIT_VENDOR_PATH_ROOT="$PROJECT_ROOT_PATH/vendor/git@git.knownelement.com/29418/"
|
GIT_VENDOR_PATH_ROOT="$PROJECT_ROOT_PATH/vendor/git@git.knownelement.com/29418/"
|
||||||
@@ -11,19 +11,22 @@ GIT_VENDOR_PATH_ROOT="$PROJECT_ROOT_PATH/vendor/git@git.knownelement.com/29418/"
|
|||||||
export KNELShellFrameworkRoot
|
export KNELShellFrameworkRoot
|
||||||
KNELShellFrameworkRoot="$GIT_VENDOR_PATH_ROOT/KNEL/KNELShellFramework"
|
KNELShellFrameworkRoot="$GIT_VENDOR_PATH_ROOT/KNEL/KNELShellFramework"
|
||||||
|
|
||||||
source $KNELShellFrameworkRoot/Framework-ConfigFiles/FrameworkVars
|
export AGENTS_PATH
|
||||||
|
AGENTS_PATH="$PROJECT_ROOT_PATH/ProjectCode/Agents"
|
||||||
|
|
||||||
for framework_include_file in $KNELShellFrameworkRoot/Framework-Includes/*; do
|
source "$KNELShellFrameworkRoot/Framework-ConfigFiles/FrameworkVars"
|
||||||
|
|
||||||
|
for framework_include_file in "$KNELShellFrameworkRoot"/Framework-Includes/*; do
|
||||||
source "$framework_include_file"
|
source "$framework_include_file"
|
||||||
done
|
done
|
||||||
|
|
||||||
for project_include_file in ../../../Project-Includes/*; do
|
for project_include_file in "$PROJECT_ROOT_PATH"/Project-Includes/*; do
|
||||||
source "$project_include_file"
|
source "$project_include_file"
|
||||||
done
|
done
|
||||||
|
|
||||||
print_info "Setting up librenms agent..."
|
print_info "Setting up librenms agent..."
|
||||||
|
|
||||||
cat ../../Agents/librenms/distro > /usr/local/bin/distro
|
cat "$AGENTS_PATH/librenms/distro" > /usr/local/bin/distro
|
||||||
chmod +x /usr/local/bin/distro
|
chmod +x /usr/local/bin/distro
|
||||||
|
|
||||||
if [ ! -d /usr/lib/check_mk_agent ]; then
|
if [ ! -d /usr/lib/check_mk_agent ]; then
|
||||||
@@ -38,26 +41,26 @@ if [ ! -d /usr/lib/check_mk_agent/local ]; then
|
|||||||
mkdir -p /usr/lib/check_mk_agent/local
|
mkdir -p /usr/lib/check_mk_agent/local
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cat ../../Agents/librenms/check_mk_agent > /usr/bin/check_mk_agent
|
cat "$AGENTS_PATH/librenms/check_mk_agent" > /usr/bin/check_mk_agent
|
||||||
chmod +x /usr/bin/check_mk_agent
|
chmod +x /usr/bin/check_mk_agent
|
||||||
|
|
||||||
cat ../../Agents/librenms/check_mk@.service > /etc/systemd/system/check_mk@.service
|
cat "$AGENTS_PATH/librenms/check_mk@.service" > /etc/systemd/system/check_mk@.service
|
||||||
cat ../../Agents/librenms/check_mk.socket > /etc/systemd/system/check_mk.socket
|
cat "$AGENTS_PATH/librenms/check_mk.socket" > /etc/systemd/system/check_mk.socket
|
||||||
|
|
||||||
systemctl enable check_mk.socket
|
systemctl enable check_mk.socket
|
||||||
systemctl start check_mk.socket
|
systemctl start check_mk.socket
|
||||||
|
|
||||||
#Modules commented out below, we will roll out on systems that use them, most of the fleet doesn't use those modules
|
#Modules commented out below, we will roll out on systems that use them, most of the fleet doesn't use those modules
|
||||||
|
|
||||||
cat ../../Agents/librenms/dmi.sh > /usr/lib/check_mk_agent/local/dmi.sh
|
cat "$AGENTS_PATH/librenms/dmi.sh" > /usr/lib/check_mk_agent/local/dmi.sh
|
||||||
cat ../../Agents/librenms/dpkg.sh > /usr/lib/check_mk_agent/local/dpkg.sh
|
cat "$AGENTS_PATH/librenms/dpkg.sh" > /usr/lib/check_mk_agent/local/dpkg.sh
|
||||||
#cat ../../Agents/librenms/mysql.sh > /usr/lib/check_mk_agent/local/mysql.sh
|
#cat "$AGENTS_PATH/librenms/mysql.sh" > /usr/lib/check_mk_agent/local/mysql.sh
|
||||||
cat ../../Agents/librenms/ntp-client > /usr/lib/check_mk_agent/local/ntp-client
|
cat "$AGENTS_PATH/librenms/ntp-client" > /usr/lib/check_mk_agent/local/ntp-client
|
||||||
#cat ../../Agents/librenms/ntp-server.sh > /usr/lib/check_mk_agent/local/ntp-server.sh
|
#cat "$AGENTS_PATH/librenms/ntp-server.sh" > /usr/lib/check_mk_agent/local/ntp-server.sh
|
||||||
cat ../../Agents/librenms/os-updates.sh > /usr/lib/check_mk_agent/local/os-updates.sh
|
cat "$AGENTS_PATH/librenms/os-updates.sh" > /usr/lib/check_mk_agent/local/os-updates.sh
|
||||||
cat ../../Agents/librenms/postfixdetailed > /usr/lib/check_mk_agent/local/postfixdetailed
|
cat "$AGENTS_PATH/librenms/postfixdetailed" > /usr/lib/check_mk_agent/local/postfixdetailed
|
||||||
cat ../../Agents/librenms/postfix-queues > /usr/lib/check_mk_agent/local/postfix-queues
|
cat "$AGENTS_PATH/librenms/postfix-queues" > /usr/lib/check_mk_agent/local/postfix-queues
|
||||||
#cat ../../Agents/librenms/smart.sh > /usr/lib/check_mk_agent/local/smart
|
#cat "$AGENTS_PATH/librenms/smart.sh" > /usr/lib/check_mk_agent/local/smart
|
||||||
#cat ../../Agents/librenms/smart.sh.config > /usr/lib/check_mk_agent/local/smart.config
|
#cat "$AGENTS_PATH/librenms/smart.sh.config" > /usr/lib/check_mk_agent/local/smart.config
|
||||||
|
|
||||||
chmod +x /usr/lib/check_mk_agent/local/*
|
chmod +x /usr/lib/check_mk_agent/local/*
|
||||||
@@ -9,11 +9,10 @@
|
|||||||
#Core framework functions...
|
#Core framework functions...
|
||||||
#####
|
#####
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
export PROJECT_ROOT_PATH
|
export PROJECT_ROOT_PATH
|
||||||
PROJECT_ROOT_PATH="$(realpath ../../../)"
|
PROJECT_ROOT_PATH="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
||||||
|
|
||||||
#Framework variables are read from hee
|
|
||||||
|
|
||||||
|
|
||||||
export GIT_VENDOR_PATH_ROOT
|
export GIT_VENDOR_PATH_ROOT
|
||||||
GIT_VENDOR_PATH_ROOT="$PROJECT_ROOT_PATH/vendor/git@git.knownelement.com/29418/"
|
GIT_VENDOR_PATH_ROOT="$PROJECT_ROOT_PATH/vendor/git@git.knownelement.com/29418/"
|
||||||
@@ -21,19 +20,16 @@ GIT_VENDOR_PATH_ROOT="$PROJECT_ROOT_PATH/vendor/git@git.knownelement.com/29418/"
|
|||||||
export KNELShellFrameworkRoot
|
export KNELShellFrameworkRoot
|
||||||
KNELShellFrameworkRoot="$GIT_VENDOR_PATH_ROOT/KNEL/KNELShellFramework"
|
KNELShellFrameworkRoot="$GIT_VENDOR_PATH_ROOT/KNEL/KNELShellFramework"
|
||||||
|
|
||||||
source $KNELShellFrameworkRoot/Framework-ConfigFiles/FrameworkVars
|
source "$KNELShellFrameworkRoot/Framework-ConfigFiles/FrameworkVars"
|
||||||
|
|
||||||
for framework_include_file in $KNELShellFrameworkRoot/Framework-Includes/*; do
|
for framework_include_file in "$KNELShellFrameworkRoot"/Framework-Includes/*; do
|
||||||
source "$framework_include_file"
|
source "$framework_include_file"
|
||||||
done
|
done
|
||||||
|
|
||||||
for project_include_file in ../../../Project-Includes/*; do
|
for project_include_file in "$PROJECT_ROOT_PATH"/Project-Includes/*; do
|
||||||
source "$project_include_file"
|
source "$project_include_file"
|
||||||
done
|
done
|
||||||
|
|
||||||
#Framework variables are read from hee
|
|
||||||
source $KNELShellFrameworkRoot/Framework-ConfigFiles/FrameworkVars
|
|
||||||
|
|
||||||
# 2FA Configuration
|
# 2FA Configuration
|
||||||
BACKUP_DIR="/root/backup/2fa"
|
BACKUP_DIR="/root/backup/2fa"
|
||||||
PAM_CONFIG_DIR="/etc/pam.d"
|
PAM_CONFIG_DIR="/etc/pam.d"
|
||||||
|
|||||||
@@ -4,10 +4,10 @@
|
|||||||
#Core framework functions...
|
#Core framework functions...
|
||||||
#####
|
#####
|
||||||
|
|
||||||
export PROJECT_ROOT_PATH
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
PROJECT_ROOT_PATH="$(realpath ../../)"
|
|
||||||
|
|
||||||
#Framework variables are read from hee
|
export PROJECT_ROOT_PATH
|
||||||
|
PROJECT_ROOT_PATH="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
||||||
|
|
||||||
export GIT_VENDOR_PATH_ROOT
|
export GIT_VENDOR_PATH_ROOT
|
||||||
GIT_VENDOR_PATH_ROOT="$PROJECT_ROOT_PATH/vendor/git@git.knownelement.com/29418/"
|
GIT_VENDOR_PATH_ROOT="$PROJECT_ROOT_PATH/vendor/git@git.knownelement.com/29418/"
|
||||||
@@ -15,20 +15,19 @@ GIT_VENDOR_PATH_ROOT="$PROJECT_ROOT_PATH/vendor/git@git.knownelement.com/29418/"
|
|||||||
export KNELShellFrameworkRoot
|
export KNELShellFrameworkRoot
|
||||||
KNELShellFrameworkRoot="$GIT_VENDOR_PATH_ROOT/KNEL/KNELShellFramework"
|
KNELShellFrameworkRoot="$GIT_VENDOR_PATH_ROOT/KNEL/KNELShellFramework"
|
||||||
|
|
||||||
source $KNELShellFrameworkRoot/Framework-ConfigFiles/FrameworkVars
|
export CONFIGFILES_PATH
|
||||||
|
CONFIGFILES_PATH="$PROJECT_ROOT_PATH/ProjectCode/ConfigFiles"
|
||||||
|
|
||||||
for framework_include_file in $KNELShellFrameworkRoot/Framework-Includes/*; do
|
source "$KNELShellFrameworkRoot/Framework-ConfigFiles/FrameworkVars"
|
||||||
|
|
||||||
|
for framework_include_file in "$KNELShellFrameworkRoot"/Framework-Includes/*; do
|
||||||
source "$framework_include_file"
|
source "$framework_include_file"
|
||||||
done
|
done
|
||||||
|
|
||||||
for project_include_file in ../Project-Includes/*; do
|
for project_include_file in "$PROJECT_ROOT_PATH"/Project-Includes/*; do
|
||||||
source "$project_include_file"
|
source "$project_include_file"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
export DL_ROOT
|
|
||||||
DL_ROOT="https://dl.knownelement.com/KNEL/FetchApply/"
|
|
||||||
|
|
||||||
# Material herein Sourced from
|
# Material herein Sourced from
|
||||||
|
|
||||||
# https://cisofy.com/documentation/lynis/
|
# https://cisofy.com/documentation/lynis/
|
||||||
@@ -42,10 +41,10 @@ DL_ROOT="https://dl.knownelement.com/KNEL/FetchApply/"
|
|||||||
|
|
||||||
#Auditd
|
#Auditd
|
||||||
|
|
||||||
curl --silent ${DL_ROOT}/ConfigFiles/AudidD/auditd.conf > /etc/audit/auditd.conf
|
cat "$CONFIGFILES_PATH/AuditD/auditd.conf" > /etc/audit/auditd.conf
|
||||||
|
|
||||||
# Systemd
|
# Systemd
|
||||||
curl --silent ${DL_ROOT}/ConfigFiles/Systemd/journald.conf > /etc/systemd/journald.conf
|
cat "$CONFIGFILES_PATH/Systemd/journald.conf" > /etc/systemd/journald.conf
|
||||||
|
|
||||||
# logrotate
|
# logrotate
|
||||||
curl --silent ${DL_ROOT}/ConfigFiles/Logrotate/logrotate.conf > /etc/logrotate.conf
|
cat "$CONFIGFILES_PATH/Logrotate/logrotate.conf" > /etc/logrotate.conf
|
||||||
@@ -5,11 +5,10 @@
|
|||||||
#Core framework functions...
|
#Core framework functions...
|
||||||
#########################################
|
#########################################
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
export PROJECT_ROOT_PATH
|
export PROJECT_ROOT_PATH
|
||||||
PROJECT_ROOT_PATH="$(realpath ../../../)"
|
PROJECT_ROOT_PATH="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
||||||
|
|
||||||
#Framework variables are read from hee
|
|
||||||
|
|
||||||
|
|
||||||
export GIT_VENDOR_PATH_ROOT
|
export GIT_VENDOR_PATH_ROOT
|
||||||
GIT_VENDOR_PATH_ROOT="$PROJECT_ROOT_PATH/vendor/git@git.knownelement.com/29418/"
|
GIT_VENDOR_PATH_ROOT="$PROJECT_ROOT_PATH/vendor/git@git.knownelement.com/29418/"
|
||||||
@@ -17,19 +16,19 @@ GIT_VENDOR_PATH_ROOT="$PROJECT_ROOT_PATH/vendor/git@git.knownelement.com/29418/"
|
|||||||
export KNELShellFrameworkRoot
|
export KNELShellFrameworkRoot
|
||||||
KNELShellFrameworkRoot="$GIT_VENDOR_PATH_ROOT/KNEL/KNELShellFramework"
|
KNELShellFrameworkRoot="$GIT_VENDOR_PATH_ROOT/KNEL/KNELShellFramework"
|
||||||
|
|
||||||
source $KNELShellFrameworkRoot/Framework-ConfigFiles/FrameworkVars
|
export CONFIGFILES_PATH
|
||||||
|
CONFIGFILES_PATH="$PROJECT_ROOT_PATH/ProjectCode/ConfigFiles"
|
||||||
|
|
||||||
for framework_include_file in $KNELShellFrameworkRoot/Framework-Includes/*; do
|
source "$KNELShellFrameworkRoot/Framework-ConfigFiles/FrameworkVars"
|
||||||
|
|
||||||
|
for framework_include_file in "$KNELShellFrameworkRoot"/Framework-Includes/*; do
|
||||||
source "$framework_include_file"
|
source "$framework_include_file"
|
||||||
done
|
done
|
||||||
|
|
||||||
for project_include_file in ../../../Project-Includes/*; do
|
for project_include_file in "$PROJECT_ROOT_PATH"/Project-Includes/*; do
|
||||||
source "$project_include_file"
|
source "$project_include_file"
|
||||||
done
|
done
|
||||||
|
|
||||||
#Framework variables are read from hee
|
|
||||||
source $KNELShellFrameworkRoot/Framework-ConfigFiles/FrameworkVars
|
|
||||||
|
|
||||||
|
|
||||||
#########################################
|
#########################################
|
||||||
# Core script code begins here
|
# Core script code begins here
|
||||||
@@ -82,24 +81,24 @@ systemctl --now disable autofs || true
|
|||||||
apt-get -y --purge remove autofs || true
|
apt-get -y --purge remove autofs || true
|
||||||
|
|
||||||
#disable usb storage
|
#disable usb storage
|
||||||
curl --silent ${DL_ROOT}/ProjectCode/ConfigFiles/ModProbe/usb_storage.conf > /etc/modprobe.d/usb_storage.conf
|
cat "$CONFIGFILES_PATH/ModProbe/usb_storage.conf" > /etc/modprobe.d/usb_storage.conf
|
||||||
curl --silent ${DL_ROOT}/ProjectCode/ConfigFiles/ModProbe/dccp.conf > /etc/modprobe.d/dccp.conf
|
cat "$CONFIGFILES_PATH/ModProbe/dccp.conf" > /etc/modprobe.d/dccp.conf
|
||||||
curl --silent ${DL_ROOT}/ProjectCode/ConfigFiles/ModProbe/rds.conf > /etc/modprobe.d/rds.conf
|
cat "$CONFIGFILES_PATH/ModProbe/rds.conf" > /etc/modprobe.d/rds.conf
|
||||||
curl --silent ${DL_ROOT}/ProjectCode/ConfigFiles/ModProbe/sctp.conf > /etc/modprobe.d/sctp.conf
|
cat "$CONFIGFILES_PATH/ModProbe/sctp.conf" > /etc/modprobe.d/sctp.conf
|
||||||
curl --silent ${DL_ROOT}/ProjectCode/ConfigFiles/ModProbe/tipc.conf > /etc/modprobe.d/tipc.conf
|
cat "$CONFIGFILES_PATH/ModProbe/tipc.conf" > /etc/modprobe.d/tipc.conf
|
||||||
curl --silent ${DL_ROOT}/ProjectCode/ConfigFiles/ModProbe/cramfs.conf > /etc/modprobe.d/cramfs.conf
|
cat "$CONFIGFILES_PATH/ModProbe/cramfs.conf" > /etc/modprobe.d/cramfs.conf
|
||||||
curl --silent ${DL_ROOT}/ProjectCode/ConfigFiles/ModProbe/freevxfs.conf > /etc/modprobe.d/freevxfs.conf
|
cat "$CONFIGFILES_PATH/ModProbe/freevxfs.conf" > /etc/modprobe.d/freevxfs.conf
|
||||||
curl --silent ${DL_ROOT}/ProjectCode/ConfigFiles/ModProbe/hfs.conf > /etc/modprobe.d/hfs.conf
|
cat "$CONFIGFILES_PATH/ModProbe/hfs.conf" > /etc/modprobe.d/hfs.conf
|
||||||
curl --silent ${DL_ROOT}/ProjectCode/ConfigFiles/ModProbe/hfsplus.conf > /etc/modprobe.d/hfsplus.conf
|
cat "$CONFIGFILES_PATH/ModProbe/hfsplus.conf" > /etc/modprobe.d/hfsplus.conf
|
||||||
curl --silent ${DL_ROOT}/ProjectCode/ConfigFiles/ModProbe/jffs2.conf > /etc/modprobe.d/jffs2.conf
|
cat "$CONFIGFILES_PATH/ModProbe/jffs2.conf" > /etc/modprobe.d/jffs2.conf
|
||||||
curl --silent ${DL_ROOT}/ProjectCode/ConfigFiles/ModProbe/squashfs.conf > /etc/modprobe.d/squashfs.conf
|
cat "$CONFIGFILES_PATH/ModProbe/squashfs.conf" > /etc/modprobe.d/squashfs.conf
|
||||||
curl --silent ${DL_ROOT}/ProjectCode/ConfigFiles/ModProbe/udf.conf > /etc/modprobe.d/udf.conf
|
cat "$CONFIGFILES_PATH/ModProbe/udf.conf" > /etc/modprobe.d/udf.conf
|
||||||
|
|
||||||
#banners
|
#banners
|
||||||
|
|
||||||
curl --silent ${DL_ROOT}/ProjectCode/ConfigFiles/BANNERS/issue > /etc/issue
|
cat "$CONFIGFILES_PATH/BANNERS/issue" > /etc/issue
|
||||||
curl --silent ${DL_ROOT}/ProjectCode/ConfigFiles/BANNERS/issue.net > /etc/issue.net
|
cat "$CONFIGFILES_PATH/BANNERS/issue.net" > /etc/issue.net
|
||||||
curl --silent ${DL_ROOT}/ProjectCode/ConfigFiles/BANNERS/motd > /etc/motd
|
cat "$CONFIGFILES_PATH/BANNERS/motd" > /etc/motd
|
||||||
|
|
||||||
#Cron perms
|
#Cron perms
|
||||||
|
|
||||||
|
|||||||
@@ -4,11 +4,10 @@
|
|||||||
#Core framework functions...
|
#Core framework functions...
|
||||||
#########################################
|
#########################################
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
export PROJECT_ROOT_PATH
|
export PROJECT_ROOT_PATH
|
||||||
PROJECT_ROOT_PATH="$(realpath ../../../)"
|
PROJECT_ROOT_PATH="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
||||||
|
|
||||||
#Framework variables are read from here
|
|
||||||
|
|
||||||
|
|
||||||
export GIT_VENDOR_PATH_ROOT
|
export GIT_VENDOR_PATH_ROOT
|
||||||
GIT_VENDOR_PATH_ROOT="$PROJECT_ROOT_PATH/vendor/git@git.knownelement.com/29418/"
|
GIT_VENDOR_PATH_ROOT="$PROJECT_ROOT_PATH/vendor/git@git.knownelement.com/29418/"
|
||||||
@@ -16,19 +15,19 @@ GIT_VENDOR_PATH_ROOT="$PROJECT_ROOT_PATH/vendor/git@git.knownelement.com/29418/"
|
|||||||
export KNELShellFrameworkRoot
|
export KNELShellFrameworkRoot
|
||||||
KNELShellFrameworkRoot="$GIT_VENDOR_PATH_ROOT/KNEL/KNELShellFramework"
|
KNELShellFrameworkRoot="$GIT_VENDOR_PATH_ROOT/KNEL/KNELShellFramework"
|
||||||
|
|
||||||
source $KNELShellFrameworkRoot/Framework-ConfigFiles/FrameworkVars
|
export CONFIGFILES_PATH
|
||||||
|
CONFIGFILES_PATH="$PROJECT_ROOT_PATH/ProjectCode/ConfigFiles"
|
||||||
|
|
||||||
for framework_include_file in $KNELShellFrameworkRoot/Framework-Includes/*; do
|
source "$KNELShellFrameworkRoot/Framework-ConfigFiles/FrameworkVars"
|
||||||
|
|
||||||
|
for framework_include_file in "$KNELShellFrameworkRoot"/Framework-Includes/*; do
|
||||||
source "$framework_include_file"
|
source "$framework_include_file"
|
||||||
done
|
done
|
||||||
|
|
||||||
for project_include_file in ../../../Project-Includes/*; do
|
for project_include_file in "$PROJECT_ROOT_PATH"/Project-Includes/*; do
|
||||||
source "$project_include_file"
|
source "$project_include_file"
|
||||||
done
|
done
|
||||||
|
|
||||||
#Framework variables are read from hee
|
|
||||||
source $KNELShellFrameworkRoot/Framework-ConfigFiles/FrameworkVars
|
|
||||||
|
|
||||||
|
|
||||||
#########################################
|
#########################################
|
||||||
# Core script code begins here
|
# Core script code begins here
|
||||||
@@ -54,7 +53,7 @@ if [ ! -d $ROOT_SSH_DIR ]; then
|
|||||||
mkdir /root/.ssh/
|
mkdir /root/.ssh/
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cat ../../ConfigFiles/SSH/AuthorizedKeys/root-ssh-authorized-keys >/root/.ssh/authorized_keys
|
cat "$CONFIGFILES_PATH/SSH/AuthorizedKeys/root-ssh-authorized-keys" >/root/.ssh/authorized_keys
|
||||||
chmod 400 /root/.ssh/authorized_keys
|
chmod 400 /root/.ssh/authorized_keys
|
||||||
chown root: /root/.ssh/authorized_keys
|
chown root: /root/.ssh/authorized_keys
|
||||||
|
|
||||||
@@ -63,7 +62,7 @@ if [ "$LOCALUSER_CHECK" -gt 0 ]; then
|
|||||||
mkdir -p /home/localuser/.ssh/
|
mkdir -p /home/localuser/.ssh/
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cat ../../ConfigFiles/SSH/AuthorizedKeys/localuser-ssh-authorized-keys >/home/localuser/.ssh/authorized_keys
|
cat "$CONFIGFILES_PATH/SSH/AuthorizedKeys/localuser-ssh-authorized-keys" >/home/localuser/.ssh/authorized_keys
|
||||||
chown localuser /home/localuser/.ssh/authorized_keys &&
|
chown localuser /home/localuser/.ssh/authorized_keys &&
|
||||||
chmod 400 /home/localuser/.ssh/authorized_keys
|
chmod 400 /home/localuser/.ssh/authorized_keys
|
||||||
fi
|
fi
|
||||||
@@ -74,7 +73,7 @@ if [ "$SUBODEV_CHECK" = 1 ]; then
|
|||||||
mkdir /home/subodev/.ssh/
|
mkdir /home/subodev/.ssh/
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cat ../../ConfigFiles/SSH/AuthorizedKeys/localuser-ssh-authorized-keys >/home/subodev/.ssh/authorized_keys
|
cat "$CONFIGFILES_PATH/SSH/AuthorizedKeys/localuser-ssh-authorized-keys" >/home/subodev/.ssh/authorized_keys
|
||||||
chmod 400 /home/subodev/.ssh/authorized_keys &&
|
chmod 400 /home/subodev/.ssh/authorized_keys &&
|
||||||
chown subodev: /home/subodev/.ssh/authorized_keys
|
chown subodev: /home/subodev/.ssh/authorized_keys
|
||||||
fi
|
fi
|
||||||
@@ -84,7 +83,7 @@ DEV_WORKSTATION_CHECK="$(hostname | egrep -c 'subopi-dev|CharlesDevServer' || tr
|
|||||||
|
|
||||||
if [ "$DEV_WORKSTATION_CHECK" -eq 0 ]; then
|
if [ "$DEV_WORKSTATION_CHECK" -eq 0 ]; then
|
||||||
|
|
||||||
cat ../../ConfigFiles/SSH/Configs/tsys-sshd-config >/etc/ssh/sshd_config
|
cat "$CONFIGFILES_PATH/SSH/Configs/tsys-sshd-config" >/etc/ssh/sshd_config
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@@ -94,7 +93,7 @@ export UBUNTU_CHECK
|
|||||||
UBUNTU_CHECK="$(distro | grep -c Ubuntu||true)"
|
UBUNTU_CHECK="$(distro | grep -c Ubuntu||true)"
|
||||||
|
|
||||||
if [ "$UBUNTU_CHECK" -ne 1 ]; then
|
if [ "$UBUNTU_CHECK" -ne 1 ]; then
|
||||||
cat ../../ConfigFiles/SSH/Configs/ssh-audit-hardening.conf >/etc/ssh/sshd_config.d/ssh-audit_hardening.conf
|
cat "$CONFIGFILES_PATH/SSH/Configs/ssh-audit-hardening.conf" >/etc/ssh/sshd_config.d/ssh-audit_hardening.conf
|
||||||
chmod og-rwx /etc/ssh/sshd_config.d/*
|
chmod og-rwx /etc/ssh/sshd_config.d/*
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -4,10 +4,10 @@
|
|||||||
#Core framework functions...
|
#Core framework functions...
|
||||||
#########################################
|
#########################################
|
||||||
|
|
||||||
export PROJECT_ROOT_PATH
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
PROJECT_ROOT_PATH="$(realpath ../../../)"
|
|
||||||
|
|
||||||
#Framework variables are read from here
|
export PROJECT_ROOT_PATH
|
||||||
|
PROJECT_ROOT_PATH="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
||||||
|
|
||||||
export GIT_VENDOR_PATH_ROOT
|
export GIT_VENDOR_PATH_ROOT
|
||||||
GIT_VENDOR_PATH_ROOT="$PROJECT_ROOT_PATH/vendor/git@git.knownelement.com/29418/"
|
GIT_VENDOR_PATH_ROOT="$PROJECT_ROOT_PATH/vendor/git@git.knownelement.com/29418/"
|
||||||
@@ -15,19 +15,16 @@ GIT_VENDOR_PATH_ROOT="$PROJECT_ROOT_PATH/vendor/git@git.knownelement.com/29418/"
|
|||||||
export KNELShellFrameworkRoot
|
export KNELShellFrameworkRoot
|
||||||
KNELShellFrameworkRoot="$GIT_VENDOR_PATH_ROOT/KNEL/KNELShellFramework"
|
KNELShellFrameworkRoot="$GIT_VENDOR_PATH_ROOT/KNEL/KNELShellFramework"
|
||||||
|
|
||||||
source $KNELShellFrameworkRoot/Framework-ConfigFiles/FrameworkVars
|
source "$KNELShellFrameworkRoot/Framework-ConfigFiles/FrameworkVars"
|
||||||
|
|
||||||
for framework_include_file in $KNELShellFrameworkRoot/Framework-Includes/*; do
|
for framework_include_file in "$KNELShellFrameworkRoot"/Framework-Includes/*; do
|
||||||
source "$framework_include_file"
|
source "$framework_include_file"
|
||||||
done
|
done
|
||||||
|
|
||||||
for project_include_file in ../../../Project-Includes/*; do
|
for project_include_file in "$PROJECT_ROOT_PATH"/Project-Includes/*; do
|
||||||
source "$project_include_file"
|
source "$project_include_file"
|
||||||
done
|
done
|
||||||
|
|
||||||
#Framework variables are read from hee
|
|
||||||
source $KNELShellFrameworkRoot/Framework-ConfigFiles/FrameworkVars
|
|
||||||
|
|
||||||
|
|
||||||
#########################################
|
#########################################
|
||||||
# Core script code begins here
|
# Core script code begins here
|
||||||
|
|||||||
@@ -5,11 +5,10 @@
|
|||||||
#####
|
#####
|
||||||
|
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
export PROJECT_ROOT_PATH
|
export PROJECT_ROOT_PATH
|
||||||
PROJECT_ROOT_PATH="$(realpath ../)"
|
PROJECT_ROOT_PATH="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||||
|
|
||||||
#Framework variables are read from hee
|
|
||||||
|
|
||||||
|
|
||||||
export GIT_VENDOR_PATH_ROOT
|
export GIT_VENDOR_PATH_ROOT
|
||||||
GIT_VENDOR_PATH_ROOT="$PROJECT_ROOT_PATH/vendor/git@git.knownelement.com/29418/"
|
GIT_VENDOR_PATH_ROOT="$PROJECT_ROOT_PATH/vendor/git@git.knownelement.com/29418/"
|
||||||
@@ -17,13 +16,22 @@ GIT_VENDOR_PATH_ROOT="$PROJECT_ROOT_PATH/vendor/git@git.knownelement.com/29418/"
|
|||||||
export KNELShellFrameworkRoot
|
export KNELShellFrameworkRoot
|
||||||
KNELShellFrameworkRoot="$GIT_VENDOR_PATH_ROOT/KNEL/KNELShellFramework"
|
KNELShellFrameworkRoot="$GIT_VENDOR_PATH_ROOT/KNEL/KNELShellFramework"
|
||||||
|
|
||||||
source $KNELShellFrameworkRoot/Framework-ConfigFiles/FrameworkVars
|
export CONFIGFILES_PATH
|
||||||
|
CONFIGFILES_PATH="$PROJECT_ROOT_PATH/ProjectCode/ConfigFiles"
|
||||||
|
|
||||||
for framework_include_file in $KNELShellFrameworkRoot/Framework-Includes/*; do
|
export MODULES_PATH
|
||||||
|
MODULES_PATH="$PROJECT_ROOT_PATH/ProjectCode/Modules"
|
||||||
|
|
||||||
|
export SCRIPTS_PATH
|
||||||
|
SCRIPTS_PATH="$PROJECT_ROOT_PATH/ProjectCode/scripts"
|
||||||
|
|
||||||
|
source "$KNELShellFrameworkRoot/Framework-ConfigFiles/FrameworkVars"
|
||||||
|
|
||||||
|
for framework_include_file in "$KNELShellFrameworkRoot"/Framework-Includes/*; do
|
||||||
source "$framework_include_file"
|
source "$framework_include_file"
|
||||||
done
|
done
|
||||||
|
|
||||||
for project_include_file in ../Project-Includes/*; do
|
for project_include_file in "$PROJECT_ROOT_PATH"/Project-Includes/*; do
|
||||||
source "$project_include_file"
|
source "$project_include_file"
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -47,9 +55,6 @@ SUBODEV_CHECK="$(getent passwd | grep -c subodev || true)"
|
|||||||
export LOCALUSER_CHECK
|
export LOCALUSER_CHECK
|
||||||
LOCALUSER_CHECK="$(getent passwd | grep -c localuser || true)"
|
LOCALUSER_CHECK="$(getent passwd | grep -c localuser || true)"
|
||||||
|
|
||||||
export DL_ROOT
|
|
||||||
DL_ROOT="https://dl.knownelement.com/KNEL/FetchApply/"
|
|
||||||
|
|
||||||
#######################
|
#######################
|
||||||
# Support functions
|
# Support functions
|
||||||
#######################
|
#######################
|
||||||
@@ -57,11 +62,9 @@ DL_ROOT="https://dl.knownelement.com/KNEL/FetchApply/"
|
|||||||
function global-oam() {
|
function global-oam() {
|
||||||
print_info "Now running $FUNCNAME...."
|
print_info "Now running $FUNCNAME...."
|
||||||
|
|
||||||
cat ./scripts/up2date.sh >/usr/local/bin/up2date.sh && chmod +x /usr/local/bin/up2date.sh
|
cat "$SCRIPTS_PATH/up2date.sh" >/usr/local/bin/up2date.sh && chmod +x /usr/local/bin/up2date.sh
|
||||||
|
|
||||||
cd Modules/OAM || exit
|
bash "$MODULES_PATH/OAM/oam-librenms.sh"
|
||||||
bash ./oam-librenms.sh
|
|
||||||
cd - || exit
|
|
||||||
|
|
||||||
print_info "Completed running $FUNCNAME"
|
print_info "Completed running $FUNCNAME"
|
||||||
|
|
||||||
@@ -70,9 +73,9 @@ function global-oam() {
|
|||||||
function global-systemServiceConfigurationFiles() {
|
function global-systemServiceConfigurationFiles() {
|
||||||
print_info "Now running $FUNCNAME...."
|
print_info "Now running $FUNCNAME...."
|
||||||
|
|
||||||
curl --silent ${DL_ROOT}/ProjectCode/ConfigFiles/ZSH/tsys-zshrc >/etc/zshrc
|
cat "$CONFIGFILES_PATH/ZSH/tsys-zshrc" >/etc/zshrc
|
||||||
curl --silent ${DL_ROOT}/ProjectCode/ConfigFiles/SMTP/aliases >/etc/aliases
|
cat "$CONFIGFILES_PATH/SMTP/aliases" >/etc/aliases
|
||||||
curl --silent ${DL_ROOT}/ProjectCode/ConfigFiles/Syslog/rsyslog.conf >/etc/rsyslog.conf
|
cat "$CONFIGFILES_PATH/Syslog/rsyslog.conf" >/etc/rsyslog.conf
|
||||||
|
|
||||||
newaliases
|
newaliases
|
||||||
|
|
||||||
@@ -235,7 +238,7 @@ function global-postPackageConfiguration() {
|
|||||||
|
|
||||||
systemctl stop postfix
|
systemctl stop postfix
|
||||||
|
|
||||||
curl --silent ${DL_ROOT}/ProjectCode/ConfigFiles/SMTP/postfix_generic >/etc/postfix/generic
|
cat "$CONFIGFILES_PATH/SMTP/postfix_generic" >/etc/postfix/generic
|
||||||
postmap /etc/postfix/generic
|
postmap /etc/postfix/generic
|
||||||
|
|
||||||
postconf -e "inet_protocols = ipv4"
|
postconf -e "inet_protocols = ipv4"
|
||||||
@@ -262,33 +265,33 @@ function global-postPackageConfiguration() {
|
|||||||
|
|
||||||
###Post package deployment bits
|
###Post package deployment bits
|
||||||
|
|
||||||
curl --silent ${DL_ROOT}/ProjectCode/ConfigFiles/DHCP/dhclient.conf >/etc/dhcp/dhclient.conf
|
cat "$CONFIGFILES_PATH/DHCP/dhclient.conf" >/etc/dhcp/dhclient.conf
|
||||||
|
|
||||||
systemctl stop snmpd && /etc/init.d/snmpd stop
|
systemctl stop snmpd && /etc/init.d/snmpd stop
|
||||||
|
|
||||||
cat ./ConfigFiles/SNMP/snmp-sudo.conf >/etc/sudoers.d/Debian-snmp
|
cat "$CONFIGFILES_PATH/SNMP/snmp-sudo.conf" >/etc/sudoers.d/Debian-snmp
|
||||||
sed -i "s|-Lsd|-LS6d|" /lib/systemd/system/snmpd.service
|
sed -i "s|-Lsd|-LS6d|" /lib/systemd/system/snmpd.service
|
||||||
|
|
||||||
pi-detect
|
pi-detect
|
||||||
|
|
||||||
if [ "$IS_RASPI" = 1 ]; then
|
if [ "$IS_RASPI" = 1 ]; then
|
||||||
cat ./ConfigFiles/SNMP/snmpd-rpi.conf >/etc/snmp/snmpd.conf || true
|
cat "$CONFIGFILES_PATH/SNMP/snmpd-rpi.conf" >/etc/snmp/snmpd.conf || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$IS_PHYSICAL_HOST" = 1 ]; then
|
if [ "$IS_PHYSICAL_HOST" = 1 ]; then
|
||||||
cat ./ConfigFiles/SNMP/snmpd-physicalhost.conf >/etc/snmp/snmpd.conf || true
|
cat "$CONFIGFILES_PATH/SNMP/snmpd-physicalhost.conf" >/etc/snmp/snmpd.conf || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$IS_VIRT_GUEST" = 1 ]; then
|
if [ "$IS_VIRT_GUEST" = 1 ]; then
|
||||||
cat ./ConfigFiles/SNMP/snmpd.conf >/etc/snmp/snmpd.conf || true
|
cat "$CONFIGFILES_PATH/SNMP/snmpd.conf" >/etc/snmp/snmpd.conf || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
systemctl daemon-reload && systemctl restart snmpd && /etc/init.d/snmpd restart
|
systemctl daemon-reload && systemctl restart snmpd && /etc/init.d/snmpd restart
|
||||||
|
|
||||||
cat ./ConfigFiles/NetworkDiscovery/lldpd >/etc/default/lldpd
|
cat "$CONFIGFILES_PATH/NetworkDiscovery/lldpd" >/etc/default/lldpd
|
||||||
systemctl restart lldpd
|
systemctl restart lldpd
|
||||||
|
|
||||||
cat ./ConfigFiles/Cockpit/disallowed-users >/etc/cockpit/disallowed-users
|
cat "$CONFIGFILES_PATH/Cockpit/disallowed-users" >/etc/cockpit/disallowed-users
|
||||||
systemctl restart cockpit
|
systemctl restart cockpit
|
||||||
|
|
||||||
export LIBRENMS_CHECK
|
export LIBRENMS_CHECK
|
||||||
@@ -305,7 +308,7 @@ function global-postPackageConfiguration() {
|
|||||||
|
|
||||||
if [ "$NTP_SERVER_CHECK" -eq 0 ]; then
|
if [ "$NTP_SERVER_CHECK" -eq 0 ]; then
|
||||||
|
|
||||||
cat ./ConfigFiles/NTP/ntp.conf >/etc/ntpsec/ntp.conf
|
cat "$CONFIGFILES_PATH/NTP/ntp.conf" >/etc/ntpsec/ntp.conf
|
||||||
systemctl restart ntpsec.service
|
systemctl restart ntpsec.service
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -346,42 +349,32 @@ function global-postPackageConfiguration() {
|
|||||||
function secharden-ssh() {
|
function secharden-ssh() {
|
||||||
print_info "Now running $FUNCNAME"
|
print_info "Now running $FUNCNAME"
|
||||||
|
|
||||||
cd ./Modules/Security || exit
|
bash "$MODULES_PATH/Security/secharden-ssh.sh"
|
||||||
bash ./secharden-ssh.sh
|
|
||||||
cd -
|
|
||||||
|
|
||||||
print_info "Completed running $FUNCNAME"
|
print_info "Completed running $FUNCNAME"
|
||||||
}
|
}
|
||||||
|
|
||||||
function secharden-wazuh() {
|
function secharden-wazuh() {
|
||||||
print_info "Now running $FUNCNAME"
|
print_info "Now running $FUNCNAME"
|
||||||
cd ./Modules/Security || exit
|
bash "$MODULES_PATH/Security/secharden-wazuh.sh"
|
||||||
bash ./secharden-wazuh.sh
|
|
||||||
cd -
|
|
||||||
print_info "Completed running $FUNCNAME"
|
print_info "Completed running $FUNCNAME"
|
||||||
}
|
}
|
||||||
|
|
||||||
function secharden-2fa() {
|
function secharden-2fa() {
|
||||||
print_info "Now running $FUNCNAME"
|
print_info "Now running $FUNCNAME"
|
||||||
cd ./Modules/Security || exit
|
bash "$MODULES_PATH/Security/secharden-2fa.sh"
|
||||||
bash ./secharden-2fa.sh
|
|
||||||
cd -
|
|
||||||
print_info "Completed running $FUNCNAME"
|
print_info "Completed running $FUNCNAME"
|
||||||
}
|
}
|
||||||
|
|
||||||
function secharden-scap-stig() {
|
function secharden-scap-stig() {
|
||||||
print_info "Now running $FUNCNAME"
|
print_info "Now running $FUNCNAME"
|
||||||
cd ./Modules/Security || exit
|
bash "$MODULES_PATH/Security/secharden-scap-stig.sh"
|
||||||
bash ./secharden-scap-stig.sh
|
|
||||||
cd -
|
|
||||||
print_info "Completed running $FUNCNAME"
|
print_info "Completed running $FUNCNAME"
|
||||||
}
|
}
|
||||||
|
|
||||||
function secharden-agents() {
|
function secharden-agents() {
|
||||||
print_info "Now running $FUNCNAME"
|
print_info "Now running $FUNCNAME"
|
||||||
cd ./Modules/Security || exit
|
bash "$MODULES_PATH/Security/secharden-audit-agents.sh"
|
||||||
bash ./secharden-audit-agents.sh
|
|
||||||
cd -
|
|
||||||
print_info "Completed running $FUNCNAME"
|
print_info "Completed running $FUNCNAME"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user