Compare commits
	
		
			131 Commits
		
	
	
		
			48777cf25c
			...
			prod
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 0d3931d738 | |||
| 7c93f25a5d | |||
| 8445b64d6b | |||
| 8dfb3fe2a6 | |||
| 5b749d2100 | |||
| 57ca267aa5 | |||
| 2ca308c287 | |||
| 40ee72b587 | |||
| 13bc98d7ef | |||
| d916637798 | |||
| 71d236d0ba | |||
| d81c424878 | |||
| 73e527640f | |||
| aa3075a9fc | |||
| 89cdf8157f | |||
| 4e0ff86295 | |||
| 305b8df6ff | |||
| 6a78933875 | |||
| 7095636915 | |||
| 80bba3b21b | |||
| d98bbb02a9 | |||
| 00c87328ab | |||
| b4cdea984e | |||
| 4651726268 | |||
| 3410cf4426 | |||
| d5393f60f3 | |||
| 5f882df33f | |||
| 0dfbd0bd68 | |||
| 0d5b095ad6 | |||
| 07e32decf8 | |||
| afc3b20785 | |||
| ed160da316 | |||
| 2f08b1414e | |||
| c279884da2 | |||
| df8b330893 | |||
| 08a7a22dde | |||
| 57243f65e3 | |||
| 35469851b3 | |||
| 2cf4a348c3 | |||
| 4a33adf073 | |||
| fb00d3e6bc | |||
| 267a260e90 | |||
| 03b9f7e1b2 | |||
| 57dc62a74a | |||
| f7c321bf23 | |||
| 130b243be3 | |||
| 400ef8400c | |||
| d35d9ccdd2 | |||
| a730919b43 | |||
| 4e9e714504 | |||
| c0ba27e782 | |||
| 6d2a822323 | |||
| a8e6e0b6c6 | |||
| 93b919f48b | |||
| 215e7dee69 | |||
| 70ac7bff94 | |||
| 54589ca033 | |||
| 2dd0303176 | |||
| 411f203024 | |||
| 9f22385040 | |||
| 103a79a7ee | |||
| 602376df5f | |||
| 95c87448c8 | |||
| df5421defe | |||
| 1e7e11ed91 | |||
| 07dc365410 | |||
| c248a3c048 | |||
| 16466fb0c8 | |||
| 86e3f40d36 | |||
| 8038e10364 | |||
| 295f29dece | |||
| 8181ee0848 | |||
| c87c4468b3 | |||
| e19902074a | |||
| c12b54d0dc | |||
| a5023b2ef7 | |||
| ad6601f17e | |||
| 8e3e284753 | |||
| df4efb2beb | |||
| c7d06da91e | |||
| 3e1b0cc961 | |||
| 2b551cbff5 | |||
| 64c77cbd20 | |||
| c8186d30da | |||
| 68e1e5a48f | |||
| f61fe14a94 | |||
| a03a1b6493 | |||
| d1f50523fb | |||
| 9339b590e0 | |||
| dfe0b26498 | |||
| 57f14fed8d | |||
| 23b16f5db4 | |||
| a15e0017a6 | |||
| a7e1d0d25a | |||
| b203eab7b5 | |||
| 6d4ac9bb69 | |||
| 5c8eb77f95 | |||
| 544519bbfa | |||
| 1ab1594f6c | |||
| ae4967bc04 | |||
| 0d72bc1ea9 | |||
| de9c886af2 | |||
| 8033efce93 | |||
| 2d9317e9de | |||
| b6066558e7 | |||
| 42306e4287 | |||
| f3cb825981 | |||
| 1db8c0b7b0 | |||
| 116087928d | |||
| b6e820570f | |||
| 1f41651409 | |||
| 5f63ad1a59 | |||
| 7305e3a90c | |||
| 1e65b565cd | |||
| c828131bad | |||
| 3bca080de1 | |||
| e308beec07 | |||
| e155d36ab4 | |||
| 4bb075b747 | |||
| 204a1fbb16 | |||
| 9bb813ea78 | |||
| 066c8132e9 | |||
| 9e61af8aa4 | |||
| 69c1093289 | |||
| c7c21bc2f8 | |||
| 466d8b5de5 | |||
| 1eb41df822 | |||
| 152635e0b3 | |||
| 17b78cc361 | |||
| a4ff66a9c9 | |||
| ea4d4070a6 | 
| @@ -6,6 +6,11 @@ | |||||||
|   set_fact: |   set_fact: | ||||||
|     sshfs: sshfs |     sshfs: sshfs | ||||||
|     tar: tar |     tar: tar | ||||||
|  |     iftop: iftop | ||||||
|  |     nethogs: nethogs | ||||||
|  |     ntp_server: chrony | ||||||
|  |     dig: dig | ||||||
|  |     neofetch: neofetch | ||||||
|  |  | ||||||
| - name: General | Facts | Packages | Parrot OS Fixes | - name: General | Facts | Packages | Parrot OS Fixes | ||||||
|   set_fact: |   set_fact: | ||||||
| @@ -21,8 +26,14 @@ | |||||||
|     microcode_intel: intel-microcode |     microcode_intel: intel-microcode | ||||||
|     cron: cron |     cron: cron | ||||||
|     encfs: encfs |     encfs: encfs | ||||||
|  |     dig: dnsutils | ||||||
|   when: ansible_pkg_mgr == "apt" |   when: ansible_pkg_mgr == "apt" | ||||||
|  |  | ||||||
|  | - name: General | Facts | Package | apt | Debian Trixie | ||||||
|  |   set_fact: | ||||||
|  |     neofetch: fastfetch | ||||||
|  |   when: ansible_pkg_mgr == "apt" and ansible_distribution_release == "trixie" | ||||||
|  |  | ||||||
| - name: General | Facts | Package | pacman | - name: General | Facts | Package | pacman | ||||||
|   set_fact: |   set_fact: | ||||||
|     locate: mlocate |     locate: mlocate | ||||||
| @@ -98,7 +109,7 @@ | |||||||
|             echo -e "******* Apt *******\n*** Update Cache ***" && |             echo -e "******* Apt *******\n*** Update Cache ***" && | ||||||
|             sudo apt update && |             sudo apt update && | ||||||
|             echo -e "\n*** Auto Remove ***" && |             echo -e "\n*** Auto Remove ***" && | ||||||
|             sudo apt autoremove {{ update_accept_var }} && |             sudo apt autoremove --purge {{ update_accept_var }} && | ||||||
|             echo -e "\n*** Clean ***" && |             echo -e "\n*** Clean ***" && | ||||||
|             sudo apt clean {{ update_accept_var }} && |             sudo apt clean {{ update_accept_var }} && | ||||||
|             echo -e "Cleaned!\n\n*** Configure DPKG ***" && |             echo -e "Cleaned!\n\n*** Configure DPKG ***" && | ||||||
| @@ -113,7 +124,7 @@ | |||||||
|             echo -e "******* Parrot *******\n*** Update Cache ***" && |             echo -e "******* Parrot *******\n*** Update Cache ***" && | ||||||
|             sudo apt update && |             sudo apt update && | ||||||
|             echo -e "\n*** Auto Remove ***" && |             echo -e "\n*** Auto Remove ***" && | ||||||
|             sudo apt autoremove {{ update_accept_var }} && |             sudo apt autoremove --purge {{ update_accept_var }} && | ||||||
|             parrot_mirrors_suck=true && |             parrot_mirrors_suck=true && | ||||||
|             while [[ $parrot_mirrors_suck ]]; do |             while [[ $parrot_mirrors_suck ]]; do | ||||||
|               unset parrot_mirrors_suck |               unset parrot_mirrors_suck | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ | |||||||
|     st_install_dir: /usr/local/src/st |     st_install_dir: /usr/local/src/st | ||||||
|     global_bin: /usr/local/bin |     global_bin: /usr/local/bin | ||||||
|     x_desktops: /usr/share/xsessions |     x_desktops: /usr/share/xsessions | ||||||
|     git_repo_http: http://{{ git_host }}/{{ git_user }}/{{ git_project }} |     git_repo_http: https://{{ git_host }}/{{ git_user }}/{{ git_project }} | ||||||
|     git_repo_ssh: ssh://git@{{ git_host }}:{{ git_ssh_port }}/{{ git_user }}/{{ git_project }} |     git_repo_ssh: ssh://git@{{ git_host }}:{{ git_ssh_port }}/{{ git_user }}/{{ git_project }} | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										57
									
								
								files/scripts/backup_system.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										57
									
								
								files/scripts/backup_system.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,57 @@ | |||||||
