Utoljára aktív 1 month ago

Revízió 8c3494f58ec78c52b6b2e3815cf86f8f424faf68

context.sh Eredeti
1#!/usr/bin/env bash
2
3# ============================================
4# Static Context — resolved once at source time
5# ============================================
6
7_CTX_WG="/etc/wireguard"
8_CTX_WGCTL="/etc/wireguard/wgctl"
9_CTX_CLIENTS="${_CTX_WG}/clients"
10
11# ── Directory layout ──────────────────────────────────
12# .wgctl/
13# config/ ← wgctl.json, display.json
14# data/ ← all persistent data (rules, identities, etc.)
15# daemon/ ← runtime files (logs, caches)
16
17_CTX_WGCTL_ARTIFACT="${_CTX_WG}/.wgctl"
18_CTX_CONFIG="${_CTX_WGCTL_ARTIFACT}/config"
19_CTX_DATA="${_CTX_WGCTL_ARTIFACT}/data"
20_CTX_DAEMON="${_CTX_WGCTL_ARTIFACT}/daemon"
21
22# ── Data subdirs ──────────────────────────────────────
23_CTX_RULES="${_CTX_DATA}/rules"
24_CTX_RULES_BASE="${_CTX_RULES}/base"
25_CTX_GROUPS="${_CTX_DATA}/groups"
26_CTX_BLOCKS="${_CTX_DATA}/blocks"
27_CTX_META="${_CTX_DATA}/meta"
28_CTX_IDENTITY="${_CTX_DATA}/identities"
29_CTX_PEER_HISTORY="${_CTX_DATA}/peer-history"
30
31# ── Data files ────────────────────────────────────────
32_CTX_NET="${_CTX_DATA}/services.json"
33_CTX_HOSTS="${_CTX_DATA}/hosts.json"
34_CTX_SUBNETS="${_CTX_DATA}/subnets.json"
35_CTX_POLICIES="${_CTX_DATA}/policies.json"
36
37# ── Config files ──────────────────────────────────────
38_CTX_CONFIG_FILE="${_CTX_CONFIG}/wgctl.json"
39
40# ============================================
41# Accessors
42# ============================================
43
44function ctx::wg() { echo "$_CTX_WG"; }
45function ctx::clients() { echo "$_CTX_CLIENTS"; }
46
47# Top-level dirs
48function ctx::wgctl() { echo "$_CTX_WGCTL_ARTIFACT"; } # needs to change to ctx::wgctl_artifact or ctx::artifact
49function ctx::config() { echo "$_CTX_CONFIG"; }
50function ctx::data() { echo "$_CTX_DATA"; }
51function ctx::daemon() { echo "$_CTX_DAEMON"; }
52
53# Data subdirs
54function ctx::rules() { echo "$_CTX_RULES"; }
55function ctx::rules::base() { echo "$_CTX_RULES_BASE"; }
56function ctx::groups() { echo "$_CTX_GROUPS"; }
57function ctx::blocks() { echo "$_CTX_BLOCKS"; }
58function ctx::meta() { echo "$_CTX_META"; }
59function ctx::identities() { echo "$_CTX_IDENTITY"; }
60function ctx::peer_history() { echo "$_CTX_PEER_HISTORY"; }
61
62# Data files
63function ctx::net() { echo "$_CTX_NET"; }
64function ctx::hosts() { echo "$_CTX_HOSTS"; }
65function ctx::subnets() { echo "$_CTX_SUBNETS"; }
66function ctx::policies() { echo "$_CTX_POLICIES"; }
67
68# Config files
69function ctx::config_file() { echo "$_CTX_CONFIG_FILE"; }
70function ctx::display() { echo "${_CTX_CONFIG}/display.json"; }
71
72# Daemon files
73function ctx::events_log() { echo "${_CTX_DAEMON}/events.log"; }
74function ctx::fw_events_log() { echo "${_CTX_DAEMON}/fw_events.log"; }
75function ctx::endpoint_cache() { echo "${_CTX_DAEMON}/endpoint_cache.json"; }
76function ctx::accept_events_log() { echo "${_CTX_DAEMON}/accept_events.log"; }
77
78# Tool paths
79function ctx::json_helper() { echo "${_CTX_WGCTL}/core/json_helper.py"; }
80function ctx::monitor_script() { echo "${_CTX_WGCTL}/daemon/wgctl-monitor.py"; }
81function ctx::lib() { echo "${_CTX_WGCTL}/core/lib"; }
82
83function ctx::block_history() { echo "${_CTX_DATA}/block-history"; }
84
85# ============================================
86# Path Helpers
87# ============================================
88
89function ctx::client::path() { local IFS="/"; echo "$_CTX_CLIENTS/$*"; }
90function ctx::meta::path() { local IFS="/"; echo "$_CTX_META/$*"; }
91function ctx::identity::path() { local IFS="/"; echo "$_CTX_IDENTITY/$*"; }
92function ctx::block::path() { local IFS="/"; echo "$_CTX_BLOCKS/$*"; }
93function ctx::group::path() { local IFS="/"; echo "$_CTX_GROUPS/$*"; }
94function ctx::rule::path() { local IFS="/"; echo "$_CTX_RULES/$*"; }