Последняя активность 1 month ago

gistfile1.txt Исходник
1#!/usr/bin/env bash
2
3# ============================================
4# Static Context — resolved once at source time
5# ============================================
6
7_CTX_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
8_CTX_WG="/etc/wireguard"
9_CTX_CORE="${_CTX_ROOT}/core"
10_CTX_MODULES="${_CTX_ROOT}/modules"
11_CTX_COMMANDS="${_CTX_ROOT}/commands"
12_CTX_CLIENTS="${_CTX_WG}/clients"
13_CTX_DATA="${_CTX_WG}/.wgctl"
14
15# ============================================
16# Artifacts
17# ============================================
18
19_CTX_RULES="${_CTX_DATA}/rules"
20_CTX_RULES_BASE="${_CTX_RULES}/base"
21_CTX_GROUPS="${_CTX_DATA}/groups"
22_CTX_BLOCKS="${_CTX_DATA}/blocks"
23_CTX_META="${_CTX_DATA}/meta"
24_CTX_IDENTITY="${_CTX_DATA}/identities"
25_CTX_DAEMON="${_CTX_DATA}/daemon"
26_CTX_NET="${_CTX_DATA}/services.json"
27
28# ============================================
29
30function ctx::root() { echo "$_CTX_ROOT"; }
31function ctx::core() { echo "$_CTX_CORE"; }
32function ctx::modules() { echo "$_CTX_MODULES"; }
33function ctx::commands() { echo "$_CTX_COMMANDS"; }
34function ctx::blocks() { echo "$_CTX_BLOCKS"; }
35function ctx::groups() { echo "$_CTX_GROUPS"; }
36function ctx::rules() { echo "$_CTX_RULES"; }
37function ctx::rules::base() { echo "$_CTX_RULES_BASE"; }
38function ctx::clients() { echo "$_CTX_CLIENTS"; }
39function ctx::wg() { echo "$_CTX_WG"; }
40function ctx::data() { echo "$_CTX_DATA"; }
41function ctx::rules() { echo "$_CTX_RULES"; }
42function ctx::groups() { echo "$_CTX_GROUPS"; }
43function ctx::blocks() { echo "$_CTX_BLOCKS"; }
44function ctx::meta() { echo "$_CTX_META"; }
45function ctx::daemon() { echo "$_CTX_DAEMON"; }
46function ctx::net() { echo "$_CTX_NET"; }
47function ctx::identities() { echo "${_CTX_IDENTITY}"; }
48function ctx::policies() { echo "${_CTX_DATA}/policies.json"; }
49function ctx::subnets() { echo "${_CTX_DATA}/subnets.json"; }
50function ctx::hosts() { echo "${_CTX_DATA}/hosts.json"; }
51function ctx::events_log() { echo "$(ctx::daemon)/events.log"; }
52function ctx::fw_events_log() { echo "$(ctx::daemon)/fw_events.log"; }
53function ctx::json_helper() { echo "${_CTX_CORE}/json_helper.py"; }
54function ctx::monitor_script() { echo "${_CTX_ROOT}/daemon/wgctl-monitor.py"; }
55function ctx::endpoint_cache() { echo "${_CTX_DAEMON}/endpoint_cache.json"; }
56
57# ============================================
58# Path Helpers
59# ============================================
60
61function ctx::client::path() {
62 local IFS="/"
63 echo "$_CTX_CLIENTS/$*"
64}
65
66function ctx::meta::path() {
67 local IFS="/"
68 echo "$_CTX_META/$*"
69}
70
71function ctx::identity::path() {
72 local IFS="/"
73 echo "$_CTX_IDENTITY/$*"
74}
75
76function ctx::block::path() {
77 local IFS="/"
78 echo "$_CTX_BLOCKS/$*"
79}
80
81function ctx::group::path() {
82 local IFS="/"
83 echo "$_CTX_GROUPS/$*"
84}
85
86function ctx::rule::path() {
87 local IFS="/"
88 echo "$_CTX_RULES/$*"
89}