install.fairie/docs/scripts/after/run_onchange_after_27-tor.sh.tmpl.md

94 lines
3.8 KiB
Markdown
Raw Normal View History

---
title: Tor Configuration
description: This script applies the Tor configuration stored at `${XDG_CONFIG_HOME:-HOME/.config}/tor/torrc` to the system and then restarts Tor
sidebar_label: 27 Tor Configuration
slug: /scripts/after/run_onchange_after_27-tor.sh.tmpl
githubLocation: https://github.com/megabyte-labs/install.doctor/blob/master/home/.chezmoiscripts/universal/run_onchange_after_27-tor.sh.tmpl
scriptLocation: https://github.com/megabyte-labs/install.doctor/raw/master/home/.chezmoiscripts/universal/run_onchange_after_27-tor.sh.tmpl
repoLocation: home/.chezmoiscripts/universal/run_onchange_after_27-tor.sh.tmpl
---
# Tor Configuration
This script applies the Tor configuration stored at `${XDG_CONFIG_HOME:-HOME/.config}/tor/torrc` to the system and then restarts Tor
## Overview
Tor is a network that uses onion routing, originally published by the US Navy. It is leveraged by privacy enthusiasts
and other characters that deal with sensitive material, like journalists and people buying drugs on the internet.
This script:
1. Determines the system configuration file location
2. Applies the configuration stored at `${XDG_CONFIG_HOME:-HOME/.config}/tor/torrc`
3. Enables and restarts the Tor service with the new configuration
## Links
* [Tor configuration](https://github.com/megabyte-labs/install.doctor/tree/master/home/dot_config/tor/torrc)
## Source Code
```
{{- if and (ne .host.distro.family "windows") (ne .host.work true) -}}
#!/usr/bin/env bash
# @file Tor Configuration
# @brief This script applies the Tor configuration stored at `${XDG_CONFIG_HOME:-HOME/.config}/tor/torrc` to the system and then restarts Tor
# @description
# Tor is a network that uses onion routing, originally published by the US Navy. It is leveraged by privacy enthusiasts
# and other characters that deal with sensitive material, like journalists and people buying drugs on the internet.
# This script:
#
# 1. Determines the system configuration file location
# 2. Applies the configuration stored at `${XDG_CONFIG_HOME:-HOME/.config}/tor/torrc`
# 3. Enables and restarts the Tor service with the new configuration
#
# ## Links
#
# * [Tor configuration](https://github.com/megabyte-labs/install.doctor/tree/master/home/dot_config/tor/torrc)
# tor config hash: {{ include (joinPath .host.home ".config" "tor" "torrc") | sha256sum }}
{{ includeTemplate "universal/profile" }}
{{ includeTemplate "universal/logg" }}
# @description Determine the Tor configuration location by checking whether the system is macOS or Linux
if [ -d /Applications ] && [ -d /System ]; then
# macOS
TORRC_CONFIG_DIR=/usr/local/etc/tor
else
# Linux
TORRC_CONFIG_DIR=/etc/tor
fi
TORRC_CONFIG="$TORRC_CONFIG_DIR/torrc"
# @description Apply the configuration if the `torrc` binary is available in the `PATH`
if command -v toron > /dev/null; then
if [ -d "$TORRC_CONFIG_DIR" ]; then
# @description Copy the configuration from `${XDG_CONFIG_HOME:-$HOME/.config}/tor/torrc` to the system configuration file location
sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/tor/torrc" "$TORRC_CONFIG"
sudo chmod 600 "$TORRC_CONFIG"
# @description Enable and restart the Tor service
if [ -d /Applications ] && [ -d /System ]; then
# macOS
brew services restart tor
else
if [[ ! "$(test -d /proc && grep Microsoft /proc/version > /dev/null)" ]]; then
# Linux
sudo systemctl enable tor
sudo systemctl restart tor
else
logg info 'Environment is WSL so the Tor systemd service will not be enabled / restarted'
fi
fi
else
logg warn 'The '"$TORRC_CONFIG_DIR"' directory is missing'
fi
else
logg warn '`toron` is missing from the PATH'
fi
{{ end -}}
```