Created restart-wg.sh file
Created wireguard restart script, which compares wg0.conf part between [Interface] and first peer with previous version for changes, and, if there is any - restarts whole wireguard, if the only changes are done to peers, it calls "wg syncconf", eliminating client disconnection after pressing apply config problem.
This commit is contained in:
		
							parent
							
								
									aae63d1af9
								
							
						
					
					
						commit
						09abbdfcf0
					
				|  | @ -0,0 +1,27 @@ | ||||||
|  | #!/bin/bash | ||||||
|  | 
 | ||||||
|  | config="/etc/wireguard/wg0.conf" | ||||||
|  | old_config="/etc/wireguard/wg0.conf.old" | ||||||
|  | 
 | ||||||
|  | if [ ! -f $old_config ]; then | ||||||
|  |     awk '/Interface/,/# ID:/' $config | head -n -1 | tail -n +2 > $old_config | ||||||
|  |     echo "No old config found, restarting wireguard (wg-quick)" | ||||||
|  |     wg-quick down wg0 | ||||||
|  |     systemctl restart wg-quick@wg0.service | ||||||
|  |     exit 0 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | difference=$(diff <(awk '/Interface/,/# ID:/' $config | head -n -1 | tail -n +2) <(cat $old_config)) | ||||||
|  | 
 | ||||||
|  | if [ -n "$difference" ]; then | ||||||
|  |     awk '/Interface/,/# ID:/' $config | head -n -1 | tail -n +2 > $old_config | ||||||
|  |     echo "Changes to interface detected, restarting wireguard (wg-quick)" | ||||||
|  |     wg-quick down wg0 | ||||||
|  |     systemctl restart wg-quick@wg0.service | ||||||
|  |     exit 0 | ||||||
|  | else | ||||||
|  |     awk '/Interface/,/# ID:/' $config | head -n -1 | tail -n +2 > $old_config | ||||||
|  |     echo "No changes to interface detected, restarting wireguard (wg syncconf)" | ||||||
|  |     wg syncconf wg0 <(wg-quick strip wg0) | ||||||
|  |     exit 0 | ||||||
|  | fi | ||||||
		Loading…
	
		Reference in New Issue