|  | #!/usr/bin/env bash | ||||||
|  |  | ||||||
|  | ## Variables ## | ||||||
|  |  | ||||||
|  | if [[ -z "$HOSTNAME" ]]; then | ||||||
|  | 	echo "*** Pulling Hostname From Command ***" | ||||||
|  | 	export HOSTNAME="`hostname`" | ||||||
|  | fi | ||||||
|  | if [[ -z "$HOSTNAME" ]]; then | ||||||
|  | 	echo "*** Pulling Hostname From /etc/ File ***" | ||||||
|  | 	export HOSTNAME="`cat /etc/hostname`" | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | EXTRA="$1" | ||||||
|  | TAG="System" | ||||||
|  | DATE="`date "+%Y%m%d-%H%M%S"`" | ||||||
|  | BACKUP_DIR="/srv/backup" | ||||||
|  | BASENAME="Backup" | ||||||
|  | BACKUP="$BACKUP_DIR/$BASENAME.$DATE.$HOSTNAME.$TAG.zip" | ||||||
|  |  | ||||||
|  | ## Initialization ## | ||||||
|  |  | ||||||
|  | echo "*** Creating Backup Directory ***" | ||||||
|  | sudo mkdir -pv "$BACKUP_DIR" | ||||||
|  | sudo mkdir -pv "$BACKUP_DIR/TRASH" | ||||||
|  | sudo chmod -Rv 775 "$BACKUP_DIR" | ||||||
|  | sudo chown -Rv root:root "$BACKUP_DIR" | ||||||
|  |  | ||||||
|  | ## Cleanup ## | ||||||
|  |  | ||||||
|  | echo "*** Removing Old Backups ***" | ||||||
|  | cd "$BACKUP_DIR" | ||||||
|  | sudo mv -v "$BASENAME"*"$TAG"* TRASH/ | ||||||
|  | sudo rm -v TRASH/* | ||||||
|  |  | ||||||
|  | ## Main | ||||||
|  |  | ||||||
|  | echo "*** Creating backup at '$BACKUP' ***" | ||||||
|  | sudo zip -rv "$BACKUP" \ | ||||||
|  | 	/etc /var/{log,mail,spool} /srv /boot \ | ||||||
|  | 	/usr/local/etc $EXTRA \ | ||||||
|  | 	-x "/srv/backup/*" | ||||||
|  | status="$?" | ||||||
|  |  | ||||||
|  | if [[ "$status" != 0 ]]; then | ||||||
|  | 	echo "*** ERROR: Failed to create '$BACKUP', file may be incorrect. ***" | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | if [[ -e "$BACKUP" ]]; then | ||||||
|  | 	ls -alh "$BACKUP" | ||||||
|  | 	echo "*** '$BACKUP' created successfully! ***" | ||||||
|  | else | ||||||
|  | 	echo "*** '$BACKUP' not found! ***" | ||||||
|  | 	exit 1 | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | exit 0 | ||||||
| @@ -60,7 +60,8 @@ while getopts ":s:l:rfFdcAhx" opt; do | |||||||
| 		F) super_force="Y" ;; | 		F) super_force="Y" ;; | ||||||
| 		d) delete="Y" ;; | 		d) delete="Y" ;; | ||||||
| 		c) clean="Y" ;; | 		c) clean="Y" ;; | ||||||
| 		A) recurse="Y" && search="find" && force="Y" && delete="Y" && clean="Y" ;; | 		e) expand="Y" ;; | ||||||
|  | 		A) recurse="Y" && search="find" && force="Y" && delete="Y" && expand="Y" ;; | ||||||
| 		h) usage 0 ;; | 		h) usage 0 ;; | ||||||
| 		x) set -x ;; | 		x) set -x ;; | ||||||
| 		*) echo "ERROR: Option $OPTARG not recognized." >&2 && usage 1 ;; | 		*) echo "ERROR: Option $OPTARG not recognized." >&2 && usage 1 ;; | ||||||
| @@ -74,7 +75,7 @@ if [[ -n "$in_size" && "$size" != "$in_size" ]]; then | |||||||
| 	usage 1 | 	usage 1 | ||||||
| fi | fi | ||||||
|  |  | ||||||
| convert_exe="`which convert`" | convert_exe="`which convert` -strip" | ||||||
| if [[ "$convert_exe" == "" ]]; then | if [[ "$convert_exe" == "" ]]; then | ||||||
| 	echo "ERROR: 'convert' command could not be found, " | 	echo "ERROR: 'convert' command could not be found, " | ||||||
| 	echo "please install 'imagemagick'." | 	echo "please install 'imagemagick'." | ||||||
| @@ -110,8 +111,7 @@ $search "$location" | sort | while read image; do | |||||||
| 		continue | 		continue | ||||||
| 	fi | 	fi | ||||||
|  |  | ||||||
|  | 	new_image="${image//.$extension/}.$tag-$date_YYYYMMDD.$size.$extension" | ||||||
| 	new_image="${image//.$extension/}.$tag-$date_YYYYMMDD-$size.$extension" |  | ||||||
|  |  | ||||||
| 	## Clean Filename ## | 	## Clean Filename ## | ||||||
| 	# Prevent directory from having its name cleaned too. | 	# Prevent directory from having its name cleaned too. | ||||||
| @@ -124,13 +124,31 @@ $search "$location" | sort | while read image; do | |||||||
| 	new_image_clean="${new_image_clean//-/}" | 	new_image_clean="${new_image_clean//-/}" | ||||||
| 	new_image_clean="${new_image_clean// /}" | 	new_image_clean="${new_image_clean// /}" | ||||||
|  |  | ||||||
| 	# Add directory back to the full path. | 	## Expanded Filename ## | ||||||
|  | 	# Add back in the dashes so that the year, month, date, and time are exposed. | ||||||
|  | 	TEMP="$new_image_clean" | ||||||
|  | 	# Date Data | ||||||
|  | 	new_image_exp="${TEMP:0:4}-${TEMP:4:2}-${TEMP:6:2}" | ||||||
|  | 	# Time Data | ||||||
|  | 	new_image_exp="${new_image_exp}_${TEMP:8:2}-${TEMP:10:2}-${TEMP:12:2}" | ||||||
|  | 	# Remainder Data | ||||||
|  | 	if [[ "${TEMP:14:1}" == "." ]]; then | ||||||
|  | 		SEP="" | ||||||
|  | 	else | ||||||
|  | 		SEP="_" | ||||||
|  | 	fi | ||||||
|  | 	new_image_exp="${new_image_exp}${SEP}${TEMP:14}" | ||||||
|  | 	unset TEMP SEP | ||||||
|  |  | ||||||
|  | 	# Add directory back to the full paths. | ||||||
| 	new_image_clean="$image_dirname/$new_image_clean" | 	new_image_clean="$image_dirname/$new_image_clean" | ||||||
|  | 	new_image_exp="$image_dirname/$new_image_exp" | ||||||
|  |  | ||||||
| 	# Delete the existing shrunk image if we are forcing a new compression. | 	# Delete the existing shrunk image if we are forcing a new compression. | ||||||
| 	if [[ -n "$force" && (-e "$new_image" || -e $new_image_clean) ]]; then | 	if [[ -n "$force" && | ||||||
|  | 			(-e "$new_image" || -e $new_image_clean || -e $new_image_exp ) ]]; then | ||||||
| 		echo -n "  FORCE: " | 		echo -n "  FORCE: " | ||||||
| 		rm -v "$new_image" "$new_image_clean" 2>/dev/null | 		rm -v "$new_image" "$new_image_clean" "$new_image_exp" 2>/dev/null | ||||||
| 	fi | 	fi | ||||||
|  |  | ||||||
| 	# Skip if a compressed image was already created today. | 	# Skip if a compressed image was already created today. | ||||||
| @@ -139,10 +157,14 @@ $search "$location" | sort | while read image; do | |||||||
| 		continue | 		continue | ||||||
| 	fi | 	fi | ||||||
|  |  | ||||||
| 	# Whether or not to use the cleaned version or the normal version. | 	# Whether or not to use the cleaned version. | ||||||
| 	if [[ -n $clean ]]; then | 	if [[ -n $clean ]]; then | ||||||
| 		new_image="$new_image_clean" | 		new_image="$new_image_clean" | ||||||
|  | 	# Whether or not to use the expanded version. | ||||||
|  | 	elif [[ -n $expand ]]; then | ||||||
|  | 		new_image="$new_image_exp" | ||||||
| 	fi | 	fi | ||||||
|  | 	# Otherwise uses the same name as before. | ||||||
|  |  | ||||||
| 	###### TBD Instead of this, only alter the file names, and set a dirname var? | 	###### TBD Instead of this, only alter the file names, and set a dirname var? | ||||||
| 	#### Create a new directory if the directory names were altered. | 	#### Create a new directory if the directory names were altered. | ||||||
|   | |||||||
| @@ -33,13 +33,13 @@ function usage { | |||||||
| 		             If nothing is provided, current directory (.) is assumed. | 		             If nothing is provided, current directory (.) is assumed. | ||||||
| 		  -v bitrate : The video bitrate to convert to. | 		  -v bitrate : The video bitrate to convert to. | ||||||
| 		               Defaults are based on the size passed. | 		               Defaults are based on the size passed. | ||||||
| 								>= 2160:   '30M' | 		                 >= 2160:   '30M' | ||||||
| 								>= 1440:   '12M' | 		                 >= 1440:   '12M' | ||||||
| 								>= 1080:    '5M' | 		                 >= 1080:    '5M' | ||||||
| 								>=  720: '2000k' | 		                 >=  720: '2000k' | ||||||
| 								>=  480:  '750k' | 		                 >=  480:  '750k' | ||||||
| 								>=  360:  '250k' | 		                 >=  360:  '250k' | ||||||
| 								 <  360:  '100k' | 		                  <  360:  '100k' | ||||||
| 		  -a bitrate : The audio bitrate to convert to. | 		  -a bitrate : The audio bitrate to convert to. | ||||||
| 		               Defaults to '192k'. | 		               Defaults to '192k'. | ||||||
| 		  -c vcodec : The video codec you'd like to use, such as libopenh264. | 		  -c vcodec : The video codec you'd like to use, such as libopenh264. | ||||||
| @@ -48,7 +48,8 @@ function usage { | |||||||
| 		  -r : Recurse the entire directory structure, compressing all video files. | 		  -r : Recurse the entire directory structure, compressing all video files. | ||||||
| 		  -f : Force recompressing any files by deleting it if it already exists. | 		  -f : Force recompressing any files by deleting it if it already exists. | ||||||
| 		  -d : Delete the original video if the compressed version is smaller. | 		  -d : Delete the original video if the compressed version is smaller. | ||||||
| 		  -A : Recursively Force and Delete. | 		  -l : Clean the filename of dashes and underscores so dates line up. | ||||||
|  | 		  -A : Recursively Force, Delete, and Clean. | ||||||
| 		  -m : Measure the time it takes to compress each video and do the loop. | 		  -m : Measure the time it takes to compress each video and do the loop. | ||||||
| 		  -V : Add verbosity, such as printing all the variable values. | 		  -V : Add verbosity, such as printing all the variable values. | ||||||
| 		  -x : Set the shell's x flag to display every action which is taken. | 		  -x : Set the shell's x flag to display every action which is taken. | ||||||
| @@ -59,7 +60,7 @@ function usage { | |||||||
|  |  | ||||||
| ## Parameters ## | ## Parameters ## | ||||||
|  |  | ||||||
| while getopts ":i:v:a:c:s:rfdAmVxh" opt; do | while getopts ":i:v:a:c:s:rfdlAmVxh" opt; do | ||||||
| 	case $opt in | 	case $opt in | ||||||
| 		i) input="$OPTARG" | 		i) input="$OPTARG" | ||||||
| 			;; | 			;; | ||||||
| @@ -77,7 +78,9 @@ while getopts ":i:v:a:c:s:rfdAmVxh" opt; do | |||||||
| 			;; | 			;; | ||||||
| 		d) delete="Y" | 		d) delete="Y" | ||||||
| 			;; | 			;; | ||||||
| 		A) search_command="find" && force="Y" && delete="Y" | 		l) clean="Y" | ||||||
|  | 			;; | ||||||
|  | 		A) search_command="find" && force="Y" && delete="Y" #&& clean="Y" | ||||||
| 			;; | 			;; | ||||||
| 		m) time_command="`which time`" | 		m) time_command="`which time`" | ||||||
| 			;; | 			;; | ||||||
| @@ -102,25 +105,38 @@ if [[ -z "$input" ]]; then | |||||||
| 	input="." | 	input="." | ||||||
| fi | fi | ||||||
|  |  | ||||||
|  | if [[ -z $size ]]; then | ||||||
|  | 	size="720" | ||||||
|  | fi | ||||||
|  | typeset -i size_int | ||||||
|  | size_int="$size" | ||||||
|  |  | ||||||
|  | # Ensure the filenames sort properly between 3 and 4 digit resolutions. | ||||||
|  | while (( ${#size} < 4 )); do | ||||||
|  |     size="0$size" | ||||||
|  | done | ||||||
|  | compress_tags="$size" | ||||||
|  | size="-filter:v scale=-2:$size" | ||||||
|  |  | ||||||
| if [[ -z "$video_bitrate" ]]; then | if [[ -z "$video_bitrate" ]]; then | ||||||
| 	# Based roughly on the 2.5 step iteration used for 720 and 1080. | 	# Based roughly on the 2.5 step iteration used for 720 and 1080. | ||||||
| 	if (( $size >= 2160 )); then | 	if (( size_int >= 2160 )); then | ||||||
| 		video_bitrate="30M" | 		video_bitrate="30M" | ||||||
| 	elif (( $size >= 1440 )); then | 	elif (( size_int >= 1440 )); then | ||||||
| 		video_bitrate="12M" | 		video_bitrate="12M" | ||||||
| 	elif (( $size >= 1080 )); then | 	elif (( size_int >= 1080 )); then | ||||||
| 		video_bitrate="5M" | 		video_bitrate="5M" | ||||||
| 	elif (( $size >= 720 )); then | 	elif (( size_int >= 720 )); then | ||||||
| 		video_bitrate="2000k" | 		video_bitrate="2000k" | ||||||
| 	elif (( $size >= 480 )); then | 	elif (( size_int >= 480 )); then | ||||||
| 		video_bitrate="750k" | 		video_bitrate="750k" | ||||||
| 	elif (( $size >= 360 )); then | 	elif (( size_int >= 360 )); then | ||||||
| 		video_bitrate="250k" | 		video_bitrate="250k" | ||||||
| 	else | 	else | ||||||
| 		video_bitrate="100k" | 		video_bitrate="100k" | ||||||
| 	fi | 	fi | ||||||
| fi | fi | ||||||
| compress_tags="$video_bitrate" | compress_tags="$compress_tags-$video_bitrate" | ||||||
| video_bitrate="-b:v $video_bitrate -minrate 0 -maxrate $video_bitrate -bufsize $video_bitrate" | video_bitrate="-b:v $video_bitrate -minrate 0 -maxrate $video_bitrate -bufsize $video_bitrate" | ||||||
|  |  | ||||||
| if [[ -z "$audio_bitrate" ]]; then | if [[ -z "$audio_bitrate" ]]; then | ||||||
| @@ -145,15 +161,6 @@ else | |||||||
| 	time_command="$time_command -p" | 	time_command="$time_command -p" | ||||||
| fi | fi | ||||||
|  |  | ||||||
| if [[ -z $size ]]; then |  | ||||||
| 	size="720" |  | ||||||
| fi |  | ||||||
| while (( ${#size} < 4 )); do |  | ||||||
|     size="0$size" |  | ||||||
| done |  | ||||||
| compress_tags="$size-$compress_tags" |  | ||||||
| size="-filter:v scale=-2:$size" |  | ||||||
|  |  | ||||||
| ## Main ## | ## Main ## | ||||||
|  |  | ||||||
| if [[ "$verbose" == "Y" ]]; then | if [[ "$verbose" == "Y" ]]; then | ||||||
| @@ -208,21 +215,33 @@ $search_command "$input" | sort | while read file; do | |||||||
| 		continue | 		continue | ||||||
| 	fi | 	fi | ||||||
|  |  | ||||||
|  | 	# TBD / TODO: Test this functionality! | ||||||
|  | 	new_video_clean="${newfile}" | ||||||
|  | 	new_video_clean="${new_video_clean//_/}" | ||||||
|  | 	new_video_clean="${new_video_clean//-/}" | ||||||
|  | 	new_video_clean="${new_video_clean// /}" | ||||||
|  |  | ||||||
| 	# More exception checks based on the new file. | 	# More exception checks based on the new file. | ||||||
| 	if [[ -e "$newfile" ]]; then | 	if [[ -e "$newfile" || -e "$new_video_clean" ]]; then | ||||||
| 		if [[ "$force" == "Y" ]]; then | 		if [[ "$force" == "Y" ]]; then | ||||||
| 			echo "FORCE: Removing '$newfile'." | 			echo "FORCE: Removing '$newfile'." | ||||||
| 			if [[ -d ~/TRASH ]]; then | 			if [[ -d ~/TRASH ]]; then | ||||||
| 				mv -v "$newfile" ~/TRASH/ | 				mv -v "$newfile" "$new_video_clean" ~/TRASH/ 2>/dev/null | ||||||
| 			else | 			else | ||||||
| 				rm -v "$newfile" | 				rm -v "$newfile" "$new_video_clean" 2>/dev/null | ||||||
| 			fi | 			fi | ||||||
| 		else | 		else | ||||||
| 			echo "SKIP: Already has a compressed version ($newfile)." | 			echo "SKIP: Already has a compressed version." | ||||||
|  | 			ls -sh "$newfile" "$new_video_clean" 2>/dev/null | ||||||
| 			continue | 			continue | ||||||
| 		fi | 		fi | ||||||
| 	fi | 	fi | ||||||
|  |  | ||||||
|  | 	# Whether or not to use the cleaned version or the normal version. | ||||||
|  | 	if [[ -n $clean ]]; then | ||||||
|  | 		newfile="$new_video_clean" | ||||||
|  | 	fi | ||||||
|  |  | ||||||
| 	# Convert the file. | 	# Convert the file. | ||||||
| 	echo "Converting to '$newfile'." | 	echo "Converting to '$newfile'." | ||||||
| 	echo "*** `date` ***" | 	echo "*** `date` ***" | ||||||
|   | |||||||
| @@ -12,6 +12,9 @@ | |||||||
| 	"editor.tabSize": 3, | 	"editor.tabSize": 3, | ||||||
| 	"editor.insertSpaces": false, | 	"editor.insertSpaces": false, | ||||||
| 	"files.insertFinalNewline": true, | 	"files.insertFinalNewline": true, | ||||||
|  | 	"[html]": { | ||||||
|  | 		"files.insertFinalNewline": false | ||||||
|  | 	}, | ||||||
| 	"files.trimFinalNewlines": true, | 	"files.trimFinalNewlines": true, | ||||||
| 	"git.confirmSync": false, | 	"git.confirmSync": false, | ||||||
|  |  | ||||||
|   | |||||||
| @@ -125,17 +125,17 @@ | |||||||
|  |  | ||||||
| - name: General | Account Management | Provisioning Configuration | General | Load | - name: General | Account Management | Provisioning Configuration | General | Load | ||||||
|   set_fact: |   set_fact: | ||||||
|     provision:  "{{ lookup('ini', 'enable     file={{gen_file}} default=false') }}" |     provision:  "{{ lookup('ini', 'enable     file={{gen_file}} default=false') | bool }}" | ||||||
|     user:       "{{ lookup('ini', 'user       file={{gen_file}} default=ling') }}" |     user:       "{{ lookup('ini', 'user       file={{gen_file}} default=ling') }}" | ||||||
|     user_desc:  "{{ lookup('ini', 'user_desc  file={{gen_file}} default=Hyperling') }}" |     user_desc:  "{{ lookup('ini', 'user_desc  file={{gen_file}} default=Hyperling') }}" | ||||||
|     branch:     "{{ lookup('ini', 'branch     file={{gen_file}} default=main') }}" |     branch:     "{{ lookup('ini', 'branch     file={{gen_file}} default=main') }}" | ||||||
|     pentesting: "{{ lookup('ini', 'pentesting file={{gen_file}} default=false') }}" |     pentesting: "{{ lookup('ini', 'pentesting file={{gen_file}} default=false') | bool }}" | ||||||
|     no_telem:   "{{ lookup('ini', 'no_telem   file={{gen_file}} default=false') }}" |     no_telem:   "{{ lookup('ini', 'no_telem   file={{gen_file}} default=false') | bool }}" | ||||||
|     battery:    "{{ lookup('ini', 'battery    file={{gen_file}} default=false') }}" |     battery:    "{{ lookup('ini', 'battery    file={{gen_file}} default=false') | bool }}" | ||||||
|     swap_block: "{{ lookup('ini', 'swap_block file={{gen_file}} default=false') }}" |     swap_block: "{{ lookup('ini', 'swap_block file={{gen_file}} default=false') }}" | ||||||
|     swap_count: "{{ lookup('ini', 'swap_count file={{gen_file}} default=1') }}" |     swap_count: "{{ lookup('ini', 'swap_count file={{gen_file}} default=1') }}" | ||||||
|     swap_file:  "{{ lookup('ini', 'swap_file  file={{gen_file}} default=/swapfile') }}" |     swap_file:  "{{ lookup('ini', 'swap_file  file={{gen_file}} default=/swapfile') }}" | ||||||
|     sshd_port:  "{{ lookup('ini', 'sshd_port   file={{gen_file}} default=22') }}" |     sshd_port:  "{{ lookup('ini', 'sshd_port  file={{gen_file}} default=22') }}" | ||||||
|     git_host:     "{{ lookup('ini', 'git_host     file={{gen_file}} default=git.hyperling.com') }}" |     git_host:     "{{ lookup('ini', 'git_host     file={{gen_file}} default=git.hyperling.com') }}" | ||||||
|     git_user:     "{{ lookup('ini', 'git_user     file={{gen_file}} default=me') }}" |     git_user:     "{{ lookup('ini', 'git_user     file={{gen_file}} default=me') }}" | ||||||
|     git_project:  "{{ lookup('ini', 'git_project  file={{gen_file}} default=env-ansible') }}" |     git_project:  "{{ lookup('ini', 'git_project  file={{gen_file}} default=env-ansible') }}" | ||||||
| @@ -179,6 +179,7 @@ | |||||||
|       ;  enable : Set to true for system to be considered a workstation. |       ;  enable : Set to true for system to be considered a workstation. | ||||||
|       ; |       ; | ||||||
|       ;  coding : Set to true for installation of code editors (VSCode, PyCharm, Android Studio) |       ;  coding : Set to true for installation of code editors (VSCode, PyCharm, Android Studio) | ||||||
|  |       ;  - sdks : Set to true to download additional SDKs to test against. | ||||||
|       ; |       ; | ||||||
|       ; editing : Set to true for installation of Audio/Video editors (Shotcut, Audacity, OBS Stdio, GIMP) |       ; editing : Set to true for installation of Audio/Video editors (Shotcut, Audacity, OBS Stdio, GIMP) | ||||||
|       ;           Set to video for only the video related portions. |       ;           Set to video for only the video related portions. | ||||||
| @@ -200,6 +201,9 @@ | |||||||
|       ;  mobile : Set to true if not using an amd64 processor. |       ;  mobile : Set to true if not using an amd64 processor. | ||||||
|       ;             Also used to disable tasks not helpful for Pinephone. |       ;             Also used to disable tasks not helpful for Pinephone. | ||||||
|       ; |       ; | ||||||
|  |       ; redmode : Set to true/false for automatially using Night Light in GNOME. | ||||||
|  |       ;             Default: true | ||||||
|  |       ; | ||||||
|       [global] |       [global] | ||||||
|     marker: '; {mark} MANAGED BY ANSIBLE | Workstation Config' |     marker: '; {mark} MANAGED BY ANSIBLE | Workstation Config' | ||||||
|     state: present |     state: present | ||||||
| @@ -208,14 +212,16 @@ | |||||||
|  |  | ||||||
| - name: General | Account Management | Provisioning Configuration | Workstation | Load | - name: General | Account Management | Provisioning Configuration | Workstation | Load | ||||||
|   set_fact: |   set_fact: | ||||||
|     workstation: "{{ lookup('ini', 'enable  file={{wrk_file}} default=false') }}" |     workstation: "{{ lookup('ini', 'enable  file={{wrk_file}} default=false') | bool }}" | ||||||
|     coding:      "{{ lookup('ini', 'coding  file={{wrk_file}} default=false') }}" |     coding:      "{{ lookup('ini', 'coding  file={{wrk_file}} default=false') | bool }}" | ||||||
|  |     sdks:        "{{ lookup('ini', 'sdks    file={{wrk_file}} default=false') | bool }}" | ||||||
|     editing:     "{{ lookup('ini', 'editing file={{wrk_file}} default=false') }}" |     editing:     "{{ lookup('ini', 'editing file={{wrk_file}} default=false') }}" | ||||||
|     gaming:      "{{ lookup('ini', 'gaming  file={{wrk_file}} default=false') }}" |     gaming:      "{{ lookup('ini', 'gaming  file={{wrk_file}} default=false') | bool }}" | ||||||
|     rdp:         "{{ lookup('ini', 'rdp     file={{wrk_file}} default=false') }}" |     rdp:         "{{ lookup('ini', 'rdp     file={{wrk_file}} default=false') | bool }}" | ||||||
|     vnc:         "{{ lookup('ini', 'vnc     file={{wrk_file}} default=false') }}" |     vnc:         "{{ lookup('ini', 'vnc     file={{wrk_file}} default=false') | bool }}" | ||||||
|     bsd_gpu:     "{{ lookup('ini', 'bsd_gpu file={{wrk_file}} default=false') }}" |     bsd_gpu:     "{{ lookup('ini', 'bsd_gpu file={{wrk_file}} default=false') | bool }}" | ||||||
|     mobile:      "{{ lookup('ini', 'mobile  file={{wrk_file}} default=false') }}" |     mobile:      "{{ lookup('ini', 'mobile  file={{wrk_file}} default=false') | bool }}" | ||||||
|  |     redmode:     "{{ lookup('ini', 'redmode file={{wrk_file}} default=true' ) | bool }}" | ||||||
|  |  | ||||||
| - name: General | Account Management | Provisioning Configuration | Workstation | List | - name: General | Account Management | Provisioning Configuration | Workstation | List | ||||||
|   set_fact: |   set_fact: | ||||||
| @@ -223,12 +229,14 @@ | |||||||
|   loop: |   loop: | ||||||
|     - { 'workstation': "{{ workstation }}" } |     - { 'workstation': "{{ workstation }}" } | ||||||
|     - { 'coding': "{{ coding }}" } |     - { 'coding': "{{ coding }}" } | ||||||
|  |     - { 'sdks': "{{ sdks }}" } | ||||||
|     - { 'editing': "{{ editing }}" } |     - { 'editing': "{{ editing }}" } | ||||||
|     - { 'gaming': "{{ gaming }}" } |     - { 'gaming': "{{ gaming }}" } | ||||||
|     - { 'rdp': "{{ rdp }}" } |     - { 'rdp': "{{ rdp }}" } | ||||||
|     - { 'vnc': "{{ vnc }}" } |     - { 'vnc': "{{ vnc }}" } | ||||||
|     - { 'bsd_gpu': "{{ bsd_gpu }}" } |     - { 'bsd_gpu': "{{ bsd_gpu }}" } | ||||||
|     - { 'mobile': "{{ mobile }}" } |     - { 'mobile': "{{ mobile }}" } | ||||||
|  |     - { 'redmode': "{{ redmode }}" } | ||||||
|  |  | ||||||
| # No longer mining, this is now considered deprecated. | # No longer mining, this is now considered deprecated. | ||||||
| ### Miner ## | ### Miner ## | ||||||
| @@ -280,18 +288,18 @@ | |||||||
| # | # | ||||||
| #- name: General | Account Management | Provisioning Configuration | Miner | Load | #- name: General | Account Management | Provisioning Configuration | Miner | Load | ||||||
| #  set_fact: | #  set_fact: | ||||||
| #    miner:              "{{ lookup('ini', 'enable             file={{mnr_file}} default=false') }}" | #    miner:              "{{ lookup('ini', 'enable             file={{mnr_file}} default=false') | bool }}" | ||||||
| #    amdgpu:             "{{ lookup('ini', 'amdgpu             file={{mnr_file}} default=false') }}" | #    amdgpu:             "{{ lookup('ini', 'amdgpu             file={{mnr_file}} default=false') | bool }}" | ||||||
| #    nanominer:          "{{ lookup('ini', 'nanominer          file={{mnr_file}} default=false') }}" | #    nanominer:          "{{ lookup('ini', 'nanominer          file={{mnr_file}} default=false') | bool }}" | ||||||
| #    nanominer_cpu:      "{{ lookup('ini', 'nanominer_cpu      file={{mnr_file}} default=false') }}" | #    nanominer_cpu:      "{{ lookup('ini', 'nanominer_cpu      file={{mnr_file}} default=false') | bool }}" | ||||||
| #    nanominer_cpu_pool: "{{ lookup('ini', 'nanominer_cpu_pool file={{mnr_file}} default=false') }}" | #    nanominer_cpu_pool: "{{ lookup('ini', 'nanominer_cpu_pool file={{mnr_file}} default=false') | bool }}" | ||||||
| #    nanominer_gpu:      "{{ lookup('ini', 'nanominer_gpu      file={{mnr_file}} default=false') }}" | #    nanominer_gpu:      "{{ lookup('ini', 'nanominer_gpu      file={{mnr_file}} default=false') | bool }}" | ||||||
| #    nanominer_gpus:     "{{ lookup('ini', 'nanominer_gpus     file={{mnr_file}} default=false') }}" | #    nanominer_gpus:     "{{ lookup('ini', 'nanominer_gpus     file={{mnr_file}} default=false') | bool }}" | ||||||
| #    nanominer_gpu_pool: "{{ lookup('ini', 'nanominer_gpu_pool file={{mnr_file}} default=false') }}" | #    nanominer_gpu_pool: "{{ lookup('ini', 'nanominer_gpu_pool file={{mnr_file}} default=false') | bool }}" | ||||||
| #    eth_minhashrate:    "{{ lookup('ini', 'eth_minhashrate    file={{mnr_file}} default=false') }}" | #    eth_minhashrate:    "{{ lookup('ini', 'eth_minhashrate    file={{mnr_file}} default=false') | bool }}" | ||||||
| #    ethminer:           "{{ lookup('ini', 'ethminer           file={{mnr_file}} default=false') }}" | #    ethminer:           "{{ lookup('ini', 'ethminer           file={{mnr_file}} default=false') | bool }}" | ||||||
| #    nvidia:             "{{ lookup('ini', 'nvidia             file={{mnr_file}} default=false') }}" | #    nvidia:             "{{ lookup('ini', 'nvidia             file={{mnr_file}} default=false') | bool }}" | ||||||
| #    xmr_stak_cpu:       "{{ lookup('ini', 'xmr_stak_cpu       file={{mnr_file}} default=false') }}" | #    xmr_stak_cpu:       "{{ lookup('ini', 'xmr_stak_cpu       file={{mnr_file}} default=false') | bool }}" | ||||||
| # | # | ||||||
| #- name: General | Account Management | Provisioning Configuration | Miner | List | #- name: General | Account Management | Provisioning Configuration | Miner | List | ||||||
| #  set_fact: | #  set_fact: | ||||||
| @@ -349,14 +357,14 @@ | |||||||
|  |  | ||||||
| - name: General | Account Management | Provisioning Configuration | Server | Load | - name: General | Account Management | Provisioning Configuration | Server | Load | ||||||
|   set_fact: |   set_fact: | ||||||
|     server:     "{{ lookup('ini', 'enable     file={{srv_file}} default=false') }}" |     server:     "{{ lookup('ini', 'enable     file={{srv_file}} default=false') | bool }}" | ||||||
|     domain:     "{{ lookup('ini', 'domain     file={{srv_file}} default=hyperling.com') }}" |     domain:     "{{ lookup('ini', 'domain     file={{srv_file}} default=hyperling.com') }}" | ||||||
|     onlyoffice: "{{ lookup('ini', 'onlyoffice file={{srv_file}} default=false') }}" |     onlyoffice: "{{ lookup('ini', 'onlyoffice file={{srv_file}} default=false') | bool }}" | ||||||
|     grafana:    "{{ lookup('ini', 'grafana    file={{srv_file}} default=false') }}" |     grafana:    "{{ lookup('ini', 'grafana    file={{srv_file}} default=false') | bool }}" | ||||||
|     influxdb1:  "{{ lookup('ini', 'influxdb1  file={{srv_file}} default=false') }}" |     influxdb1:  "{{ lookup('ini', 'influxdb1  file={{srv_file}} default=false') | bool }}" | ||||||
|     influxdb2:  "{{ lookup('ini', 'influxdb2  file={{srv_file}} default=false') }}" |     influxdb2:  "{{ lookup('ini', 'influxdb2  file={{srv_file}} default=false') | bool }}" | ||||||
|     certbot:    "{{ lookup('ini', 'certbot    file={{srv_file}} default=false') }}" |     certbot:    "{{ lookup('ini', 'certbot    file={{srv_file}} default=false') | bool }}" | ||||||
|     hugo:       "{{ lookup('ini', 'hugo       file={{srv_file}} default=false') }}" |     hugo:       "{{ lookup('ini', 'hugo       file={{srv_file}} default=false') | bool }}" | ||||||
|  |  | ||||||
| - name: General | Account Management | Provisioning Configuration | Server | List | - name: General | Account Management | Provisioning Configuration | Server | List | ||||||
|   set_fact: |   set_fact: | ||||||
|   | |||||||
| @@ -100,7 +100,6 @@ | |||||||
|     mode: '0755' |     mode: '0755' | ||||||
|   loop: |   loop: | ||||||
|     - "{{ user_user.home }}/bin" |     - "{{ user_user.home }}/bin" | ||||||
|     - "{{ user_user.home }}/LBRY" |  | ||||||
|     - "{{ user_user.home }}/TRASH" |     - "{{ user_user.home }}/TRASH" | ||||||
|     - "{{ user_user.home }}/Downloads" |     - "{{ user_user.home }}/Downloads" | ||||||
|     - "{{ user_user.home }}/Reports" |     - "{{ user_user.home }}/Reports" | ||||||
| @@ -158,18 +157,18 @@ | |||||||
|     function_update: | |     function_update: | | ||||||
|       function update() { |       function update() { | ||||||
|         PROG=$FUNCNAME |         PROG=$FUNCNAME | ||||||
|         usage="Usage: $PROG [-y] |         usage="Usage: $PROG [-y] [-g] [-s] [-f] | ||||||
|         $PROG is used to run all the system's package manager commands |         $PROG is used to run all the system's package manager commands | ||||||
|           in one swoop. Flow stops if any command returns a failure code. |           in one swoop. Flow stops if any command returns a failure code. | ||||||
|           The hope is to run something as easy as 'pacman -Syyu'. |           The hope is to run something as easy as 'pacman -Syyu'. | ||||||
|         -y : Assume yes to any prompts. |         -y : Assume yes to any prompts. | ||||||
|         -g : Shutdown after updating. |         -g : Goodbye - Shutdown after updating. | ||||||
|         -s : System updates only, no Flatpaks. |         -s : System updates only, no Flatpaks. | ||||||
|         -f : Flatpaks only, no system updates." |         -f : Flatpaks only, no system updates." | ||||||
|  |  | ||||||
|         unset OPTIND |         unset OPTIND | ||||||
|         unset accept |         unset accept | ||||||
|         unset goodbye |         unset shutdown | ||||||
|         unset only_sys |         unset only_sys | ||||||
|         unset only_flat |         unset only_flat | ||||||
|  |  | ||||||
| @@ -178,7 +177,7 @@ | |||||||
|               h) echo -e "$usage" |               h) echo -e "$usage" | ||||||
|                 return 0 ;; |                 return 0 ;; | ||||||
|               y) accept="-y" ;; |               y) accept="-y" ;; | ||||||
|               g) goodbye="Y" ;; |               g) shutdown="Y" ;; | ||||||
|               s) only_sys="Y" ;; |               s) only_sys="Y" ;; | ||||||
|               f) only_flat="Y" ;; |               f) only_flat="Y" ;; | ||||||
|               *) echo "ERROR: -$OPTARG is not a recognized option." >&2 |               *) echo "ERROR: -$OPTARG is not a recognized option." >&2 | ||||||
| @@ -193,7 +192,7 @@ | |||||||
|           {{ update_package_manager }} |           {{ update_package_manager }} | ||||||
|         fi |         fi | ||||||
|  |  | ||||||
|         if [[ "$goodbye" == "Y" && "{{ battery }}" == "True" ]]; then |         if [[ "$shutdown" == "Y" && "{{ battery }}" == "True" ]]; then | ||||||
|           echo -e "\n*** Only System Updates - Skipping Flatpak ***\n\n" |           echo -e "\n*** Only System Updates - Skipping Flatpak ***\n\n" | ||||||
|         elif [[ "$only_sys" == "Y" ]]; then |         elif [[ "$only_sys" == "Y" ]]; then | ||||||
|           echo -e "\n*** Manually Skipping Flatpak ***\n\n" |           echo -e "\n*** Manually Skipping Flatpak ***\n\n" | ||||||
| @@ -203,7 +202,8 @@ | |||||||
|  |  | ||||||
|         echo "*** Completed Successfully ***" |         echo "*** Completed Successfully ***" | ||||||
|  |  | ||||||
|         if [[ $goodbye == "Y" ]]; then |         if [[ $shutdown == "Y" ]]; then | ||||||
|  |           shopt -s expand_aliases | ||||||
|           bye |           bye | ||||||
|         fi |         fi | ||||||
|  |  | ||||||
| @@ -235,6 +235,8 @@ | |||||||
|         echo "*** Completed Successfully ***" |         echo "*** Completed Successfully ***" | ||||||
|         return 0 |         return 0 | ||||||
|       } |       } | ||||||
|  |       alias firmware-update="update-firmware" | ||||||
|  |       alias firmware-updater="update-firmware" | ||||||
|     alias_sync: alias sync='date && echo "Syncing!" && sync && date' |     alias_sync: alias sync='date && echo "Syncing!" && sync && date' | ||||||
|     export_editor: export EDITOR='vi' |     export_editor: export EDITOR='vi' | ||||||
|     init_aliases: | |     init_aliases: | | ||||||
| @@ -252,8 +254,12 @@ | |||||||
|       ' |       ' | ||||||
|       alias init-prog=init-program |       alias init-prog=init-program | ||||||
|     bye_aliases: | |     bye_aliases: | | ||||||
|       alias bye="{{ shutdown_command }}" |       function bye { | ||||||
|       alias goodbye="update -yg" |         {{ shutdown_command }} | ||||||
|  |       } | ||||||
|  |       function goodbye { | ||||||
|  |         update -yg | ||||||
|  |       } | ||||||
|     metasploit_aliases: | |     metasploit_aliases: | | ||||||
|       alias metasploit="msfconsole" |       alias metasploit="msfconsole" | ||||||
|       alias hax="metasploit" |       alias hax="metasploit" | ||||||
| @@ -277,6 +283,19 @@ | |||||||
|       alias edit-config-wrk="sudo $EDITOR {{ wrk_file }}" |       alias edit-config-wrk="sudo $EDITOR {{ wrk_file }}" | ||||||
|       alias edit-config-mnr="sudo $EDITOR {{ mnr_file }}" |       alias edit-config-mnr="sudo $EDITOR {{ mnr_file }}" | ||||||
|       alias edit-config-srv="sudo $EDITOR {{ srv_file }}" |       alias edit-config-srv="sudo $EDITOR {{ srv_file }}" | ||||||
|  |     function_clean_trashed: | | ||||||
|  |       function clean-trashed { | ||||||
|  |         dir="$1" | ||||||
|  |         if [[ -z $dir ]]; then | ||||||
|  |           dir="./" | ||||||
|  |         fi | ||||||
|  |         cd $dir | ||||||
|  |         dir="`pwd`" | ||||||
|  |         echo "Removing '.trashed*' files in '$dir'." | ||||||
|  |         find "$dir" -name ".trashed*" -exec du -h {} \; -delete | sort -h | ||||||
|  |       } | ||||||
|  |       alias trashed-cleanup="clean-trashed" | ||||||
|  |       alias trashed-clean="clean-trashed" | ||||||
|     function_check_trash: | |     function_check_trash: | | ||||||
|       function check-trash() { |       function check-trash() { | ||||||
|         unset OPTIND |         unset OPTIND | ||||||
| @@ -372,6 +391,9 @@ | |||||||
|         fi |         fi | ||||||
|         echo "Checking but not cleaning /var/mail..." |         echo "Checking but not cleaning /var/mail..." | ||||||
|         du -ha /var/mail | sort -h |         du -ha /var/mail | sort -h | ||||||
|  |         if [[ $clean == "Y" ]]; then | ||||||
|  |           clean-trashed "~/" | ||||||
|  |         fi | ||||||
|         return 0 |         return 0 | ||||||
|       } |       } | ||||||
|       alias check_trash="check-trash" |       alias check_trash="check-trash" | ||||||
| @@ -380,18 +402,20 @@ | |||||||
|     alias_trash_clean: alias trash-clean='trash-check --clean' |     alias_trash_clean: alias trash-clean='trash-check --clean' | ||||||
|     alias_clean_dir: | |     alias_clean_dir: | | ||||||
|       function clean-dir() { |       function clean-dir() { | ||||||
|  |         sudo du -hs | ||||||
|         clean_dir="`date '+%Y%m%d_%H%M%S'`_CLEANED" |         clean_dir="`date '+%Y%m%d_%H%M%S'`_CLEANED" | ||||||
|         trash_dir="$HOME/TRASH/$clean_dir" |         trash_dir="$HOME/TRASH/$clean_dir" | ||||||
|         curr_dir="`pwd`" |         curr_dir="`pwd`" | ||||||
|         mkdir -pv "$trash_dir" |         mkdir -pv "$trash_dir" | ||||||
|         echo "$curr_dir is being cleaned at `date`." | tee "$trash_dir"/INFO.txt |         echo "$curr_dir is being cleaned at `date`." | tee "$trash_dir"/INFO.txt | ||||||
|         mv -v ..?* .[!.]* * "$trash_dir"/ | tee -a "$trash_dir"/INFO.txt |         mv -v ..?* .[!.]* * "$trash_dir"/ | tee -a "$trash_dir"/INFO.txt | ||||||
|  |         sudo du -hs | ||||||
|       } |       } | ||||||
|     function_clean: | |     function_clean: | | ||||||
|       function clean() { |       function clean() { | ||||||
|         sudo du -hs |         clean-trash | ||||||
|         clean-dir |         clean-code | ||||||
|         sudo du -hs |         clean-backups | ||||||
|       } |       } | ||||||
|     function_flatpak_usage: | |     function_flatpak_usage: | | ||||||
|       function flatpak-usage() { |       function flatpak-usage() { | ||||||
| @@ -403,6 +427,10 @@ | |||||||
|           fi |           fi | ||||||
|         done | sort -n |         done | sort -n | ||||||
|       } |       } | ||||||
|  |       alias flatpak-info="flatpak-usage" | ||||||
|  |       alias flatpak-space="flatpak-usage" | ||||||
|  |       alias flatpak-size="flatpak-usage" | ||||||
|  |       alias flatpak-sizes="flatpak-usage" | ||||||
|     function_flatpak_purge: | |     function_flatpak_purge: | | ||||||
|       function flatpak-purge() { |       function flatpak-purge() { | ||||||
|         flatpak remove --all --delete-data && |         flatpak remove --all --delete-data && | ||||||
| @@ -414,23 +442,65 @@ | |||||||
|       } |       } | ||||||
|     alias_vim: alias vi=vim |     alias_vim: alias vi=vim | ||||||
|     alias_here: alias here='ls -alh `pwd`/*' |     alias_here: alias here='ls -alh `pwd`/*' | ||||||
|     alias_docker_reload: | |     function_docker_reload: | | ||||||
|       alias docker-reload=' |       function docker-reload() { | ||||||
|  |         if [[ "$1" == "-h" || "$1" == "--help" ]]; then | ||||||
|  |           cat <<- EOF | ||||||
|  |             Usage: docker-reload [container_name] | ||||||
|  |             Providing the container name starts a log follow after the command. | ||||||
|  |             A reload is characterized by a DOWN, BUILD, and UP. | ||||||
|  |       EOF | ||||||
|  |           return 0 | ||||||
|  |         fi | ||||||
|  |  | ||||||
|         docker compose down && |         docker compose down && | ||||||
|         docker compose build && |         docker compose build && | ||||||
|         docker compose up -d |         docker compose up -d | ||||||
|       ' |  | ||||||
|     alias_docker_update: | |         if [[ -n "$1" ]]; then | ||||||
|       alias docker-update=' |           echo "Following logs of '$1':" | ||||||
|  |           docker logs -f $1 | ||||||
|  |         fi | ||||||
|  |  | ||||||
|  |         return 0 | ||||||
|  |       } | ||||||
|  |     function_docker_update: | | ||||||
|  |       function docker-update() { | ||||||
|  |         if [[ "$1" == "-h" || "$1" == "--help" ]]; then | ||||||
|  |           cat <<- EOF | ||||||
|  |             Usage: docker-update [container_name] | ||||||
|  |             Providing the container name starts a log follow after the command. | ||||||
|  |             An update is characterized by a DOWN, PULL, BUILD, and UP. | ||||||
|  |       EOF | ||||||
|  |           return 0 | ||||||
|  |         fi | ||||||
|  |  | ||||||
|         docker compose down && |         docker compose down && | ||||||
|         docker compose pull && |         docker compose pull && | ||||||
|         docker compose build && |         docker compose build && | ||||||
|         docker compose up -d |         docker compose up -d | ||||||
|       ' |  | ||||||
|  |         if [[ -n "$1" ]]; then | ||||||
|  |           echo "Following logs of '$1':" | ||||||
|  |           docker logs -f $1 | ||||||
|  |         fi | ||||||
|  |  | ||||||
|  |         return 0 | ||||||
|  |       } | ||||||
|     function_docker_upgrade: | |     function_docker_upgrade: | | ||||||
|       function docker-upgrade() { |       function docker-upgrade() { | ||||||
|         # Wrapper for a full-scale upgrade and log view of a container. |         # Wrapper for a full-scale upgrade and log view of a container. | ||||||
|         # Paramaters: |  | ||||||
|  |         if [[ "$1" == "-h" || "$1" == "--help" ]]; then | ||||||
|  |           cat <<- EOF | ||||||
|  |             Usage: docker-upgrade [container_name] | ||||||
|  |             Providing the container name starts a log follow after the command. | ||||||
|  |             An upgrade is characterized by a DOWN, PULL, BUILD, and UP. | ||||||
|  |       EOF | ||||||
|  |           return 0 | ||||||
|  |         fi | ||||||
|  |  | ||||||
|  |         # Parameters: | ||||||
|         #   1) Container ID or Container Name, as seen in 'docker ps' command. |         #   1) Container ID or Container Name, as seen in 'docker ps' command. | ||||||
|         container=$1 |         container=$1 | ||||||
|         if [[ -z $container ]]; then |         if [[ -z $container ]]; then | ||||||
| @@ -460,9 +530,30 @@ | |||||||
|         echo "*** Following Log ***" && |         echo "*** Following Log ***" && | ||||||
|           echo "Press ^C to escape." && |           echo "Press ^C to escape." && | ||||||
|           docker logs -f $container |           docker logs -f $container | ||||||
|  |  | ||||||
|  |         return 0 | ||||||
|  |       } | ||||||
|  |     function_docker_restart: | | ||||||
|  |       function docker-restart() { | ||||||
|  |         if [[ "$1" == "-h" || "$1" == "--help" ]]; then | ||||||
|  |           cat <<- EOF | ||||||
|  |             Usage: docker-restart [container_name] | ||||||
|  |             Providing the container name starts a log follow after the command. | ||||||
|  |             A restart is characterized by a DOWN and UP. | ||||||
|  |       EOF | ||||||
|  |           return 0 | ||||||
|  |         fi | ||||||
|  |  | ||||||
|  |         docker compose down && | ||||||
|  |         docker compose up -d | ||||||
|  |  | ||||||
|  |         if [[ -n "$1" ]]; then | ||||||
|  |           echo "Following logs of '$1':" | ||||||
|  |           docker logs -f $1 | ||||||
|  |         fi | ||||||
|  |  | ||||||
|  |         return 0 | ||||||
|       } |       } | ||||||
|     alias_docker_restart: | |  | ||||||
|       alias docker-restart='docker compose down && docker compose up -d' |  | ||||||
|     alias_code_check: | |     alias_code_check: | | ||||||
|       alias code-check=' |       alias code-check=' | ||||||
|         echo "Checking ~/Code directory for git changes." |         echo "Checking ~/Code directory for git changes." | ||||||
| @@ -473,6 +564,16 @@ | |||||||
|           echo -e "\n*** `basename $project` ***" |           echo -e "\n*** `basename $project` ***" | ||||||
|           cd $project |           cd $project | ||||||
|           if [[ -d .git ]]; then |           if [[ -d .git ]]; then | ||||||
|  |             git ls-remote --exit-code --heads origin dev | ||||||
|  |             dev_exists="$?" | ||||||
|  |             if [[ "$dev_exists" == 0 ]]; then | ||||||
|  |               git switch dev | ||||||
|  |             elif [[ "$dev_exists" == 2 ]]; then | ||||||
|  |               git switch main | ||||||
|  |             else | ||||||
|  |               echo "ERROR: Unknown status for dev_exists, '$dev_exists'." | ||||||
|  |               continue | ||||||
|  |             fi | ||||||
|             git pull |             git pull | ||||||
|             git push |             git push | ||||||
|           else |           else | ||||||
| @@ -481,6 +582,7 @@ | |||||||
|         done |         done | ||||||
|         echo -e "\nDone!" |         echo -e "\nDone!" | ||||||
|       ' |       ' | ||||||
|  |       alias code-sync='code-check' | ||||||
|     alias_code_reset: | |     alias_code_reset: | | ||||||
|       alias code-reset=' |       alias code-reset=' | ||||||
|         ls -d ~/Code/* | while read project |         ls -d ~/Code/* | while read project | ||||||
| @@ -500,17 +602,32 @@ | |||||||
|           env-ansible dev |           env-ansible dev | ||||||
|           env-docker dev |           env-docker dev | ||||||
|           env-termux dev |           env-termux dev | ||||||
|  |           env-obtainium-hyperling dev | ||||||
|           nodejs-website dev |           nodejs-website dev | ||||||
|           ebook-health-protocol dev |           ebook-health-protocol dev | ||||||
|           flutter-expense-tracker main |           ebook-freedom-flyer dev | ||||||
|           flutter-social-traveler-app main |           ebook-technology-alternatives dev | ||||||
|           nodejs-social-traveler-server main |           ebook-narcissism-healing dev | ||||||
|  |           ebook-forest-howto dev | ||||||
|  |           ebook-template main | ||||||
|  |           flutter-expense-tracker dev | ||||||
|  |           flutter-social-traveler-app dev | ||||||
|  |           nodejs-social-traveler-server dev | ||||||
|           misc-spare-change main |           misc-spare-change main | ||||||
|  |           flutter-buddy-website dev | ||||||
|  |           flutter-sunset-alarm dev | ||||||
|  |           android-infinite-timer dev | ||||||
|  |           android-carb-up dev | ||||||
|  |           android-hypergames dev | ||||||
|  |           android-45-minute-rule dev | ||||||
|  |           android-tictactoe dev | ||||||
|  |           hugo-jackanope dev | ||||||
|  |           hugo-website dev | ||||||
|       EOF |       EOF | ||||||
|       } |       } | ||||||
|       function code-reseed { |       function code-reseed { | ||||||
|         # Unseed current projects. |         # Unseed current projects. | ||||||
|         echo "*** Move old projects to TRASH ***" |         echo -e "\n*** Move old projects to TRASH ***" | ||||||
|         unseed_dir="$HOME/TRASH/`date +%Y%m%d_%H%M%S`_UnseededCodeProjects" |         unseed_dir="$HOME/TRASH/`date +%Y%m%d_%H%M%S`_UnseededCodeProjects" | ||||||
|         mkdir -pv "$unseed_dir" |         mkdir -pv "$unseed_dir" | ||||||
|         mv -v ~/Code/* "$unseed_dir"/ 2>/dev/null |         mv -v ~/Code/* "$unseed_dir"/ 2>/dev/null | ||||||
| @@ -527,7 +644,7 @@ | |||||||
|           # Project folder manipulation. |           # Project folder manipulation. | ||||||
|           dest_folder="$git_project" |           dest_folder="$git_project" | ||||||
|           if [[ "$dest_folder" == "flutter-"* ]]; then |           if [[ "$dest_folder" == "flutter-"* ]]; then | ||||||
|             echo "- Using '_' for Flutter Project" |             echo "Using '_' for Flutter Project" | ||||||
|             dest_folder="${dest_folder//-/_}" |             dest_folder="${dest_folder//-/_}" | ||||||
|           fi |           fi | ||||||
|  |  | ||||||
| @@ -598,6 +715,9 @@ | |||||||
|         done |         done | ||||||
|         cd |         cd | ||||||
|  |  | ||||||
|  |         echo -e "******* PDFs *******" | ||||||
|  |         find ~/Code/ebook-* -name "*.pdf" -exec du -h {} \; -delete | sort -h | ||||||
|  |  | ||||||
|         echo -e "\n*** Done! ***" |         echo -e "\n*** Done! ***" | ||||||
|       } |       } | ||||||
|       alias code-clean="clean-code" |       alias code-clean="clean-code" | ||||||
| @@ -650,6 +770,189 @@ | |||||||
|           echo "$var = ${!var}" |           echo "$var = ${!var}" | ||||||
|         done |         done | ||||||
|       } |       } | ||||||
|  |     alias_permission_commands: | | ||||||
|  |       alias chown='chown -c' | ||||||
|  |       alias chmod='chmod -c' | ||||||
|  |     alias_iftop: | | ||||||
|  |       alias iftop='sudo iftop' | ||||||
|  |     alias_ls: | | ||||||
|  |       alias l='ls' | ||||||
|  |       alias ll='ls -alh' | ||||||
|  |       alias lh='ls -ash' | ||||||
|  |     alias_progs: | | ||||||
|  |       alias progs='ps -ef' | ||||||
|  |     alias_nethogs: | | ||||||
|  |       alias nethogs='sudo nethogs' | ||||||
|  |     alias_ansible_facts: | | ||||||
|  |       alias ansible-facts='ansible localhost -m setup --connection=local' | ||||||
|  |     function_now: | | ||||||
|  |       function now { | ||||||
|  |         date "+%Y%m%d-%H%M%S" | ||||||
|  |       } | ||||||
|  |       function today { | ||||||
|  |         date "+%Y%m%d" | ||||||
|  |       } | ||||||
|  |     function_backup: | | ||||||
|  |       function backup { | ||||||
|  |         /usr/local/bin/backup_system.sh | ||||||
|  |       } | ||||||
|  |       alias backup-system="backup" | ||||||
|  |       alias system-backup="backup" | ||||||
|  |       alias check-backups="ll /srv/backup" | ||||||
|  |       function clean-backup { | ||||||
|  |         sh -c "rm -rfv /srv/backup/*" | ||||||
|  |       } | ||||||
|  |       alias clean-backups="clean-backup" | ||||||
|  |     function_log: | | ||||||
|  |       function log { | ||||||
|  |         echo -e "$1" | ||||||
|  |       } | ||||||
|  |       function blog { | ||||||
|  |         echo -e "\n\n$1\n\n" | ||||||
|  |       } | ||||||
|  |     function_debian_upgrade: | | ||||||
|  |       function debian-upgrade { | ||||||
|  |         typeset -l OLD NEW | ||||||
|  |         OLD="$1" | ||||||
|  |         NEW="$2" | ||||||
|  |         blog "*** Upgrading from '$OLD' to '$NEW' ***" | ||||||
|  |         if [[ -z "$OLD" || -z "$NEW" ]]; then | ||||||
|  |           echo -n "ERROR: Please pass the OLD and NEW version names" | ||||||
|  |           echo ", such as 'debian-upgrade bookworm trixie'. " | ||||||
|  |           return 1 | ||||||
|  |         fi | ||||||
|  |  | ||||||
|  |         blog "*** Running 'backup' before starting upgrade. ***" | ||||||
|  |         sleep 1 | ||||||
|  |  | ||||||
|  |         backup | ||||||
|  |  | ||||||
|  |         blog "*** Listing the current apt listing for '$OLD' ***" | ||||||
|  |         sudo grep "$OLD" /etc/apt/sources.list /etc/apt/sources.list.d/* | ||||||
|  |  | ||||||
|  |         echo -en "\nAre these the entries you'd like changed to '$NEW'? (y/N) " | ||||||
|  |         typeset -u confirm_change | ||||||
|  |         read confirm_change | ||||||
|  |  | ||||||
|  |         if [[ -z "$confirm_change" || "$confirm_change" == "N"* ]]; then | ||||||
|  |           blog "*** Aborting upgrade, change rejected. ***" | ||||||
|  |           return 1 | ||||||
|  |         fi | ||||||
|  |         unset confirm_change | ||||||
|  |  | ||||||
|  |         blog "*** Continuing with upgrade. ***" | ||||||
|  |         sudo sed -i "s/$OLD/$NEW/g" /etc/apt/sources.list | ||||||
|  |         find /etc/apt/sources.list.d/ -name "*.list" \ | ||||||
|  |           -exec sudo sed -i "s/$OLD/$NEW/g" {} \; | ||||||
|  |         find /etc/apt/sources.list.d/ -name "*.sources" \ | ||||||
|  |           -exec sudo sed -i "s/$OLD/$NEW/g" {} \; | ||||||
|  |  | ||||||
|  |         sudo grep $OLD /etc/apt/sources.list /etc/apt/sources.list.d/*.{list,sources} | ||||||
|  |         sudo grep $NEW /etc/apt/sources.list /etc/apt/sources.list.d/*.{list,sources} | ||||||
|  |  | ||||||
|  |         echo -en "\nDo the source files look correct? (y/N) " | ||||||
|  |         typeset -u confirm_correct | ||||||
|  |         read confirm_correct | ||||||
|  |  | ||||||
|  |         if [[ -z "$confirm_correct" || "$confirm_correct" == "N"* ]]; then | ||||||
|  |           blog "*** Aborting upgrade, confirmation rejected. ***" | ||||||
|  |           return 1 | ||||||
|  |         fi | ||||||
|  |         unset confirm_correct | ||||||
|  |  | ||||||
|  |         blog "*** Starting the upgrade. ***" | ||||||
|  |         sleep 1 | ||||||
|  |  | ||||||
|  |         sudo apt update | ||||||
|  |         sudo apt upgrade --without-new-pkgs | ||||||
|  |  | ||||||
|  |         blog -e "*** Upgrades complete, now add new packages. ***" | ||||||
|  |         sleep 1 | ||||||
|  |         sudo apt full-upgrade | ||||||
|  |  | ||||||
|  |         blog "*** New packages complete, clean apt files. ***" | ||||||
|  |         sleep 1 | ||||||
|  |         sudo apt autoremove --purge | ||||||
|  |         sudo apt clean | ||||||
|  |  | ||||||
|  |         blog "*** All done! '$OLD' is now '$NEW'. Please reboot. ***" | ||||||
|  |         sleep 1 | ||||||
|  |         unset OLD NEW | ||||||
|  |       } | ||||||
|  |       alias upgrade-debian="debian-upgrade" | ||||||
|  |     function_ebook_convert: | | ||||||
|  |       # Regenerate all eBook projects at once. | ||||||
|  |       function ebook-convert { | ||||||
|  |         find ~/Code/ebook-* -name "*.pdf" -print -delete | ||||||
|  |         find ~/Code/ebook-* -name convert.sh -print -exec bash "{}" \; | ||||||
|  |       } | ||||||
|  |       alias ebooks="ebook-convert" | ||||||
|  |       alias convert="ebook-convert" | ||||||
|  |     alias_sudo: | | ||||||
|  |       # Allows for alias expansions when using sudo, such as doing "sudo ll". | ||||||
|  |       alias sudo="sudo " | ||||||
|  |     function_load_branch: | | ||||||
|  |       # Change a branch to point at another. | ||||||
|  |       function load-branch { | ||||||
|  |         rcvr="$1" # branch which we want to modify | ||||||
|  |         base="$2" # branch with the changes we want | ||||||
|  |  | ||||||
|  |         if [[ "$rcvr" == "main" ]]; then | ||||||
|  |           echo "*** ERROR: Are you nuts, fool!? Not main! Do it manually! ***" | ||||||
|  |           exit 1 | ||||||
|  |         fi | ||||||
|  |  | ||||||
|  |         if [[ -z "$base" ]]; then | ||||||
|  |           if [[ "$rcvr" == "prod" ]]; then | ||||||
|  |             base="stage" | ||||||
|  |           elif [[ "$rcvr" == "stage" ]]; then | ||||||
|  |             base="dev" | ||||||
|  |           else | ||||||
|  |             echo "* Unsure which branch to use for '$rcvr'. Please specify." | ||||||
|  |             exit 1 | ||||||
|  |           fi | ||||||
|  |           echo "* Base was not specified, using '$base' for '$rcvr'." | ||||||
|  |         else | ||||||
|  |           echo "* Requested pointing '$rcvr' branch to '$base'." | ||||||
|  |         fi | ||||||
|  |  | ||||||
|  |         echo -e "\n* Ensuring we are on base branch '$base'." && | ||||||
|  |         git switch "$base" && | ||||||
|  |         echo -e "\n* Changing pointer for '$rcvr' to '$base'." && | ||||||
|  |         git branch -f "$rcvr" "$base" && | ||||||
|  |         #echo -e "\n* Switching to branch '$rcvr'." && | ||||||
|  |         #git switch "$rcvr" && | ||||||
|  |         echo -e "\n* Forcing push on branch '$rcvr'." && | ||||||
|  |         git push --force --set-upstream origin "$rcvr" && | ||||||
|  |         echo -e "\n* Done! Displaying list of remote branches." && | ||||||
|  |         git ls-remote --heads | sort | ||||||
|  |  | ||||||
|  |         if [[ "$base" != "dev" ]]; then | ||||||
|  |           echo -e "\n* Checking if a dev branch exists." | ||||||
|  |           git ls-remote --exit-code --heads origin dev | ||||||
|  |           dev_exists="$?" | ||||||
|  |           if [[ "$dev_exists" == 0 ]]; then | ||||||
|  |             echo -e "\n* Switching back to dev." | ||||||
|  |             git switch dev | ||||||
|  |           elif [[ "$dev_exists" == 2 ]]; then | ||||||
|  |             echo -e "\n* Switching back to main." | ||||||
|  |             git switch main | ||||||
|  |           else | ||||||
|  |             echo "*** ERROR: Unknown status for dev_exists, '$dev_exists'. ***" | ||||||
|  |           fi | ||||||
|  |         fi | ||||||
|  |  | ||||||
|  |         echo -e "\n* Verifying which branch we're on." | ||||||
|  |         git branch | ||||||
|  |       } | ||||||
|  |       alias load-prod="load-branch prod" | ||||||
|  |       alias load-stage="load-branch stage" | ||||||
|  |       alias rollback-prod="load-branch prod main" | ||||||
|  |       alias rollback-stage="load-branch stage prod" | ||||||
|  |       alias rollback-dev="load-branch dev stage" | ||||||
|  |       alias reset-prod="load-branch prod main" | ||||||
|  |       alias reset-stage="load-branch stage main" | ||||||
|  |       alias reset-dev="load-branch dev main" | ||||||
|  |  | ||||||
| - name: General | Account Management | Users | Files | Common Variable | - name: General | Account Management | Users | Files | Common Variable | ||||||
|   set_fact: |   set_fact: | ||||||
| @@ -687,16 +990,17 @@ | |||||||
|       {{ metasploit_aliases }} |       {{ metasploit_aliases }} | ||||||
|       {{ show_config_aliases }} |       {{ show_config_aliases }} | ||||||
|       {{ edit_config_aliases }} |       {{ edit_config_aliases }} | ||||||
|  |       {{ function_clean_trashed }} | ||||||
|       {{ function_check_trash }} |       {{ function_check_trash }} | ||||||
|       {{ function_clean }} |       {{ function_clean }} | ||||||
|       {{ function_flatpak_usage }} |       {{ function_flatpak_usage }} | ||||||
|       {{ function_flatpak_purge }} |       {{ function_flatpak_purge }} | ||||||
|       {{ alias_vim }} |       {{ alias_vim }} | ||||||
|       {{ alias_here }} |       {{ alias_here }} | ||||||
|       {{ alias_docker_reload }} |       {{ function_docker_reload }} | ||||||
|       {{ alias_docker_update }} |       {{ function_docker_update }} | ||||||
|       {{ function_docker_upgrade }} |       {{ function_docker_upgrade }} | ||||||
|       {{ alias_docker_restart }} |       {{ function_docker_restart }} | ||||||
|       {{ alias_code_check }} |       {{ alias_code_check }} | ||||||
|       {{ alias_code_reset }} |       {{ alias_code_reset }} | ||||||
|       {{ function_code_reseed }} |       {{ function_code_reseed }} | ||||||
| @@ -712,6 +1016,19 @@ | |||||||
|       {{ alias_kill_system }} |       {{ alias_kill_system }} | ||||||
|       {{ function_update_sdks }} |       {{ function_update_sdks }} | ||||||
|       {{ function_ansible_vars }} |       {{ function_ansible_vars }} | ||||||
|  |       {{ alias_permission_commands }} | ||||||
|  |       {{ alias_iftop }} | ||||||
|  |       {{ alias_ls }} | ||||||
|  |       {{ alias_progs }} | ||||||
|  |       {{ alias_nethogs }} | ||||||
|  |       {{ alias_ansible_facts }} | ||||||
|  |       {{ function_now }} | ||||||
|  |       {{ function_backup }} | ||||||
|  |       {{ function_log }} | ||||||
|  |       {{ function_debian_upgrade }} | ||||||
|  |       {{ function_ebook_convert }} | ||||||
|  |       {{ alias_sudo }} | ||||||
|  |       {{ function_load_branch }} | ||||||
|  |  | ||||||
| - name: General | Account Management | Users | Files | .bashrc | - name: General | Account Management | Users | Files | .bashrc | ||||||
|   blockinfile: |   blockinfile: | ||||||
|   | |||||||
| @@ -1,12 +1,18 @@ | |||||||
| --- | --- | ||||||
| # Jobs relating to the ansible user. | # Jobs relating to the ansible user. | ||||||
|  |  | ||||||
|  | # $RANDOM is anywhere from 0 to 32767 in BASH. This would be up to ~9 hours. | ||||||
|  | # $RANDOM /  10 can be up to about 3200 seconds, or ~55 minutes. | ||||||
|  | # $RANDOM /  20 can be up to about 1600 seconds, or ~27 minutes. | ||||||
|  | # $RANDOM /  50 can be up to about  650 seconds, or ~11 minutes. | ||||||
|  | # $RANDOM / 100 can be up to about  320 seconds, or  ~5 minutes. | ||||||
|  | # This prevents multiple systems from hitting it at the exact same time. | ||||||
| - name: General | Cron | Ansible | Create Subscriber Job | - name: General | Cron | Ansible | Create Subscriber Job | ||||||
|   cron: |   cron: | ||||||
|     user: ansible |     user: ansible | ||||||
|     name: "Ansible Sync" |     name: "Ansible Sync" | ||||||
|     minute: "*/30" |     minute: "*/30" | ||||||
|     job: "sudo {{ ansible_pull_exec.stdout }} -o -U {{ git_repo_http }} --checkout {{ branch }}" |     job: "bash -c 'sleep $(( $RANDOM / 20 )); sudo {{ ansible_pull_exec.stdout }} -v -o -U {{ git_repo_http }} --checkout {{ branch }}'" | ||||||
|     state: present |     state: present | ||||||
|     disabled: "{{ 'yes' if no_telem else 'no' }}" |     disabled: "{{ 'yes' if no_telem else 'no' }}" | ||||||
|  |  | ||||||
| @@ -14,7 +20,7 @@ | |||||||
|   cron: |   cron: | ||||||
|     user: ansible |     user: ansible | ||||||
|     name: "Ansible Weekly Forced Sync" |     name: "Ansible Weekly Forced Sync" | ||||||
|     special_time: weekly |     special_time: daily | ||||||
|     job: "{{ user_root.home }}/bin/scm.sh" |     job: "bash -c 'sleep $(( $RANDOM /  1 )); sudo {{ ansible_pull_exec.stdout }} -v    -U {{ git_repo_http }} --checkout {{ branch }}'" | ||||||
|     state: present |     state: present | ||||||
|     disabled: "{{ 'yes' if no_telem else 'no' }}" |     disabled: "{{ 'yes' if no_telem else 'no' }}" | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								tasks/general/software/hyperling.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								tasks/general/software/hyperling.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | --- | ||||||
|  | # Software that I've written for personal use, to be placed in `~/bin/`. | ||||||
|  |  | ||||||
|  | # TODO TBD - Add content here and place this in local.yml! :) | ||||||
|  |  | ||||||
|  | # Refactor Music Library | ||||||
| @@ -6,13 +6,22 @@ | |||||||
|     metasploit_installer: msfinstall |     metasploit_installer: msfinstall | ||||||
|   when: ansible_system in ("Linux", "Darwin") |   when: ansible_system in ("Linux", "Darwin") | ||||||
|  |  | ||||||
|  | - name: General | Software | Metasploit | Refresh Apt Files | ||||||
|  |   shell: "{{ item }}" | ||||||
|  |   loop: | ||||||
|  |     - "mkdir -p /tmp/apt/" | ||||||
|  |     - "mv -fv /usr/share/keyrings/metasploit-framework.gpg /tmp/apt/metasploit-framework.gpg.old" | ||||||
|  |     - "mv -fv /etc/apt/sources.list.d/metasploit-framework.list /tmp/apt/metasploit-framework.list.old" | ||||||
|  |     - "mv -fv /etc/apt/preferences.d/pin-metasploit.pref /tmp/apt/pin-metasploit.pref.old" | ||||||
|  |   when: ansible_system in ("Linux") | ||||||
|  |   ignore_errors: true | ||||||
|  |  | ||||||
| - name: General | Software | Metasploit | Install | - name: General | Software | Metasploit | Install | ||||||
|   shell: "{{ item }}" |   shell: "{{ item }}" | ||||||
|   loop: |   loop: | ||||||
|     - "mv -fv /usr/share/keyrings/metasploit-framework.gpg /usr/share/keyrings/metasploit-framework.gpg.old" |  | ||||||
|     - "curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > {{ metasploit_installer }}" |     - "curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > {{ metasploit_installer }}" | ||||||
|     - "chmod 755 {{ metasploit_installer }}" |     - "chmod 755 {{ metasploit_installer }}" | ||||||
|     - "mkdir -p {{ global_bin }}" |     - "mkdir -p {{ global_bin }}" | ||||||
|     - "mv -fv ./msfinstall {{ global_bin }}/{{ metasploit_installer }}" |     - "mv -fv ./msfinstall {{ global_bin }}/{{ metasploit_installer }}" | ||||||
|     - "{{ global_bin }}/{{ metasploit_installer }}" |     - yes y | "{{ global_bin }}/{{ metasploit_installer }}" | ||||||
|   when: ansible_system in ("Linux", "Darwin") |   when: ansible_system in ("Linux", "Darwin") | ||||||
|   | |||||||
| @@ -43,7 +43,7 @@ | |||||||
|     - bash |     - bash | ||||||
|     - sudo |     - sudo | ||||||
|     - nmap |     - nmap | ||||||
|     - neofetch |     - "{{ neofetch }}" | ||||||
|     - "{{ sshfs }}" |     - "{{ sshfs }}" | ||||||
|     - "{{ locate }}" |     - "{{ locate }}" | ||||||
|     - zsh |     - zsh | ||||||
| @@ -56,6 +56,10 @@ | |||||||
|     - "{{ cron }}" |     - "{{ cron }}" | ||||||
|     - "{{ encfs }}" |     - "{{ encfs }}" | ||||||
|     - rsync |     - rsync | ||||||
|  |     - "{{ iftop }}" | ||||||
|  |     - "{{ nethogs }}" | ||||||
|  |     - "{{ ntp_server }}" | ||||||
|  |     - "{{ dig }}" | ||||||
|     state: present |     state: present | ||||||
|  |  | ||||||
| - name: General | Software | Packages | Install Software (DEV) | - name: General | Software | Packages | Install Software (DEV) | ||||||
| @@ -137,3 +141,11 @@ | |||||||
|     state: absent |     state: absent | ||||||
|   when: ansible_distribution != "Ubuntu" |   when: ansible_distribution != "Ubuntu" | ||||||
|   ignore_errors: yes |   ignore_errors: yes | ||||||
|  |  | ||||||
|  | - name: General | Software | Packages | Other Debian Packages | ||||||
|  |   package: | ||||||
|  |     name: | ||||||
|  |     - usbutils | ||||||
|  |     state: present | ||||||
|  |   when: ansible_distribution in ("Debian") | ||||||
|  |   ignore_errors: yes | ||||||
|   | |||||||
| @@ -9,6 +9,11 @@ | |||||||
|     pattern: "{{ crond_pattern }}" |     pattern: "{{ crond_pattern }}" | ||||||
|     state: started |     state: started | ||||||
|     enabled: yes |     enabled: yes | ||||||
|  |   when: ansible_virtualization_type != 'docker' | ||||||
|  |   register: cron_status | ||||||
|  |   until: cron_status.state == "started" | ||||||
|  |   retries: 3 | ||||||
|  |   delay: 3 | ||||||
|  |  | ||||||
|  |  | ||||||
| ## CUPS ## | ## CUPS ## | ||||||
| @@ -76,6 +81,11 @@ | |||||||
|     pattern: "{{ sshd_pattern }}" |     pattern: "{{ sshd_pattern }}" | ||||||
|     state: reloaded |     state: reloaded | ||||||
|     enabled: yes |     enabled: yes | ||||||
|  |   when: ansible_virtualization_type != 'docker' | ||||||
|  |   register: sshd_status | ||||||
|  |   until: sshd_status.state == "started" | ||||||
|  |   retries: 3 | ||||||
|  |   delay: 3 | ||||||
|  |  | ||||||
|  |  | ||||||
| ## JournalCTL ## | ## JournalCTL ## | ||||||
| @@ -96,3 +106,24 @@ | |||||||
|     state: stopped |     state: stopped | ||||||
|     enabled: no |     enabled: no | ||||||
|   ignore_errors: yes |   ignore_errors: yes | ||||||
|  |  | ||||||
|  | ## NTP ## | ||||||
|  |  | ||||||
|  | - name: General | Software | Services | NTP | Enable | ||||||
|  |   service: | ||||||
|  |     name: "{{ ntp_server }}" | ||||||
|  |     pattern: "{{ ntp_server }}" | ||||||
|  |     state: started | ||||||
|  |     enabled: yes | ||||||
|  |   when: ansible_virtualization_type != 'docker' | ||||||
|  |   register: ntp_status | ||||||
|  |   until: ntp_status.state == "started" | ||||||
|  |   retries: 3 | ||||||
|  |   delay: 3 | ||||||
|  |  | ||||||
|  | ## Timezone ## | ||||||
|  |  | ||||||
|  | # TBD/TODO: | ||||||
|  | # Add a field to general.yml config file which gets applied via timedatectl and /etc/localtime. | ||||||
|  | # Example of what to do to file: | ||||||
|  | #    /etc/localtime -> ../usr/share/zoneinfo/America/Phoenix | ||||||
|   | |||||||
| @@ -9,6 +9,9 @@ | |||||||
|   - name: General | Software | Swap | Check For Swapfile |   - name: General | Software | Swap | Check For Swapfile | ||||||
|     stat: |     stat: | ||||||
|       path: "{{ swap_file }}" |       path: "{{ swap_file }}" | ||||||
|  |       get_attributes: false | ||||||
|  |       get_checksum: false | ||||||
|  |       get_mime: false | ||||||
|     register: swap_check |     register: swap_check | ||||||
|  |  | ||||||
|   - name: General | Software | Swap | Install Block |   - name: General | Software | Swap | Install Block | ||||||
|   | |||||||
| @@ -13,8 +13,9 @@ | |||||||
|   git: |   git: | ||||||
|     repo: https://github.com/CISOfy/lynis |     repo: https://github.com/CISOfy/lynis | ||||||
|     dest: "{{ lynis_install_dir }}" |     dest: "{{ lynis_install_dir }}" | ||||||
|     clone: yes |     clone: true | ||||||
|     force: yes |     force: true | ||||||
|  |     update: true | ||||||
|   ignore_errors: yes |   ignore_errors: yes | ||||||
|  |  | ||||||
| - name: General | Tests | Lynis | Ensure Permissions (Looking at you Parrot OS!) | - name: General | Tests | Lynis | Ensure Permissions (Looking at you Parrot OS!) | ||||||
|   | |||||||
| @@ -8,9 +8,9 @@ | |||||||
|     amdgpu_cron_cmd: "{{ root_home.stdout }}/scm.sh" |     amdgpu_cron_cmd: "{{ root_home.stdout }}/scm.sh" | ||||||
|  |  | ||||||
| - name: Miner | Driver | AMDGPU | Install Dependencies | - name: Miner | Driver | AMDGPU | Install Dependencies | ||||||
|   package:  |   package: | ||||||
|     name:  |     name: | ||||||
|       - dkms  |       - dkms | ||||||
|       - mesa-common-dev |       - mesa-common-dev | ||||||
|       - clinfo |       - clinfo | ||||||
|     state: present |     state: present | ||||||
| @@ -62,16 +62,16 @@ | |||||||
|  |  | ||||||
| ## Step 1/3: Get Correct Kernel ## | ## Step 1/3: Get Correct Kernel ## | ||||||
| - name: Miner | Driver | AMDGPU | Install Recommended GA Kernel | - name: Miner | Driver | AMDGPU | Install Recommended GA Kernel | ||||||
|   shell: apt install --install-recommends linux-generic  |   shell: apt install --install-recommends linux-generic | ||||||
|   when: amdgpu_install.failed and hwe_kernel.stdout != "0" and ga_kernel.failed |   when: amdgpu_install.failed and hwe_kernel.stdout != "0" and ga_kernel.failed | ||||||
|  |  | ||||||
| - name: Miner | Driver | AMDGPU | Install Specific GA Kernel For Booting | - name: Miner | Driver | AMDGPU | Install Specific GA Kernel For Booting | ||||||
|   package: |   package: | ||||||
|     name:  |     name: | ||||||
|       - linux-headers-5.4.0-65  |       - linux-headers-5.4.0-65 | ||||||
|       - linux-headers-5.4.0-65-generic  |       - linux-headers-5.4.0-65-generic | ||||||
|       - linux-headers-generic  |       - linux-headers-generic | ||||||
|       - linux-image-generic  |       - linux-image-generic | ||||||
|       - linux-modules-extra-5.4.0-65-generic |       - linux-modules-extra-5.4.0-65-generic | ||||||
|     state: present |     state: present | ||||||
|   when: amdgpu_install.failed and hwe_kernel.stdout != "0" and ga_kernel.failed |   when: amdgpu_install.failed and hwe_kernel.stdout != "0" and ga_kernel.failed | ||||||
| @@ -121,10 +121,10 @@ | |||||||
|   when: amdgpu_install.failed and hwe_kernel.stdout != "0" |   when: amdgpu_install.failed and hwe_kernel.stdout != "0" | ||||||
|  |  | ||||||
| - name: Miner | Driver | AMDGPU | Update + Clean System | - name: Miner | Driver | AMDGPU | Update + Clean System | ||||||
|   shell: "apt update; apt dist-upgrade -y; apt autoremove -y" |   shell: "apt update; apt dist-upgrade -y; apt autoremove --purge -y" | ||||||
|   when: amdgpu_install.failed and hwe_kernel.stdout != "0" |   when: amdgpu_install.failed and hwe_kernel.stdout != "0" | ||||||
|  |  | ||||||
| # This is to ensure we can test adding `apt install --install-recommends linux-generic` later  | # This is to ensure we can test adding `apt install --install-recommends linux-generic` later | ||||||
| - name: Miner | Driver | AMDGPU | Boot Default Kernel | - name: Miner | Driver | AMDGPU | Boot Default Kernel | ||||||
|   lineinfile: |   lineinfile: | ||||||
|     path: /etc/default/grub |     path: /etc/default/grub | ||||||
|   | |||||||
| @@ -17,6 +17,7 @@ | |||||||
|     android_url: "https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip" |     android_url: "https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip" | ||||||
|     android_download_file: "{{ user_user.home }}/Downloads/android-cmdline-tools.tar.xz" |     android_download_file: "{{ user_user.home }}/Downloads/android-cmdline-tools.tar.xz" | ||||||
|     android_sdk_location: "{{ user_user.home }}/SDKs/Android/Sdk" |     android_sdk_location: "{{ user_user.home }}/SDKs/Android/Sdk" | ||||||
|  |     android_report_file: "{{ user_user.home }}/Reports/{{ ansible_hostname }}.sdk.android.txt" | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Android | Facts [2/3] | - name: Workstation | Linux | Software | Android | Facts [2/3] | ||||||
|   set_fact: |   set_fact: | ||||||
| @@ -29,23 +30,142 @@ | |||||||
|     android_sdkmanager_temp: "{{ android_sdk_cmdline_temp }}/cmdline-tools/bin/sdkmanager" |     android_sdkmanager_temp: "{{ android_sdk_cmdline_temp }}/cmdline-tools/bin/sdkmanager" | ||||||
|     android_sdkmanager_final: "{{ android_sdk_cmdline_final }}/sdkmanager" |     android_sdkmanager_final: "{{ android_sdk_cmdline_final }}/sdkmanager" | ||||||
|  |  | ||||||
|  | # Regarding images to download; the `default` is the smallest, then `playstore`. | ||||||
|  | # The `google_apis` images are significantly larger than the `playstore` option. | ||||||
|  | # | ||||||
|  | # This script was used to download and test the sizes: | ||||||
|  | # | ||||||
|  | ### #!/bin/bash | ||||||
|  | ### | ||||||
|  | ### cd /home/ling/SDKs/Android/Sdk/cmdline-tools/latest/bin | ||||||
|  | ### | ||||||
|  | ### # Actually to be used | ||||||
|  | ### echo "35 Play Store" | ||||||
|  | ### ./sdkmanager --install "system-images;android-35;google_apis_playstore;x86_64" | ||||||
|  | ### echo "36 Play Store" | ||||||
|  | ### ./sdkmanager --install "system-images;android-36;google_apis_playstore;x86_64" | ||||||
|  | ### | ||||||
|  | ### # FORTESTING file size | ||||||
|  | ### echo "35 AOSP" | ||||||
|  | ### ./sdkmanager --install "system-images;android-35;default;x86_64" | ||||||
|  | ### echo "36 APIs Only" | ||||||
|  | ### ./sdkmanager --install "system-images;android-36;google_apis;x86_64" | ||||||
|  | ### echo "35 APIs Only" | ||||||
|  | ### ./sdkmanager --install "system-images;android-35;google_apis;x86_64" | ||||||
|  | ### | ||||||
|  | ### exit 0 | ||||||
|  | # | ||||||
|  | # These were the results: | ||||||
|  | # | ||||||
|  | ### ~/SDKs/Android/Sdk/system-images]$ du -had2 | sort -h | ||||||
|  | ### 1.7G	./android-35/default | ||||||
|  | ### 2.2G	./android-35/google_apis_playstore | ||||||
|  | ### 2.3G	./android-36/google_apis_playstore | ||||||
|  | ### 3.5G	./android-35/google_apis | ||||||
|  | ### 4.3G	./android-36/google_apis | ||||||
|  | ### 6.6G	./android-36 | ||||||
|  | ### 7.3G	./android-35 | ||||||
|  | ### 14G	. | ||||||
|  |  | ||||||
|  | - name: Workstation | Linux | Software | Android | Facts [Downloads] | ||||||
|  |   set_fact: | ||||||
|  |     android_downloads_required: | ||||||
|  |       ### 36 ### | ||||||
|  |       - build-tools;36.0.0 | ||||||
|  |       - platforms;android-36 | ||||||
|  |       - sources;android-36 | ||||||
|  |       # Images | ||||||
|  |       #- system-images;android-35;default;x86_64 # TODO: Switch once it exists. | ||||||
|  |       - system-images;android-36;google_apis_playstore;x86_64 | ||||||
|  |       ### 16 ### | ||||||
|  |       - platforms;android-16 | ||||||
|  |       - sources;android-16 | ||||||
|  |       # Images | ||||||
|  |       - system-images;android-16;default;x86 | ||||||
|  |     android_downloads_additional: | ||||||
|  |       ### 35 ### | ||||||
|  |       - platforms;android-35 | ||||||
|  |       - sources;android-35 | ||||||
|  |       # Images | ||||||
|  |       - system-images;android-35;default;x86_64 | ||||||
|  |       ### 34 ### | ||||||
|  |       - platforms;android-34 | ||||||
|  |       - sources;android-34 | ||||||
|  |       # Images | ||||||
|  |       - system-images;android-34;default;x86_64 | ||||||
|  |       ### 33 ### | ||||||
|  |       - platforms;android-33 | ||||||
|  |       - sources;android-33 | ||||||
|  |       # Images | ||||||
|  |       - system-images;android-33;default;x86_64 | ||||||
|  |       ### 30 ### | ||||||
|  |       - platforms;android-30 | ||||||
|  |       - sources;android-30 | ||||||
|  |       # Images | ||||||
|  |       - system-images;android-30;default;x86_64 | ||||||
|  |       ### 27 ### | ||||||
|  |       - platforms;android-27 | ||||||
|  |       - sources;android-27 | ||||||
|  |       # Images | ||||||
|  |       - system-images;android-27;default;x86_64 | ||||||
|  |       ### 21 ### | ||||||
|  |       - platforms;android-21 | ||||||
|  |       - sources;android-21 | ||||||
|  |       # Images | ||||||
|  |       - system-images;android-21;default;x86_64 | ||||||
|  |     android_downloads_unused: | ||||||
|  |       ### 36 ### | ||||||
|  |       # Images | ||||||
|  |       - system-images;android-36;google_apis;x86_64 | ||||||
|  |       ### 35 ### | ||||||
|  |       - build-tools;35.0.0 | ||||||
|  |       - build-tools;35.0.1 | ||||||
|  |       # Images | ||||||
|  |       - system-images;android-35;aosp_atd;x86_64 # ATD = Automated Test Device | ||||||
|  |       - system-images;android-35;google_apis;x86_64 | ||||||
|  |       - system-images;android-35;google_apis_playstore;x86_64 | ||||||
|  |       ### 34 ### | ||||||
|  |       - build-tools;34.0.0 | ||||||
|  |       - platforms;android-34 | ||||||
|  |       - sources;android-34 | ||||||
|  |       # Images | ||||||
|  |       - system-images;android-34;google_apis;x86_64 | ||||||
|  |       - system-images;android-34;google_apis_playstore;x86_64 | ||||||
|  |       ### 16 ### | ||||||
|  |       # Images | ||||||
|  |       - system-images;android-16;google_apis;x86 | ||||||
|  |       ### 15 ### | ||||||
|  |       - platforms;android-15 | ||||||
|  |       - sources;android-15 | ||||||
|  |       # Images | ||||||
|  |       - system-images;android-15;default;x86 # Not working in Android AVDs | ||||||
|  |  | ||||||
| ## Checks ## | ## Checks ## | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Android | Check SDK Manager Exists [1/2] | - name: Workstation | Linux | Software | Android | Check SDK Manager Exists [1/2] | ||||||
|   stat: |   stat: | ||||||
|     path: "{{ android_sdkmanager_temp }}" |     path: "{{ android_sdkmanager_temp }}" | ||||||
|  |     get_attributes: false | ||||||
|  |     get_checksum: false | ||||||
|  |     get_mime: false | ||||||
|   register: android_sdkmanager_temp_stat |   register: android_sdkmanager_temp_stat | ||||||
|   when: coding == true |   when: coding == true | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Android | Check SDK Manager Exists [2/2] | - name: Workstation | Linux | Software | Android | Check SDK Manager Exists [2/2] | ||||||
|   stat: |   stat: | ||||||
|     path: "{{ android_sdkmanager_final }}" |     path: "{{ android_sdkmanager_final }}" | ||||||
|  |     get_attributes: false | ||||||
|  |     get_checksum: false | ||||||
|  |     get_mime: false | ||||||
|   register: android_sdkmanager_final_stat |   register: android_sdkmanager_final_stat | ||||||
|   when: coding == true |   when: coding == true | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Android | Check Download Exists | - name: Workstation | Linux | Software | Android | Check Download Exists | ||||||
|   stat: |   stat: | ||||||
|     path: "{{ android_download_file }}" |     path: "{{ android_download_file }}" | ||||||
|  |     get_attributes: false | ||||||
|  |     get_checksum: false | ||||||
|  |     get_mime: false | ||||||
|   register: android_download_stat |   register: android_download_stat | ||||||
|   when: coding == true |   when: coding == true | ||||||
|  |  | ||||||
| @@ -111,7 +231,7 @@ | |||||||
| ## Configure Modules ## | ## Configure Modules ## | ||||||
|  |  | ||||||
| # This can only be run once, otherwise cmdline-tools creates latest-* folders. | # This can only be run once, otherwise cmdline-tools creates latest-* folders. | ||||||
| - name: Workstation | Linux | Software | Android | Install Consistent Modules | - name: Workstation | Linux | Software | Android | Install | Consistent Modules | ||||||
|   shell: "yes | {{ android_sdkmanager_temp }} --install '{{ item }}' --sdk_root={{ android_sdk_location }}" |   shell: "yes | {{ android_sdkmanager_temp }} --install '{{ item }}' --sdk_root={{ android_sdk_location }}" | ||||||
|   loop: |   loop: | ||||||
|     # Current |     # Current | ||||||
| @@ -122,31 +242,47 @@ | |||||||
|   when: coding == true and not android_sdkmanager_final_stat.stat.exists |   when: coding == true and not android_sdkmanager_final_stat.stat.exists | ||||||
|  |  | ||||||
| # These are safe to run multiple times, and uses the new `latest` version. | # These are safe to run multiple times, and uses the new `latest` version. | ||||||
| - name: Workstation | Linux | Software | Android | Install Modules | - name: Workstation | Linux | Software | Android | Install | Required Modules | ||||||
|   shell: "yes | {{ android_sdkmanager_final }} --install '{{ item }}' --sdk_root={{ android_sdk_location }}" |   shell: "yes | {{ android_sdkmanager_final }} --install '{{ item }}' --sdk_root={{ android_sdk_location }}" | ||||||
|   loop: |   loop: "{{ android_downloads_required }}" | ||||||
|     # 34 |  | ||||||
|     - build-tools;34.0.0 |  | ||||||
|     - platforms;android-34 |  | ||||||
|     - sources;android-34 |  | ||||||
|     # 35 |  | ||||||
|     - build-tools;35.0.0 |  | ||||||
|     - build-tools;35.0.1 |  | ||||||
|     - platforms;android-35 |  | ||||||
|     - sources;android-35 |  | ||||||
|     # Images |  | ||||||
|     #- system-images;android-35;default;x86_64 |  | ||||||
|     #- system-images;android-35;aosp_atd;x86_64 |  | ||||||
|     - system-images;android-35;google_apis_playstore;x86_64 |  | ||||||
|   become_user: "{{ user }}" |   become_user: "{{ user }}" | ||||||
|   when: coding == true |   when: coding == true | ||||||
|  |  | ||||||
|  | # Add more versions for testing across all the important platforms. | ||||||
|  | - name: Workstation | Linux | Software | Android | Install | Additional Modules | ||||||
|  |   shell: "yes | {{ android_sdkmanager_final }} --install '{{ item }}' --sdk_root={{ android_sdk_location }}" | ||||||
|  |   loop: "{{ android_downloads_additional }}" | ||||||
|  |   become_user: "{{ user }}" | ||||||
|  |   when: coding == true and sdks == true | ||||||
|  |  | ||||||
|  | # Remove extra downloads if system is not meant for full amount of testing. | ||||||
|  | - name: Workstation | Linux | Software | Android | Uninstall | Additional Modules | ||||||
|  |   shell: "yes | {{ android_sdkmanager_final }} --uninstall '{{ item }}' --sdk_root={{ android_sdk_location }}" | ||||||
|  |   loop: "{{ android_downloads_additional }}" | ||||||
|  |   become_user: "{{ user }}" | ||||||
|  |   when: coding != true or sdks != true | ||||||
|  |  | ||||||
|  | # Remove any versions which used to be part of this script and no longer used. | ||||||
|  | - name: Workstation | Linux | Software | Android | Uninstall | Unused Modules | ||||||
|  |   shell: "yes | {{ android_sdkmanager_final }} --uninstall '{{ item }}' --sdk_root={{ android_sdk_location }}" | ||||||
|  |   loop: "{{ android_downloads_unused }}" | ||||||
|  |   become_user: "{{ user }}" | ||||||
|  |   when: coding == true | ||||||
|  |  | ||||||
|  | # Report the currently installed packges. | ||||||
|  | - name: Workstation | Linux | Software | Android | Report Modules | ||||||
|  |   shell: "{{ android_sdkmanager_final }} --list_installed --sdk_root={{ android_sdk_location }} > {{ android_report_file }}" | ||||||
|  |   become_user: "{{ user }}" | ||||||
|  |   when: coding == true | ||||||
|  |  | ||||||
|  | ## Flutter and Licenses ## | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Android | Inform Flutter | - name: Workstation | Linux | Software | Android | Inform Flutter | ||||||
|   shell: "{{ flutter }} config --android-sdk={{ android_sdk_location }}" |   shell: "{{ flutter }} config --android-sdk={{ android_sdk_location }}" | ||||||
|   become_user: "{{ user }}" |   become_user: "{{ user }}" | ||||||
|   when: coding == true |   when: coding == true | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Android | Licenses Agreements [1/2] | - name: Workstation | Linux | Software | Android | License Agreements [1/2] | ||||||
|   shell: "yes | {{ android_sdkmanager_final }} --licenses --sdk_root={{ android_sdk_location }}" |   shell: "yes | {{ android_sdkmanager_final }} --licenses --sdk_root={{ android_sdk_location }}" | ||||||
|   become_user: "{{ user }}" |   become_user: "{{ user }}" | ||||||
|   when: coding == true |   when: coding == true | ||||||
|   | |||||||
| @@ -34,18 +34,20 @@ | |||||||
| - name: Workstation | Linux | Flatpak Distro | Flatpak | Arrays | - name: Workstation | Linux | Flatpak Distro | Flatpak | Arrays | ||||||
|   set_fact: |   set_fact: | ||||||
|     flatpaks_generic: |     flatpaks_generic: | ||||||
|       - { app: "org.libreoffice.LibreOffice", name: "office", extra: "" } |  | ||||||
|       - { app: "io.gitlab.librewolf-community", name: "librewolf", extra: "" } |  | ||||||
|       - { app: "org.signal.Signal", name: "signal", extra: "" } |  | ||||||
|       - { app: "org.mozilla.firefox", name: "firefox-flatpak", extra: "" } |       - { app: "org.mozilla.firefox", name: "firefox-flatpak", extra: "" } | ||||||
|       - { app: "com.transmissionbt.Transmission", name: "transmission", extra: "" } |       - { app: "io.gitlab.librewolf-community", name: "librewolf", extra: "" } | ||||||
|  |       - { app: "chat.simplex.simplex", name: "simplex", extra: "" } | ||||||
|  |       - { app: "org.signal.Signal", name: "signal", extra: "" } | ||||||
|  |       - { app: "im.riot.Riot", name: "element", extra: "" } | ||||||
|  |       - { app: "org.telegram.desktop", name: "telegram", extra: "" } | ||||||
|       - { app: "org.gimp.GIMP", name: "gimp", extra: "" } |       - { app: "org.gimp.GIMP", name: "gimp", extra: "" } | ||||||
|  |       - { app: "org.libreoffice.LibreOffice", name: "office", extra: "" } | ||||||
|  |       - { app: "com.transmissionbt.Transmission", name: "transmission", extra: "" } | ||||||
|     flatpaks_coding: |     flatpaks_coding: | ||||||
|       - { app: "com.vscodium.codium", name: "codium-flatpak", extra: "" } |       - { app: "com.vscodium.codium", name: "codium-flatpak", extra: "" } | ||||||
|       - { app: "com.google.AndroidStudio", name: "android-studio", extra: "" } |       - { app: "com.google.AndroidStudio", name: "android-studio", extra: "" } | ||||||
|       - { app: "io.dbeaver.DBeaverCommunity", name: "dbeaver", extra: "" } |       - { app: "io.dbeaver.DBeaverCommunity", name: "dbeaver", extra: "" } | ||||||
|       - { app: "org.godotengine.Godot", name: "godot", extra: "" } |       - { app: "com.visualstudio.code-oss", name: "code-flatpak", extra: "" } | ||||||
|       - { app: "com.visualstudio.code-oss", name: "code", extra: "" } |  | ||||||
|     flatpaks_editing_video: |     flatpaks_editing_video: | ||||||
|       - { app: "org.shotcut.Shotcut", name: "shotcut", extra: "" } |       - { app: "org.shotcut.Shotcut", name: "shotcut", extra: "" } | ||||||
|       - { app: "com.obsproject.Studio", name: "obs", extra: "" } |       - { app: "com.obsproject.Studio", name: "obs", extra: "" } | ||||||
| @@ -67,14 +69,13 @@ | |||||||
|       - { app: "org.audacityteam.Audacity", name: "audacity", extra: "" } # Say "no thanks" to spyware. |       - { app: "org.audacityteam.Audacity", name: "audacity", extra: "" } # Say "no thanks" to spyware. | ||||||
|       - { app: "com.discordapp.Discord", name: "discord", extra: "" } # Stopped working, just spins and says Starting. |       - { app: "com.discordapp.Discord", name: "discord", extra: "" } # Stopped working, just spins and says Starting. | ||||||
|       # 2022-11-20 No longer using any of these and they're taking up a lot of space. # |       # 2022-11-20 No longer using any of these and they're taking up a lot of space. # | ||||||
|       - { app: "im.riot.Riot", name: "element", extra: "" } |  | ||||||
|       - { app: "org.telegram.desktop", name: "telegram", extra: "" } |  | ||||||
|       - { app: "com.jetbrains.PyCharm-Community", name: "pycharm", extra: "" } |       - { app: "com.jetbrains.PyCharm-Community", name: "pycharm", extra: "" } | ||||||
|       # End 2022-11-20 # |       # End 2022-11-20 # | ||||||
|       - { app: "io.lbry.lbry-app", name: "lbry", extra: "dbus-launch" } # No longer supported, noticed 2023-09-01. |       - { app: "io.lbry.lbry-app", name: "lbry", extra: "dbus-launch" } # No longer supported, noticed 2023-09-01. | ||||||
|       - { app: "chat.delta.desktop", name: "deltachat", extra: "" } # No longer used, removed 2023-12-18. |       - { app: "chat.delta.desktop", name: "deltachat", extra: "" } # No longer used, removed 2023-12-18. | ||||||
|       - { app: "org.gnome.Geary", name: "geary", extra: "" } # No longer used, removed 2024-12-15 |       - { app: "org.gnome.Geary", name: "geary", extra: "" } # No longer used, removed 2024-12-15 | ||||||
|       - { app: "org.rncbc.qsynth", name: "qsynth", extra: "" } # 2024-12-15, Not worth the setup, use LMMS or VMPK. |       - { app: "org.rncbc.qsynth", name: "qsynth", extra: "" } # 2024-12-15, Not worth the setup, use LMMS or VMPK. | ||||||
|  |       - { app: "org.godotengine.Godot", name: "godot", extra: "" } # 20250831 Stopped playing with this months / years ago. | ||||||
|  |  | ||||||
| # Generic # | # Generic # | ||||||
|  |  | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ | |||||||
|     flutter_url: "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.27.2-stable.tar.xz" |     flutter_url: "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.27.2-stable.tar.xz" | ||||||
|     flutter_download_file: "{{ user_user.home }}/Downloads/flutter.tar.xz" |     flutter_download_file: "{{ user_user.home }}/Downloads/flutter.tar.xz" | ||||||
|     flutter_sdk_location: "{{ user_user.home }}/SDKs/Flutter" |     flutter_sdk_location: "{{ user_user.home }}/SDKs/Flutter" | ||||||
|     flutter_report: "{{ user_user.home }}/Reports/flutter.txt" |     flutter_report: "{{ user_user.home }}/Reports/{{ ansible_hostname }}.sdk.flutter.txt" | ||||||
|   when: coding == true |   when: coding == true | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Flutter | Facts [2/4] | - name: Workstation | Linux | Software | Flutter | Facts [2/4] | ||||||
| @@ -36,12 +36,18 @@ | |||||||
| - name: Workstation | Linux | Software | Flutter | Check SDK Exists | - name: Workstation | Linux | Software | Flutter | Check SDK Exists | ||||||
|   stat: |   stat: | ||||||
|     path: "{{ flutter_sdk_location }}" |     path: "{{ flutter_sdk_location }}" | ||||||
|  |     get_attributes: false | ||||||
|  |     get_checksum: false | ||||||
|  |     get_mime: false | ||||||
|   register: flutter_sdk_stat |   register: flutter_sdk_stat | ||||||
|   when: coding == true |   when: coding == true | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Flutter | Check Download Exists | - name: Workstation | Linux | Software | Flutter | Check Download Exists | ||||||
|   stat: |   stat: | ||||||
|     path: "{{ flutter_download_file }}" |     path: "{{ flutter_download_file }}" | ||||||
|  |     get_attributes: false | ||||||
|  |     get_checksum: false | ||||||
|  |     get_mime: false | ||||||
|   register: flutter_download_stat |   register: flutter_download_stat | ||||||
|   when: coding == true |   when: coding == true | ||||||
|  |  | ||||||
|   | |||||||
| @@ -15,6 +15,9 @@ | |||||||
| - name: Workstation | Linux | Software | Lutris | Check PPA | - name: Workstation | Linux | Software | Lutris | Check PPA | ||||||
|   stat: |   stat: | ||||||
|     path: "{{ lutris_source_list }}" |     path: "{{ lutris_source_list }}" | ||||||
|  |     get_attributes: false | ||||||
|  |     get_checksum: false | ||||||
|  |     get_mime: false | ||||||
|   register: lutris_source_exists |   register: lutris_source_exists | ||||||
|   when: ansible_pkg_mgr == "apt" |   when: ansible_pkg_mgr == "apt" | ||||||
|  |  | ||||||
|   | |||||||
| @@ -39,8 +39,17 @@ | |||||||
|       - "{{ evolution }}" |       - "{{ evolution }}" | ||||||
|       - "{{ evolution }}*" |       - "{{ evolution }}*" | ||||||
|       - gparted |       - gparted | ||||||
|  |       - hugo | ||||||
|     state: present |     state: present | ||||||
|  |  | ||||||
|  | - name: Workstation | Linux | Software | Packages | GS Connect (KDE Connect, Android Tool) | ||||||
|  |   package: | ||||||
|  |     name: | ||||||
|  |     - gnome-shell-extension-gsconnect | ||||||
|  |     state: present | ||||||
|  |   when: ansible_distribution in ("Debian") | ||||||
|  |   ignore_errors: yes | ||||||
|  |  | ||||||
| # Remove Repo Software # | # Remove Repo Software # | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Packages | Remove Applications | - name: Workstation | Linux | Software | Packages | Remove Applications | ||||||
|   | |||||||
| @@ -22,6 +22,9 @@ | |||||||
| - name: Workstation | Linux | Software | VS Codium | Check PPA | - name: Workstation | Linux | Software | VS Codium | Check PPA | ||||||
|   stat: |   stat: | ||||||
|     path: "{{ vscodium_source_list }}" |     path: "{{ vscodium_source_list }}" | ||||||
|  |     get_attributes: false | ||||||
|  |     get_checksum: false | ||||||
|  |     get_mime: false | ||||||
|   register: vscodium_source_exists |   register: vscodium_source_exists | ||||||
|   when: ansible_pkg_mgr == "apt" |   when: ansible_pkg_mgr == "apt" | ||||||
|  |  | ||||||
|   | |||||||
| @@ -13,12 +13,10 @@ | |||||||
|                       , 'io.gitlab.librewolf-community.desktop', 'librewolf.desktop' |                       , 'io.gitlab.librewolf-community.desktop', 'librewolf.desktop' | ||||||
|                       , 'org.mozilla.firefox.desktop', 'firefox.desktop' |                       , 'org.mozilla.firefox.desktop', 'firefox.desktop' | ||||||
|                       , 'org.signal.Signal.desktop', 'signal-desktop.desktop' |                       , 'org.signal.Signal.desktop', 'signal-desktop.desktop' | ||||||
|                       , 'im.riot.Riot.desktop' |  | ||||||
|                       , 'org.telegram.desktop.desktop' |                       , 'org.telegram.desktop.desktop' | ||||||
|                       , 'com.discordapp.Discord.desktop' |                       , 'com.discordapp.Discord.desktop' | ||||||
|                       , 'com.vscodium.codium.desktop' |                       , 'com.vscodium.codium.desktop' | ||||||
|                       , 'codium.desktop' |                       , 'codium.desktop' | ||||||
|                       , 'com.google.AndroidStudio.desktop' |  | ||||||
|                       , 'org.shotcut.Shotcut.desktop' |                       , 'org.shotcut.Shotcut.desktop' | ||||||
|                       , 'io.lmms.LMMS.desktop' |                       , 'io.lmms.LMMS.desktop' | ||||||
|                       , 'io.lbry.lbry-app.desktop', 'lbry.desktop' |                       , 'io.lbry.lbry-app.desktop', 'lbry.desktop' | ||||||
| @@ -38,6 +36,11 @@ | |||||||
| #, 'org.godotengine.Godot.desktop' | #, 'org.godotengine.Godot.desktop' | ||||||
| # 2025-03-07 Removed in place of a 2nd VS Codium install (apt version). | # 2025-03-07 Removed in place of a 2nd VS Codium install (apt version). | ||||||
| #, 'com.visualstudio.code-oss.desktop', 'code-oss.desktop' | #, 'com.visualstudio.code-oss.desktop', 'code-oss.desktop' | ||||||
|  | # 2025-03-21 Not really using Android Studio now that Flutter is working. | ||||||
|  | #, 'com.google.AndroidStudio.desktop' | ||||||
|  | # 2025-08-31 Not used a whole lot, installed again just to explore. | ||||||
|  | #, 'im.riot.Riot.desktop' | ||||||
|  | #, 'chat.simplex.simplex.desktop' | ||||||
|  |  | ||||||
| - name: Workstation | Account Management | GNOME | Facts (NixOS) | - name: Workstation | Account Management | GNOME | Facts (NixOS) | ||||||
|   set_fact: |   set_fact: | ||||||
| @@ -216,7 +219,12 @@ | |||||||
|       dconf write /org/gnome/desktop/notifications/application/org-gnome-evolution/enable-sound-alerts false && inc_dconf && |       dconf write /org/gnome/desktop/notifications/application/org-gnome-evolution/enable-sound-alerts false && inc_dconf && | ||||||
|       dconf write /org/gnome/desktop/notifications/application/org-gnome-evolution/enable false && inc_dconf && |       dconf write /org/gnome/desktop/notifications/application/org-gnome-evolution/enable false && inc_dconf && | ||||||
|  |  | ||||||
|       dconf write /org/gnome/settings-daemon/plugins/color/night-light-enabled true |       # Red Mode (Night Light) | ||||||
|  |       typeset -l redmode | ||||||
|  |       redmode="{{ redmode }}" | ||||||
|  |       if [[ $redmode == "true" ]]; then | ||||||
|  |         dconf write /org/gnome/settings-daemon/plugins/color/night-light-enabled true | ||||||
|  |       fi | ||||||
|       dconf write /org/gnome/settings-daemon/plugins/color/night-light-schedule-automatic false |       dconf write /org/gnome/settings-daemon/plugins/color/night-light-schedule-automatic false | ||||||
|       dconf write /org/gnome/settings-daemon/plugins/color/night-light-temperature "uint32 3170" |       dconf write /org/gnome/settings-daemon/plugins/color/night-light-temperature "uint32 3170" | ||||||
|       dconf write /org/gnome/settings-daemon/plugins/color/night-light-schedule-from 2.0 |       dconf write /org/gnome/settings-daemon/plugins/color/night-light-schedule-from 2.0 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user