Compare commits
15 Commits
man
...
98a2a30961
Author | SHA1 | Date | |
---|---|---|---|
98a2a30961
|
|||
6fc42cc949
|
|||
991f4bed90
|
|||
9051d524f6
|
|||
703d0d01e8
|
|||
53b4d0e041
|
|||
fe14e0aacc
|
|||
ed9ef924d3
|
|||
e0be97277a
|
|||
13253824c6
|
|||
26ffee17be
|
|||
f60153aca6
|
|||
7d66d5c55e
|
|||
e44620521f
|
|||
49c1417b8a
|
46
Makefile
46
Makefile
@@ -5,13 +5,36 @@ help: ## Print the help message
|
|||||||
sort | \
|
sort | \
|
||||||
column -s ':' -t
|
column -s ':' -t
|
||||||
|
|
||||||
map.txt: map.ge ## Making map.txt
|
.PHONY: check
|
||||||
grep -v '# unimportant' $< | graph-easy --boxart > $@
|
check: ## Check you have all dependencies
|
||||||
cat $@
|
@command -v graph-easy >/dev/null || { echo "Install perl-graph-easy" && exit 1 ;}
|
||||||
|
@command -v recsel >/dev/null || { echo "Install recutils" && exit 1 ;}
|
||||||
|
@command -v lowdown >/dev/null || { echo "Install lowdown" && exit 1 ;}
|
||||||
|
@echo "All dependencies installed"
|
||||||
|
|
||||||
full_map.txt: map.ge ## Generating full_map.txt with graph-easy
|
########## Network Map ##########
|
||||||
graph-easy --boxart < $< > $@
|
|
||||||
cat $@
|
graph_cmd = graph-easy --boxart
|
||||||
|
|
||||||
|
queries = queries authqueries
|
||||||
|
|
||||||
|
query_formats = $(patsubst %, .dbs/%.txt, $(queries))
|
||||||
|
|
||||||
|
.dbs/:
|
||||||
|
mkdir $@
|
||||||
|
|
||||||
|
$(query_formats): .dbs/%.txt: | .dbs/
|
||||||
|
echo "[ {{name}} ] -- $(basename $(@F)) --> [ {{$(basename $(@F))}} ]" > $@
|
||||||
|
|
||||||
|
.PHONY: map
|
||||||
|
map: .dbs/network.txt ## Show a network map
|
||||||
|
$(graph_cmd) < $<
|
||||||
|
|
||||||
|
.dbs/network.txt: network.rec $(query_formats)
|
||||||
|
$(RM) .dbs/network.txt
|
||||||
|
$(foreach relation, $(queries), \
|
||||||
|
recsel $< -t lxc -e "$(relation) != ''" -p name,$(relation) | recfmt -f .dbs/$(relation).txt >> $@ ;\
|
||||||
|
)
|
||||||
|
|
||||||
########## Man Pages ##########
|
########## Man Pages ##########
|
||||||
|
|
||||||
@@ -29,6 +52,12 @@ krovmans = $(krov_docs:krov/%/README.md=$(mandir)/%.6)
|
|||||||
$(mandir)/%.6: krov/%/README.md
|
$(mandir)/%.6: krov/%/README.md
|
||||||
lowdown -stman $< > $@
|
lowdown -stman $< > $@
|
||||||
|
|
||||||
|
splint_docs != grep -rl "^section:" splintrs
|
||||||
|
splintmans = $(splint_docs:splintrs/%/README.md=$(mandir)/%.6)
|
||||||
|
|
||||||
|
$(mandir)/%.6: splintrs/%/README.md
|
||||||
|
lowdown -stman $< > $@
|
||||||
|
|
||||||
setup_docs != grep -rl "^section:" setup
|
setup_docs != grep -rl "^section:" setup
|
||||||
setupmans = $(setup_docs:setup/%.md=$(mandir)/%.6)
|
setupmans = $(setup_docs:setup/%.md=$(mandir)/%.6)
|
||||||
|
|
||||||
@@ -38,10 +67,10 @@ $(mandir)/%.6: setup/%.md
|
|||||||
$(mandir):
|
$(mandir):
|
||||||
mkdir -p $@
|
mkdir -p $@
|
||||||
|
|
||||||
$(kralmans) $(krovmans) $(setupmans) :| $(mandir)
|
$(kralmans) $(krovmans) $(splintmans) $(setupmans) :| $(mandir)
|
||||||
|
|
||||||
.PHONY: pages
|
.PHONY: pages
|
||||||
pages: $(kralmans) $(krovmans) $(setupmans)
|
pages: $(kralmans) $(krovmans) $(setupmans) $(splintmans)
|
||||||
$(info $(kralmans))
|
$(info $(kralmans))
|
||||||
@test ! $(command -v mandb) || mandb --user-db
|
@test ! $(command -v mandb) || mandb --user-db
|
||||||
$(info Open DMZ's man pages with 'man 6 <tab>')
|
$(info Open DMZ's man pages with 'man 6 <tab>')
|
||||||
@@ -50,3 +79,4 @@ pages: $(kralmans) $(krovmans) $(setupmans)
|
|||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(RM) $(kralmans) $(krovmans)
|
$(RM) $(kralmans) $(krovmans)
|
||||||
|
$(RM) -r .dbs
|
||||||
|
50
README.md
50
README.md
@@ -2,6 +2,11 @@ These setup files provide the text-only configurations for DMZ.
|
|||||||
|
|
||||||
*It should not contain private data.*
|
*It should not contain private data.*
|
||||||
|
|
||||||
|
# Dependencies
|
||||||
|
|
||||||
|
- `recutils`
|
||||||
|
- (optional) `graph-easy` (the package may be called `perl-graph-easy`)
|
||||||
|
|
||||||
# Aspirations
|
# Aspirations
|
||||||
|
|
||||||
- Each service should reside in its own directory.
|
- Each service should reside in its own directory.
|
||||||
@@ -15,3 +20,48 @@ These setup files provide the text-only configurations for DMZ.
|
|||||||
- Any maintenance scripts.
|
- Any maintenance scripts.
|
||||||
- Configurations should reside in shadow-directories, e.g. a backup `soft-serve`'s `config.yaml` should reside in this repo under `splint.rs/soft-serve/etc/soft/config.yaml`.
|
- Configurations should reside in shadow-directories, e.g. a backup `soft-serve`'s `config.yaml` should reside in this repo under `splint.rs/soft-serve/etc/soft/config.yaml`.
|
||||||
|
|
||||||
|
# Network Database
|
||||||
|
|
||||||
|
I have a half-baked plan to finally make use of plain-text databases, and it's already half-working.
|
||||||
|
Try these commands:
|
||||||
|
|
||||||
|
Ask what types of _rec_ords it contains:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
recinf network.rec
|
||||||
|
```
|
||||||
|
|
||||||
|
Select with `recsel`, then specify the type of record.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
recsel network.rec --type router
|
||||||
|
recsel network.rec --include-descriptors --type lxc
|
||||||
|
recsel network.rec -d -t lxc
|
||||||
|
recsel network.rec -d -t lxc --expression
|
||||||
|
```
|
||||||
|
|
||||||
|
User `-q` for a 'quick' selection, or `-e` for more precise selections.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
recsel network.rec --type lxc --quick wiki
|
||||||
|
recsel network.rec --type lxc -q nginx
|
||||||
|
recsel network.rec -t lxc --expression "name ~ 'nginx'"
|
||||||
|
recsel network.rec -t lxc --expression "name = 'nginx12'"
|
||||||
|
```
|
||||||
|
|
||||||
|
If you can select something, you can also set its fields with `recset`.
|
||||||
|
|
||||||
|
Use `-f` to set the field, and `-a` to add, or `-s` to set.
|
||||||
|
|
||||||
|
|
||||||
|
```sh
|
||||||
|
recset network.rec -t lxc --expression "name = 'nginx12'" -f proxies --add soft-serve
|
||||||
|
recsel network.rec -t lxc --expression "name = 'nginx11'" -p proxies[0]
|
||||||
|
recset network.rec -t lxc --expression "name = 'nginx11'" -f proxies[0] -s wiki9
|
||||||
|
```
|
||||||
|
|
||||||
|
Insert a new record with `recins`.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
recins network.rec -t lxc -r "name: bob" -r "service: bob" -r "host: moxx"
|
||||||
|
```
|
||||||
|
18
kn.mk
18
kn.mk
@@ -1,18 +0,0 @@
|
|||||||
all_docs != find krov/serverko -name README.md
|
|
||||||
|
|
||||||
path_to_docs = $(patsubst krov/%/README.md, docs/%.md, $(all_docs))
|
|
||||||
|
|
||||||
stripped_docs = $(notdir $(path_to_docs))
|
|
||||||
|
|
||||||
x:
|
|
||||||
$(info $(all_docs))
|
|
||||||
$(info $(stripped_docs))
|
|
||||||
|
|
||||||
docs/kralizec/%.md: kralizec/%/README.md
|
|
||||||
mkdir -p $(@D)
|
|
||||||
cp $< $@
|
|
||||||
|
|
||||||
docs/serverko/%.md: krov/serverko/%/README.md
|
|
||||||
mkdir -p $(@D)
|
|
||||||
cp $< $@
|
|
||||||
|
|
39
map.ge
39
map.ge
@@ -1,39 +0,0 @@
|
|||||||
# Network map of Decentrala. Use with:
|
|
||||||
# graph-easy --boxart < netmap.txt
|
|
||||||
|
|
||||||
(Mox
|
|
||||||
[ m_router ]{label: router ;}
|
|
||||||
[ wireguard ] --> [ m_nginx ]{label: nginx-11 ;}
|
|
||||||
[ wiki ] --> [ m_nginx ]
|
|
||||||
[ gitea ] --> [ m_nginx ]
|
|
||||||
[ tor11 ] --> [ m_nginx ] --> [ m_router ]
|
|
||||||
[ smtp ]
|
|
||||||
)
|
|
||||||
|
|
||||||
(Serverko
|
|
||||||
[ s_nginx ]{label: nginx-12 ;}
|
|
||||||
[ s_router ]{label: router ;}
|
|
||||||
[ s_nginx ] --> [ nextcloud ]
|
|
||||||
[ s_nginx ] --> [ tor12 ]
|
|
||||||
[ s_nginx ] --> [ s_router ]
|
|
||||||
)
|
|
||||||
|
|
||||||
(splint.rs # unimportant
|
|
||||||
[ soft-serve ] # unimportant
|
|
||||||
[ mail-cache ]# unimportant
|
|
||||||
) # unimportant
|
|
||||||
|
|
||||||
[ tor12 ] <..> [ onions ] <..> [ tor11 ]
|
|
||||||
[ m_router ] <..> [ BGP ] <..> [ madness ] <..> [ s_router ]
|
|
||||||
[ smtp ] <..> [ madness ]
|
|
||||||
[ madness ] <..> [ mail-cache ]# unimportant
|
|
||||||
[ A ]{label: "" ;}
|
|
||||||
[ B ]{label: "" ;}
|
|
||||||
[ C ]{label: "" ;}
|
|
||||||
[ D ]{label: "" ;}
|
|
||||||
[ onions ] <..> [ A ]
|
|
||||||
[ onions ] <..> [ B ]
|
|
||||||
[ A ] <..> [ C ]
|
|
||||||
[ B ] <..> [ D ]
|
|
||||||
|
|
||||||
(Sharks! [ D ])
|
|
88
network.rec
Normal file
88
network.rec
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
%rec: router
|
||||||
|
%doc: Routers, or possibly modems?
|
||||||
|
|
||||||
|
name: ISP Router
|
||||||
|
location: kralizec
|
||||||
|
ISP: Orion
|
||||||
|
|
||||||
|
name: ISP Router
|
||||||
|
location: krov
|
||||||
|
ISP: Yettel
|
||||||
|
|
||||||
|
%rec: host
|
||||||
|
%doc: These are the real machines, most of which run VMs or containters.
|
||||||
|
%key: name
|
||||||
|
|
||||||
|
name: moxx
|
||||||
|
location: kralizec
|
||||||
|
|
||||||
|
name: Serverko
|
||||||
|
location: krov
|
||||||
|
|
||||||
|
%rec: lxc
|
||||||
|
%doc: A container, usually on a Proxmox host.
|
||||||
|
%type: host rec host
|
||||||
|
|
||||||
|
name: nginx11
|
||||||
|
gateway: ISP-router
|
||||||
|
host: moxx
|
||||||
|
proxies: wiki11
|
||||||
|
proxies: gitea11
|
||||||
|
proxies: forum11
|
||||||
|
proxies: ejabberd11
|
||||||
|
proxies: dmzrs
|
||||||
|
|
||||||
|
name: LDAP
|
||||||
|
host: moxx
|
||||||
|
|
||||||
|
name: website
|
||||||
|
host: moxx
|
||||||
|
authqueries: LDAP
|
||||||
|
queries: postgresql11
|
||||||
|
service: dmzrs
|
||||||
|
service: flask accounts
|
||||||
|
|
||||||
|
name: gitea11
|
||||||
|
service: gitea
|
||||||
|
host: moxx
|
||||||
|
authqueries: LDAP
|
||||||
|
queries: postgresql11
|
||||||
|
|
||||||
|
name: ejabberd11
|
||||||
|
service: ejabberd
|
||||||
|
host: moxx
|
||||||
|
authqueries: LDAP
|
||||||
|
queries: postgresql11
|
||||||
|
|
||||||
|
name: forum11
|
||||||
|
service: forum
|
||||||
|
host: moxx
|
||||||
|
authqueries: LDAP
|
||||||
|
queries: postgresql11
|
||||||
|
|
||||||
|
name: postfix11
|
||||||
|
service: postfix
|
||||||
|
authqueries: LDAP
|
||||||
|
|
||||||
|
name: tor11
|
||||||
|
service: tor
|
||||||
|
host: moxx
|
||||||
|
|
||||||
|
name: postgresql11
|
||||||
|
service: postgresql
|
||||||
|
host: moxx
|
||||||
|
|
||||||
|
name: wiki11
|
||||||
|
service: wiki
|
||||||
|
host: moxx
|
||||||
|
authqueries: LDAP
|
||||||
|
|
||||||
|
name: nginx12
|
||||||
|
host: Serverko
|
||||||
|
|
||||||
|
name: nextcloud
|
||||||
|
host: Serverko
|
||||||
|
|
||||||
|
name: tor12
|
||||||
|
host: nginx
|
||||||
|
|
@@ -1,62 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# If you want to add these passwords to the `pass` program, you can
|
|
||||||
# symlink all the passwords which you can open, then open the
|
|
||||||
# passwords with a script like this.
|
|
||||||
|
|
||||||
pass_store=~/.password-store
|
|
||||||
|
|
||||||
# THIS_PLACE="$PWD"
|
|
||||||
# mkdir $pass_store/dmz
|
|
||||||
# cd !$
|
|
||||||
# find "$THIS_PLACE" -type f -name "*.gpg" | \
|
|
||||||
# sed "s#/home/ghost#../..#" | \
|
|
||||||
# while read -r line; do
|
|
||||||
# gpg -d "$line" && ln -sf "$line" .
|
|
||||||
# done
|
|
||||||
|
|
||||||
|
|
||||||
sanity_check(){
|
|
||||||
command -v $1 >/dev/null || (
|
|
||||||
echo "You must install $1"
|
|
||||||
exit 1
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
set_selector_if_program_exists(){
|
|
||||||
command -v "$1" > /dev/null && selector="$1 $2"
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ -z "$DISPLAY" ]; then
|
|
||||||
set_selector_if_program_exists sk || \
|
|
||||||
set_selector_if_program_exists fzy || \
|
|
||||||
set_selector_if_program_exists fzf
|
|
||||||
fail_sender='echo'
|
|
||||||
else
|
|
||||||
set_selector_if_program_exists "rofi" 'rofi -dmenu "$@"' || \
|
|
||||||
set_selector_if_program_exists dmenu || \
|
|
||||||
(
|
|
||||||
echo "Cannot find anything to select a key. Install dmenu."
|
|
||||||
exit 1
|
|
||||||
)
|
|
||||||
fail_sender='notify-send'
|
|
||||||
fi
|
|
||||||
|
|
||||||
list_keys(){
|
|
||||||
find -L . -mindepth 1 -type f -name "*.gpg" | \
|
|
||||||
sed 's/\.\///' | \
|
|
||||||
sed 's/.gpg//'
|
|
||||||
}
|
|
||||||
|
|
||||||
####################
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
sanity_check pass
|
|
||||||
|
|
||||||
cd "$pass_store"
|
|
||||||
|
|
||||||
password="$(list_keys | $selector)"
|
|
||||||
|
|
||||||
pass -c "$password" || $fail_sender 'Cannot decrypt'
|
|
||||||
|
|
@@ -1,3 +1,9 @@
|
|||||||
|
---
|
||||||
|
source: Decentrala
|
||||||
|
section: 6
|
||||||
|
title: Soft-Serve Basics
|
||||||
|
---
|
||||||
|
|
||||||
Soft Serve has its configurations stored inside itself in a repo. Admins can pull:
|
Soft Serve has its configurations stored inside itself in a repo. Admins can pull:
|
||||||
|
|
||||||
`git clone ssh://soft.dmz.rs:2222/.soft-serve`
|
`git clone ssh://soft.dmz.rs:2222/.soft-serve`
|
||||||
|
@@ -1,3 +1,9 @@
|
|||||||
|
---
|
||||||
|
source: Decentrala
|
||||||
|
section: 6
|
||||||
|
title: Soft-Serve Webhooks
|
||||||
|
---
|
||||||
|
|
||||||
### Soft serve webhooks
|
### Soft serve webhooks
|
||||||
|
|
||||||
Soft serve supports [webhooks](https://en.wikipedia.org/wiki/Webhook)
|
Soft serve supports [webhooks](https://en.wikipedia.org/wiki/Webhook)
|
||||||
|
Reference in New Issue
Block a user