Compare commits
	
		
			14 Commits
		
	
	
		
			76e9650abe
			...
			64f9f6ffa3
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 64f9f6ffa3 | |||
| 40a4064ddb | |||
| 763748322a | |||
| fdb9cf9514 | |||
| 1d35d54af1 | |||
| 452970261e | |||
| 12644b80da | |||
| 4b9dae9b3a | |||
| 85479ec6ed | |||
| 9ff9633bc4 | |||
| 37b3d56676 | |||
| 0ecdda7302 | |||
| f08d2838e3 | |||
| 0f58a26e60 | 
							
								
								
									
										36
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								Makefile
									
									
									
									
									
								
							| @@ -5,13 +5,36 @@ help: ## Print the help message | ||||
| 		sort | \ | ||||
| 		column -s ':' -t | ||||
|  | ||||
| map.txt: map.ge ## Making map.txt | ||||
| 	grep -v '# unimportant' $< | graph-easy --boxart > $@ | ||||
| 	cat $@ | ||||
| .PHONY: check | ||||
| check: ## Check you have all dependencies | ||||
| 	@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 | ||||
| 	graph-easy --boxart < $< > $@ | ||||
| 	cat $@ | ||||
| ########## Network Map ########## | ||||
|  | ||||
| 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 ########## | ||||
|  | ||||
| @@ -56,3 +79,4 @@ pages: $(kralmans) $(krovmans) $(setupmans) $(splintmans) | ||||
|  | ||||
| clean: | ||||
| 	$(RM) $(kralmans) $(krovmans) | ||||
| 	$(RM) -r .dbs | ||||
|   | ||||
							
								
								
									
										63
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										63
									
								
								README.md
									
									
									
									
									
								
							| @@ -2,6 +2,11 @@ These setup files provide the text-only configurations for DMZ. | ||||
|  | ||||
| *It should not contain private data.* | ||||
|  | ||||
| # Dependencies | ||||
|  | ||||
| - `recutils` | ||||
| - (optional) `graph-easy` (the package may be called `perl-graph-easy`) | ||||
|  | ||||
| # Aspirations | ||||
|  | ||||
| - Each service should reside in its own directory. | ||||
| @@ -15,3 +20,61 @@ These setup files provide the text-only configurations for DMZ. | ||||
| - 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`. | ||||
|  | ||||
| # 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: | ||||
|  | ||||
| ## Database | ||||
|  | ||||
| ```sh | ||||
| recinf network.rec | ||||
| ``` | ||||
|  | ||||
| ### Select queries | ||||
|  | ||||
| Select with `recsel`, then specify the database (.rec) and type of record (like table in db). | ||||
|  | ||||
| `--include-descriptors` or `-d` | ||||
| `--type` or `-t` | ||||
| `--expression` or `-e` | ||||
| `--quick` or `-q` | ||||
|  | ||||
| ```sh | ||||
| recsel network.rec --type router | ||||
| recsel network.rec -d -t lxc | ||||
| recsel network.rec -d -t lxc -e ?example? | ||||
| ``` | ||||
|  | ||||
| User `-q` for a `--quick` selection, or `-e` for more precise selections. | ||||
|  | ||||
| ```sh | ||||
| recsel network.rec --type lxc --quick wiki | ||||
| recsel network.rec -t lxc -q nginx | ||||
| recsel network.rec -t lxc -e "name ~ 'nginx'" | ||||
| recsel network.rec -t lxc -e "name = 'nginx12'" | ||||
| ``` | ||||
|  | ||||
| ### Insert queries | ||||
|  | ||||
| Insert a new record with `recins`. | ||||
|  | ||||
| ```sh | ||||
| recins network.rec -t lxc -r "name: bob" -r "service: bob" -r "host: moxx" | ||||
| ``` | ||||
|  | ||||
| ### Update queries | ||||
|  | ||||
| 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 -e "name = 'nginx12'" -f proxies -a soft-serve | ||||
| recsel network.rec -t lxc -e "name = 'nginx11'" -p proxies[0] | ||||
| recset network.rec -t lxc -e" name = 'nginx11'" -f proxies[0] -s wiki9 | ||||
| ``` | ||||
|  | ||||
|   | ||||
							
								
								
									
										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 | ||||
|  | ||||
		Reference in New Issue
	
	Block a user