mirror of
				https://github.com/RasppleII/a2server.git
				synced 2025-10-30 23:16:08 +00:00 
			
		
		
		
	Compare commits
	
		
			30 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 27d40503be | ||
|  | 1c8acba1ae | ||
|  | 34836dcbb4 | ||
|  | 7b7917d417 | ||
|  | 938db3c46b | ||
|  | 4d1b5db5e3 | ||
|  | 7d1a06a916 | ||
|  | f9b120002a | ||
|  | 49d50e49ac | ||
|  | dfa1e26c80 | ||
|  | d86e3bfa88 | ||
|  | cd20570999 | ||
|  | cd8271cd56 | ||
|  | 750b9998df | ||
|  | 9ba5258fe0 | ||
|  | 50875f5c3f | ||
|  | ca4e3b76e6 | ||
|  | 3a82176d0a | ||
|  | 061c3c1897 | ||
|  | dea2ea2ce2 | ||
|  | bb5f42462e | ||
|  | 59d293ec84 | ||
|  | 9dfbe0e9f3 | ||
|  | ca12a4a9e9 | ||
|  | 94b6dcaa26 | ||
|  | da204bd05b | ||
|  | fbc1ce5ba2 | ||
|  | b7528026de | ||
|  | 60f88e4e8a | ||
|  | 13343a5c2a | 
							
								
								
									
										86
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										86
									
								
								README.md
									
									
									
									
									
								
							| @@ -13,22 +13,84 @@ relatively modern piece of it.  As such they should be preserved as they are. | |||||||
|  |  | ||||||
| ## Developer note | ## Developer note | ||||||
|  |  | ||||||
| To use the scripts on a server other than Ivan's, you'll want to export | To use the scripts on your own server, including your local machine: | ||||||
| the shell variable A2SERVER_SCRIPT_URL to the base URL of this repository |  | ||||||
| on your server.  The base-URL should be slash-terminated.  You can then run |  | ||||||
| the following snippet: |  | ||||||
|  |  | ||||||
| ~~~ bash | ~~~ bash | ||||||
| wget -O a2server-setup ${A2SERVER_SCRIPT_URL}setup/index.txt; source a2server-setup | export A2SERVER_SCRIPT_URL=http://yoururl.com/ | ||||||
| ~~~ | ~~~ | ||||||
|  |  | ||||||
| A simple method for installing from a local subdirectory is to `cd` to it and | To prevent needing to recompile various packages from source code during | ||||||
| then type `python -m SimpleHTTPServer`. Then | installation, a number of precompiled binary files are downloaded for Raspbian, | ||||||
| `export A2SERVER_SCRIPT_URL="http://localhost:8000/"` | Debian-x86, and Debian-amd64. If you wish to host these on your own server: | ||||||
| or use the IP address of the host machine on your LAN instead of localhost. |  | ||||||
|  | ~~~ bash | ||||||
|  | export A2SERVER_BINARY_URL=http://yoururl.com/files/ | ||||||
|  | ~~~ | ||||||
|  |  | ||||||
|  | You do not need to use a subdirectory called "files", or the same server, but | ||||||
|  | that's the normal arrangement. The precompiled packages are available here: | ||||||
|  | `http://ivanx.com/a2server/files/dist/a2serverbinaries.tar.gz` | ||||||
|  |  | ||||||
|  | Several Apple II third-party binaries are downloaded during installation, as | ||||||
|  | well as third-party source code if precompiled binaries are unavailable or | ||||||
|  | you don't wish to use them. If you want these external dependencies locally | ||||||
|  | during development, they need to go into a folder called "external" in | ||||||
|  | the binaries URL, and that needs to contain folders called "appleii" and | ||||||
|  | "source". To download all of these external packages, download and run the | ||||||
|  | shell script at | ||||||
|  | `http://ivanx.com/a2server/files/dist/getexternal.sh`. | ||||||
|  |  | ||||||
|  | Once you have those: | ||||||
|  |  | ||||||
|  | ~~~ bash | ||||||
|  | export A2SERVER_NO_EXTERNAL=1 | ||||||
|  | ~~~ | ||||||
|  |  | ||||||
|  | You may want to put the above exports into `~/.bashrc` or `~/.bash_profile`. | ||||||
|  |  | ||||||
|  | If you want to host scripts locally installed on your own machine or another | ||||||
|  | computer on your LAN, type the following, and export "http://localhost:8000/" | ||||||
|  | or "http://lan.ip.address:8000/" for the above URL's. | ||||||
|  |  | ||||||
|  | ~~~ | ||||||
|  | python -m SimpleHTTPServer | ||||||
|  | ~~~ | ||||||
|  |  | ||||||
|  | Once you're set, you can then run the following snippet to install A2SERVER: | ||||||
|  |  | ||||||
|  | ~~~ | ||||||
|  | wget -O setup ${A2SERVER_SCRIPT_URL}setup/index.txt; source setup | ||||||
|  | ~~~ | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Offline install: | ||||||
|  |  | ||||||
|  | Using locally hosted binaries and external dependencies, it's possible to | ||||||
|  | install completely offline if dependent packages have been installed. | ||||||
|  |  | ||||||
|  | If precompiled binaries are available, on Wheezy: | ||||||
|  |  | ||||||
|  | ~~~ | ||||||
|  | sudo apt-get -y install unzip libgnustep-base1.22 libdb5.1 libgcrypt11 libssl1.0.0 attr fuse libglib2.0-0 libattr1 libfuse2 | ||||||
|  | ~~~ | ||||||
|  |  | ||||||
|  | If precompiled binaries are available, on Jessie: | ||||||
|  |  | ||||||
|  | ~~~ | ||||||
|  | sudo apt-get -y install unzip unar libdb5.3 libgcrypt20 libssl1.0.0 attr fuse libglib2.0-0 libattr1 libfuse2 | ||||||
|  | ~~~ | ||||||
|  |  | ||||||
|  | If precompiled binaries are not available, on Wheezy: | ||||||
|  |  | ||||||
|  | ~~~ | ||||||
|  | sudo apt-get -y install unzip build-essential zlib1g-dev libgnustep-base-dev libz-dev libbz2-dev libssl-dev libicu-dev libdb5.1-dev libgcrypt11-dev libglib2.0-dev libattr1-dev libfuse-dev | ||||||
|  | ~~~ | ||||||
|  |  | ||||||
|  | If precompiled binaries are not available, on Jessie: | ||||||
|  |  | ||||||
|  | ~~~ | ||||||
|  | sudo apt-get -y install unzip unar build-essential zlib1g-dev unzip libssl-dev libdb5.3-dev libgcrypt11-dev libglib2.0-dev libattr1-dev libfuse-dev | ||||||
|  | ~~~ | ||||||
|  |  | ||||||
| You should probably export A2SERVER_SCRIPT_URL in your .bashrc or whatever |  | ||||||
| file configures your development environment.  Also be advised that as of |  | ||||||
| version 1.24 of A2SERVER, you must use the snippet above. |  | ||||||
|  |  | ||||||
| [Ivan's site]: http://appleii.ivanx.com/a2server/ | [Ivan's site]: http://appleii.ivanx.com/a2server/ | ||||||
|   | |||||||
							
								
								
									
										1749
									
								
								files/A2FILES-list.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1749
									
								
								files/A2FILES-list.txt
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										66
									
								
								files/dist/getexternal.sh
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										66
									
								
								files/dist/getexternal.sh
									
									
									
									
										vendored
									
									
										Executable file
									
								
							| @@ -0,0 +1,66 @@ | |||||||
|  | #! /bin/bash | ||||||
|  | # vim: set tabstop=4 shiftwidth=4 expandtab filetype=sh: | ||||||
|  |  | ||||||
|  | if ! hash wget; then | ||||||
|  |     echo "wget is not installed. On a Mac, install it with MacPorts or Homebrew." | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | echo "Downloading items..." | ||||||
|  |  | ||||||
|  | mkdir -p files/external/source | ||||||
|  | wget -O files/external/source/ciopfs-0.4.tar.gz http://www.brain-dump.org/projects/ciopfs/ciopfs-0.4.tar.gz | ||||||
|  | wget -O files/external/source/macipgw.zip https://github.com/zero2sixd/macipgw/archive/2a5f6a7521a627e46b18468d44f4306fb0a7b7ab.zip | ||||||
|  | wget -O files/external/source/netatalk-2.2.4.tar.gz http://downloads.sourceforge.net/project/netatalk/netatalk/2.2.4/netatalk-2.2.4.tar.gz | ||||||
|  | wget -O files/external/source/nulib2-3.1.0a2.zip https://github.com/fadden/nulib2/archive/20fe7efb4d37fedf807416c16d74d51d893ea48a.zip | ||||||
|  | wget -O files/external/source/unar-1.8.1.zip https://github.com/incbee/Unarchiver/archive/unar-1.8.1.zip | ||||||
|  |  | ||||||
|  | mkdir -p files/external/appleii | ||||||
|  | wget --max-redirect 0 -O files/external/appleii/Apple_II_System_Disk_3.2.sea.bin http://download.info.apple.com/Apple_Support_Area/Apple_Software_Updates/English-North_American/Apple_II/Apple_II_Supplemental/Apple_II_System_Disk_3.2.sea.bin | ||||||
|  | wget -O files/external/appleii/Asimov.shk http://www.ninjaforce.com/downloads/Asimov.shk | ||||||
|  | wget -O files/external/appleii/MOUNTIT.SHK http://www.brutaldeluxe.fr/products/apple2gs/MOUNTIT.SHK | ||||||
|  | wget -O files/external/appleii/Marinetti3.0b8.po http://www.a2retrosystems.com/downloads/Marinetti3.0b8.po | ||||||
|  | wget -O files/external/appleii/PPPX.1.3d4.SHK http://www.apple2.org/marinetti/PPPX.1.3d4.SHK | ||||||
|  | wget -O files/external/appleii/dsk2file.shk http://www.dwheeler.com/6502/oneelkruns/dsk2file.zip | ||||||
|  | wget -O files/external/appleii/gshk11.sea http://www.nulib.com/library/gshk11.sea | ||||||
|  | wget -O files/external/appleii/shrinkit.sdk http://www.nulib.com/library/shrinkit.sdk | ||||||
|  | wget -O files/external/appleii/spectrum_gold_2mg.zip http://www.speccie.co.uk/speccie/software/spectrum_gold_2mg.zip | ||||||
|  | wget -O files/external/appleii/uthernet2ll.bxy http://www.speccie.co.uk/speccie/software/uthernet2ll.bxy | ||||||
|  | wget -O files/external/appleii/uthernetll.bxy http://www.speccie.co.uk/speccie/software/uthernetll.bxy | ||||||
|  |  | ||||||
|  | unset safeUrl samUrl snapUrl safeVer samVer snapVer | ||||||
|  | html=$(wget -qO- http://speccie.co.uk/speccie/Site/Download_Centre_files/widget1_markup.html) | ||||||
|  | safeUrl=$(echo "$html" | grep -i 'safe2.*bxy' | tr '<>' '\n' | grep href | cut -d '=' -f 2 | tr -d '"') | ||||||
|  | samUrl=$(echo "$html" | grep -i 'sam2.*bxy' | tr '<>' '\n' | grep href | cut -d '=' -f 2 | tr -d '"') | ||||||
|  | snapUrl=$(echo "$html" | grep -i 'snap.*bxy' | tr '<>' '\n' | grep href | cut -d '=' -f 2 | tr -d '"') | ||||||
|  | wget -O files/external/appleii/safe2.bxy "$safeUrl" | ||||||
|  | wget -O files/external/appleii/sam2.bxy "$samUrl" | ||||||
|  | wget -O files/external/appleii/snap.bxy "$snapUrl" | ||||||
|  |  | ||||||
|  | for gsosInstall in {1..3}; do | ||||||
|  |     activeDisk=0 | ||||||
|  |     mkdir -p files/external/appleii/gsos60${gsosInstall} | ||||||
|  |  | ||||||
|  |     diskNames=( Install System.Disk SystemTools1 SystemTools2 Fonts synthLAB ) | ||||||
|  |     if (( $gsosInstall == 1 )); then | ||||||
|  |         gsosURL="http://download.info.apple.com/Apple_Support_Area/Apple_Software_Updates/English-North_American/Apple_II/Apple_IIGS_System_6.0.1/" | ||||||
|  |         wget --max-redirect 0 -O files/external/appleii/gsos601/Disk_7_of_7-Apple_II_Setup.sea.bin http://download.info.apple.com/Apple_Support_Area/Apple_Software_Updates/English-North_American/Apple_II/Apple_IIGS_System_6.0.1/Disk_7_of_7-Apple_II_Setup.sea.bin | ||||||
|  |     elif (( $gsosInstall == 2 )); then | ||||||
|  |         gsosURL="http://mirrors.apple2.org.za/Apple%20II%20Documentation%20Project/Software/Operating%20Systems/Apple%20IIGS%20System/Disk%20Images/" | ||||||
|  |         diskNames=( Install System.Disk SystemTools1 SystemTools2 SystemTools3 Fonts1 Fonts2 synthLAB ) | ||||||
|  |         diskWebNames=( Install System%20disk System%20tools%201 System%20tools%202 System%20tools%203 Fonts%201 Fonts%202 Synthlab ) | ||||||
|  |     elif (( $gsosInstall == 3 )); then | ||||||
|  |         gsosURL="ftp://ftp.apple.asimov.net/pub/apple_II/images/gs/os/gsos/Apple_IIGS_System_6.0.3/" | ||||||
|  |     fi | ||||||
|  |  | ||||||
|  |     for diskname in ${diskNames[@]}; do | ||||||
|  |         outfile="files/external/appleii/gsos60${gsosInstall}/$diskname.po" | ||||||
|  |         (( activeDisk++ )) | ||||||
|  |         if (( $gsosInstall == 1 )); then | ||||||
|  |             wget --max-redirect 0 -O files/external/appleii/gsos601/"Disk_${activeDisk}_of_7-${diskname}.sea.bin" "${gsosURL}Disk_${activeDisk}_of_7-${diskname}.sea.bin" | ||||||
|  |         elif (( $gsosInstall == 2 )); then | ||||||
|  |             wget -O $outfile "$gsosURL/IIGS%20System%206.0.2%20-%20Disk%20${activeDisk}%20${diskWebNames[$activeDisk-1]}.po" | ||||||
|  |         elif (( $gsosInstall == 3 )); then | ||||||
|  |             wget -O $outfile "$gsosURL/$diskname.po" | ||||||
|  |         fi | ||||||
|  |     done | ||||||
|  | done | ||||||
							
								
								
									
										152
									
								
								files/netatalk-init.d-clean.txt
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										152
									
								
								files/netatalk-init.d-clean.txt
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,152 @@ | |||||||
|  | #!/bin/sh | ||||||
|  | ### BEGIN INIT INFO | ||||||
|  | # Provides:          netatalk | ||||||
|  | # Required-Start:    $remote_fs $syslog | ||||||
|  | # Should-Start:      avahi-daemon | ||||||
|  | # Required-Stop:     $remote_fs $syslog | ||||||
|  | # Default-Start:     2 3 4 5 | ||||||
|  | # Default-Stop:      1 | ||||||
|  | ### END INIT INFO | ||||||
|  | # | ||||||
|  | # netatalk      Netatalk 2.2.4 initscript | ||||||
|  | # Author:       Thomas Kaiser <Thomas.Kaiser@phg-online.de> | ||||||
|  |  | ||||||
|  | set -e | ||||||
|  |  | ||||||
|  | PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin | ||||||
|  | DESC="Netatalk" | ||||||
|  | NAME=netatalk | ||||||
|  | SCRIPTNAME=/etc/init.d/$NAME | ||||||
|  |  | ||||||
|  | # Guard to prevent execution if netatalk was removed. | ||||||
|  | test -x /usr/local/sbin/afpd || exit 0 | ||||||
|  |  | ||||||
|  | # Set defaults. Please change these options in /etc/default/netatalk | ||||||
|  | ATALK_NAME=`/bin/hostname --short` | ||||||
|  | ATALK_UNIX_CHARSET='LOCALE' | ||||||
|  | ATALK_MAC_CHARSET='MAC_ROMAN' | ||||||
|  |  | ||||||
|  | CNID_METAD_RUN=yes | ||||||
|  | AFPD_RUN=yes | ||||||
|  | AFPD_MAX_CLIENTS=50 | ||||||
|  | AFPD_UAMLIST="-U uams_dhx2.so" | ||||||
|  | AFPD_GUEST=nobody | ||||||
|  | CNID_CONFIG="-l log_note" | ||||||
|  |  | ||||||
|  | ATALKD_RUN=no | ||||||
|  | PAPD_RUN=no | ||||||
|  | TIMELORD_RUN=no | ||||||
|  | #A2BOOT_RUN=no | ||||||
|  | ATALK_ZONE= | ||||||
|  | ATALK_BGROUND=no | ||||||
|  |  | ||||||
|  | # old /etc/default/netatalk expected hostname in $HOSTNAME by default | ||||||
|  | HOSTNAME=`/bin/hostname` | ||||||
|  |  | ||||||
|  | # Read in netatalk configuration. | ||||||
|  | if [ -f /etc/default/netatalk ]; then | ||||||
|  |     . /etc/default/netatalk | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | # Start Netatalk servers. | ||||||
|  | atalk_startup() { | ||||||
|  | 	if [ x"$ATALKD_RUN" = x"yes" ]; then | ||||||
|  |  | ||||||
|  | 	# Try to load the AppleTalk kernel module if it was intended. | ||||||
|  |     if grep -q '^appletalk$' /etc/modules; then | ||||||
|  | 		/sbin/modprobe appletalk || echo "[could not load appletalk module]" | ||||||
|  |     fi | ||||||
|  |  | ||||||
|  | 	# Start atalkd server. | ||||||
|  | 	/usr/local/sbin/atalkd | ||||||
|  |  | ||||||
|  | 	# register workstation | ||||||
|  | 	/usr/local/bin/nbprgstr -p 4 "$ATALK_NAME:Workstation$ATALK_ZONE" | ||||||
|  | 	/usr/local/bin/nbprgstr -p 4 "$ATALK_NAME:netatalk$ATALK_ZONE" | ||||||
|  |  | ||||||
|  | 	echo -n " atalkd" | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	# prepare startup of file services | ||||||
|  | 	if [ "x$CNID_METAD_RUN" = "xyes" -a -x /usr/local/sbin/cnid_metad ] ; then | ||||||
|  | 		echo -n " cnid_metad" | ||||||
|  |         /usr/local/sbin/cnid_metad $CNID_CONFIG | ||||||
|  |     fi | ||||||
|  |  | ||||||
|  | 	if [ x"$AFPD_RUN" = x"yes" ]; then | ||||||
|  | 	/usr/local/sbin/afpd $AFPD_UAMLIST -g $AFPD_GUEST -c $AFPD_MAX_CLIENTS \ | ||||||
|  | 		-n "$ATALK_NAME$ATALK_ZONE" | ||||||
|  | 	echo -n " afpd" | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  |     if [ "x$ATALKD_RUN" = "xyes" ]; then | ||||||
|  |         if [ "x$PAPD_RUN" = "xyes" ]; then | ||||||
|  |             /usr/local/sbin/papd | ||||||
|  |             echo -n " papd" | ||||||
|  |         fi | ||||||
|  |  | ||||||
|  |         if [ x"$TIMELORD_RUN" = x"yes" ]; then | ||||||
|  |             /usr/local/sbin/timelord | ||||||
|  |             echo -n " timelord" | ||||||
|  |         fi | ||||||
|  |     fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  | case "$1" in | ||||||
|  | 	start) | ||||||
|  | 		if [ "x$ATALK_BGROUND" = "xyes" -a "x$ATALKD_RUN" = "xyes" ]; then | ||||||
|  | 			echo "Starting Netatalk services in the background." | ||||||
|  | 			atalk_startup >/dev/null & | ||||||
|  | 		else | ||||||
|  | 			echo -n "Starting Netatalk services (this will take a while): " | ||||||
|  | 			atalk_startup | ||||||
|  | 			echo "." | ||||||
|  | 		fi | ||||||
|  | 	;; | ||||||
|  |  | ||||||
|  | 	stop) | ||||||
|  | 		echo -n "Stopping Netatalk Daemons:" | ||||||
|  | 		echo -n " afpd" | ||||||
|  | 		start-stop-daemon --stop --quiet --oknodo --exec /usr/local/sbin/afpd | ||||||
|  |  | ||||||
|  | 		echo -n " cnid_metad" | ||||||
|  | 		start-stop-daemon --stop --quiet --oknodo --exec /usr/local/sbin/cnid_metad | ||||||
|  |  | ||||||
|  | 		if test -x /usr/local/sbin/papd; then | ||||||
|  |                     echo -n " papd" | ||||||
|  | 		    start-stop-daemon --stop --quiet --oknodo --exec /usr/local/sbin/papd | ||||||
|  | 	        fi | ||||||
|  |  | ||||||
|  | 		if test -x /usr/local/sbin/timelord; then | ||||||
|  |                     echo -n " timelord" | ||||||
|  | 		    start-stop-daemon --stop --quiet --oknodo --exec /usr/local/sbin/timelord | ||||||
|  | 	        fi | ||||||
|  |  | ||||||
|  | 		if test -x /usr/local/sbin/atalkd; then | ||||||
|  |                     echo -n " atalkd" | ||||||
|  | 		    start-stop-daemon --stop --quiet --oknodo --exec /usr/local/sbin/atalkd | ||||||
|  | 	        fi | ||||||
|  |  | ||||||
|  | 		echo "." | ||||||
|  | 	;; | ||||||
|  |  | ||||||
|  | 	restart) | ||||||
|  | 		$0 force-reload | ||||||
|  | 	;; | ||||||
|  |  | ||||||
|  | 	force-reload) | ||||||
|  | 		echo -n "Restarting Netatalk Daemons (this will take a while)" | ||||||
|  | 		$0 stop | ||||||
|  | 		echo -n "." | ||||||
|  | 		sleep 2 | ||||||
|  | 		echo -n "." | ||||||
|  | 		if $0 start; then | ||||||
|  | 			echo "done." | ||||||
|  | 		fi | ||||||
|  | 	;; | ||||||
|  |  | ||||||
|  | 	*) | ||||||
|  | 		echo "Usage: $0 {start|stop|restart|force-reload}" >&2 | ||||||
|  | 		exit 1 | ||||||
|  | 	;; | ||||||
|  | esac | ||||||
| @@ -7,7 +7,7 @@ | |||||||
| # Ensure URL we'll use ends in a / | # Ensure URL we'll use ends in a / | ||||||
| case "$A2SERVER_SCRIPT_URL" in | case "$A2SERVER_SCRIPT_URL" in | ||||||
| 	*/) scriptURL="$A2SERVER_SCRIPT_URL" ;; | 	*/) scriptURL="$A2SERVER_SCRIPT_URL" ;; | ||||||
| 	*) scriptURL="${A2SERVER_SCRIPT_URL:-http://ivanx.com/a2server}/" ;; | 	*) scriptURL="${A2SERVER_SCRIPT_URL:-https://raw.githubusercontent.com/RasppleII/a2server/current}/" ;; | ||||||
| esac | esac | ||||||
| case "$A2SERVER_BINARY_URL" in | case "$A2SERVER_BINARY_URL" in | ||||||
| 	*/) binaryURL="$A2SERVER_BINARY_URL" ;; | 	*/) binaryURL="$A2SERVER_BINARY_URL" ;; | ||||||
| @@ -22,7 +22,7 @@ arch= | |||||||
| if [[ -f /usr/bin/raspi-config ]]; then | if [[ -f /usr/bin/raspi-config ]]; then | ||||||
|     isRpi=1 |     isRpi=1 | ||||||
|     arch='rpi' |     arch='rpi' | ||||||
| elif lsb_release -a 2> /dev/null | grep -q 'Distributor ID:.Debian' && [[ $(cut -c 1 <<< $debianVersion) -ge "7" ]]; then | elif lsb_release -a 2> /dev/null | grep -q 'Distributor ID:.Debian' && [[ $(cut -d . -f 1 <<< $debianVersion) -ge "7" ]]; then | ||||||
|     uname_m="$(uname -m)" |     uname_m="$(uname -m)" | ||||||
|     if [[ $uname_m == "i686" ]]; then |     if [[ $uname_m == "i686" ]]; then | ||||||
|         arch='debian_x86' |         arch='debian_x86' | ||||||
| @@ -33,10 +33,10 @@ fi | |||||||
|  |  | ||||||
| debianName= | debianName= | ||||||
| if [[ $debianVersion ]]; then | if [[ $debianVersion ]]; then | ||||||
|     debianMajor=$(cut -c 1-2 <<< $debianVersion) |     debianMajor=$(cut -d . -f 1 <<< $debianVersion) | ||||||
|     if [[ $debianMajor == "8." ]]; then |     if [[ $debianMajor == "8" ]]; then | ||||||
|         debianName="jessie" |         debianName="jessie" | ||||||
|     elif [[ $debianMajor == "7." ]]; then |     elif [[ $debianMajor == "7" ]]; then | ||||||
|         debianName="wheezy" |         debianName="wheezy" | ||||||
|     else |     else | ||||||
|         debianName="unknown" |         debianName="unknown" | ||||||
| @@ -120,7 +120,7 @@ if ! hash unar &> /dev/null; then | |||||||
|     fi |     fi | ||||||
|  |  | ||||||
|     # jessie and later: Just use the unar package |     # jessie and later: Just use the unar package | ||||||
|     if [[ $debianName == "jessie" ]]; then |     if [[ $debianMajor -ge 8 ]]; then | ||||||
|         sudo apt-get -y install unar |         sudo apt-get -y install unar | ||||||
|         sudo apt-get clean |         sudo apt-get clean | ||||||
|     fi |     fi | ||||||
|   | |||||||
| @@ -17,7 +17,7 @@ | |||||||
| # Ensure URL we'll use ends in a / | # Ensure URL we'll use ends in a / | ||||||
| case "$A2SERVER_SCRIPT_URL" in | case "$A2SERVER_SCRIPT_URL" in | ||||||
| 	*/) scriptURL="$A2SERVER_SCRIPT_URL" ;; | 	*/) scriptURL="$A2SERVER_SCRIPT_URL" ;; | ||||||
| 	*) scriptURL="${A2SERVER_SCRIPT_URL:-http://appleii.ivanx.com/a2server}/" ;; | 	*) scriptURL="${A2SERVER_SCRIPT_URL:-https://raw.githubusercontent.com/RasppleII/a2server/current}/" ;; | ||||||
| esac | esac | ||||||
| case "$A2SERVER_BINARY_URL" in | case "$A2SERVER_BINARY_URL" in | ||||||
| 	*/) binaryURL="$A2SERVER_BINARY_URL" ;; | 	*/) binaryURL="$A2SERVER_BINARY_URL" ;; | ||||||
| @@ -32,7 +32,7 @@ arch= | |||||||
| if [[ -f /usr/bin/raspi-config ]]; then | if [[ -f /usr/bin/raspi-config ]]; then | ||||||
|     isRpi=1 |     isRpi=1 | ||||||
|     arch='rpi' |     arch='rpi' | ||||||
| elif lsb_release -a 2> /dev/null | grep -q 'Distributor ID:.Debian' && [[ $(cut -c 1 <<< $debianVersion) -ge "7" ]]; then | elif lsb_release -a 2> /dev/null | grep -q 'Distributor ID:.Debian' && [[ $(cut -d . -f 1 <<< $debianVersion) -ge "7" ]]; then | ||||||
|     uname_m="$(uname -m)" |     uname_m="$(uname -m)" | ||||||
|     if [[ $uname_m == "i686" ]]; then |     if [[ $uname_m == "i686" ]]; then | ||||||
|         arch='debian_x86' |         arch='debian_x86' | ||||||
| @@ -43,10 +43,10 @@ fi | |||||||
|  |  | ||||||
| debianName= | debianName= | ||||||
| if [[ $debianVersion ]]; then | if [[ $debianVersion ]]; then | ||||||
|     debianMajor=$(cut -c 1-2 <<< $debianVersion) |     debianMajor=$(cut -d . -f 1 <<< $debianVersion) | ||||||
|     if [[ $debianMajor == "8." ]]; then |     if [[ $debianMajor == "8" ]]; then | ||||||
|         debianName="jessie" |         debianName="jessie" | ||||||
|     elif [[ $debianMajor == "7." ]]; then |     elif [[ $debianMajor == "7" ]]; then | ||||||
|         debianName="wheezy" |         debianName="wheezy" | ||||||
|     else |     else | ||||||
|         debianName="unknown" |         debianName="unknown" | ||||||
| @@ -249,10 +249,13 @@ sudo sed -i 's/#ATALK_BGROUND=no/ATALK_BGROUND=yes/' /etc/default/netatalk | |||||||
| if [[ ! $(grep 'kernelRelease' /etc/init.d/netatalk) ]]; then | if [[ ! $(grep 'kernelRelease' /etc/init.d/netatalk) ]]; then | ||||||
|     sudo sed -i 's@\(\tif \[ x\"$ATALKD_RUN\)@\n\t# check for valid AppleTalk kernel module\n\t[[ $ATALKD_RUN == "yes" ]] \&\& { kernelRelease=$(uname -r); kernelMajor=$(cut -d "." -f 1  <<< $kernelRelease); kernelMinor=$(cut -d "." -f 2  <<< $kernelRelease | sed '"'"'s/\\(^[0-9]*\\)[^0-9].*$/\\1/'"'"'); kernelPatch=$(cut -d "." -f 3- <<< $kernelRelease | sed '"'"'s/\\(^[0-9]*\\)[^0-9].*$/\\1/'"'"'); [[ ( $kernelMajor -eq 3 \&\& $kernelMinor -ge 12 \&\& $kernelMinor -le 15 ) \&\& ( ! ( -f /usr/bin/raspi-config \&\& $kernelMinor -eq 12 \&\& $kernelPatch -ge 25 ) ) \&\& ( ( ! -f /lib/modules/$kernelRelease/kernel/net/appletalk/appletalk.ko ) || $(sha1sum /lib/modules/$kernelRelease/kernel/net/appletalk/appletalk.ko | cut -f 1 -d " ") != "ecb239fc084c36de93f6926e7749b80f6024f269" ) ]] \&\& { ATALKD_RUN=no; echo "[AppleTalk networking is not available.]" 1>\&2; } }\n\n\1@' /etc/init.d/netatalk |     sudo sed -i 's@\(\tif \[ x\"$ATALKD_RUN\)@\n\t# check for valid AppleTalk kernel module\n\t[[ $ATALKD_RUN == "yes" ]] \&\& { kernelRelease=$(uname -r); kernelMajor=$(cut -d "." -f 1  <<< $kernelRelease); kernelMinor=$(cut -d "." -f 2  <<< $kernelRelease | sed '"'"'s/\\(^[0-9]*\\)[^0-9].*$/\\1/'"'"'); kernelPatch=$(cut -d "." -f 3- <<< $kernelRelease | sed '"'"'s/\\(^[0-9]*\\)[^0-9].*$/\\1/'"'"'); [[ ( $kernelMajor -eq 3 \&\& $kernelMinor -ge 12 \&\& $kernelMinor -le 15 ) \&\& ( ! ( -f /usr/bin/raspi-config \&\& $kernelMinor -eq 12 \&\& $kernelPatch -ge 25 ) ) \&\& ( ( ! -f /lib/modules/$kernelRelease/kernel/net/appletalk/appletalk.ko ) || $(sha1sum /lib/modules/$kernelRelease/kernel/net/appletalk/appletalk.ko | cut -f 1 -d " ") != "ecb239fc084c36de93f6926e7749b80f6024f269" ) ]] \&\& { ATALKD_RUN=no; echo "[AppleTalk networking is not available.]" 1>\&2; } }\n\n\1@' /etc/init.d/netatalk | ||||||
| fi | fi | ||||||
|  | sudo sed -i 's/Starting Netatalk services (this will take a while): /Starting Netatalk services"\n\t\t\t[[ $ATALKD_RUN == "yes" ]] \&\& echo -n " (this will take 45 seconds)"\n\t\t\techo -n ":/' /etc/init.d/netatalk | ||||||
|  | sudo sed -i 's/Starting Netatalk services in the background./Netatalk services will be available in 45 seconds./' /etc/init.d/netatalk | ||||||
|  | sudo sed -i 's/-n "Restarting Netatalk Daemons (this will take a while)"/"Restarting Netatalk Daemons."/' /etc/init.d/netatalk | ||||||
|  |  | ||||||
| # enable MacIPgw support after launching atalkd | # enable MacIPgw support after launching atalkd | ||||||
| if ! grep -q -i 'macipgw' /etc/init.d/netatalk; then | if ! grep -q -i 'macipgw' /etc/init.d/netatalk; then | ||||||
|     sudo sed -i ':a;N;$!ba;s@\(echo -n " atalkd"\)\(.*# prepare\)@\1\n\n    # start MacIPgw (TCP over AppleTalk) service\n    ps aux | grep -q "[m]acipgw" \&\& sudo killall macipgw 2> /dev/null\n    atalkd_interface=$(grep "^[^ #]" /etc/netatalk/atalkd.conf | tail -1 | cut -d " " -f 1)\n    sysctl -w net.ipv4.ip_forward=1 > /dev/null\n    macipgw -n 8.8.8.8 192.168.151.0 255.255.255.0\n    /sbin/iptables -t nat -A POSTROUTING -o ${atalkd_interface} -j MASQUERADE\n    /sbin/iptables -A FORWARD -i ${atalkd_interface} -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT\n    /sbin/iptables -A FORWARD -i tun1 -o ${atalkd_interface} -j ACCEPT\n\n    echo -n " macipgw"\n\2@' /etc/init.d/netatalk |     sudo sed -i ':a;N;$!ba;s@\(echo -n " atalkd"\)\(.*# prepare\)@\1\n\n\t\t# start MacIPgw (TCP over AppleTalk) service\n\t\tps aux | grep -q "[m]acipgw" \&\& sudo killall macipgw 2> /dev/null || :\n\t\tatalkd_interface=$(grep "^[^ #]" /etc/netatalk/atalkd.conf | tail -1 | cut -d " " -f 1)\n\t\tsysctl -w net.ipv4.ip_forward=1 > /dev/null\n\t\tmacipgw -n 8.8.8.8 192.168.151.0 255.255.255.0\n\t\t/sbin/iptables -t nat -A POSTROUTING -o ${atalkd_interface} -j MASQUERADE\n\t\t/sbin/iptables -A FORWARD -i ${atalkd_interface} -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT\n\t\t/sbin/iptables -A FORWARD -i tun1 -o ${atalkd_interface} -j ACCEPT\n\n\t\techo -n " macipgw"\n\2@' /etc/init.d/netatalk | ||||||
|     sudo sed -i 's@\(start-stop-daemon --stop --quiet --oknodo --exec /usr/local/sbin/atalkd.*$\)@\1\n                    echo -n " macipgw"\n            sudo killall macipgw 2> /dev/null@' /etc/init.d/netatalk |     sudo sed -i 's@\(start-stop-daemon --stop --quiet --oknodo --exec /usr/local/sbin/atalkd.*$\)@\1\n                    echo -n " macipgw"\n            sudo killall macipgw 2> /dev/null@' /etc/init.d/netatalk | ||||||
| fi | fi | ||||||
|  |  | ||||||
| @@ -292,12 +295,12 @@ sudo sed -i 's/^~/#share1\n\n#share2/' \ | |||||||
| sudo sed -i 's/^:DEFAULT/#:DEFAULT/' \ | sudo sed -i 's/^:DEFAULT/#:DEFAULT/' \ | ||||||
| /usr/local/etc/netatalk/AppleVolumes.default | /usr/local/etc/netatalk/AppleVolumes.default | ||||||
|  |  | ||||||
| if [[ ! $(grep ^eth0 /usr/local/etc/netatalk/atalkd.conf) && ! $(grep ^wlan0 /usr/local/etc/netatalk/atalkd.conf) ]]; then | # if [[ ! $(grep ^eth0 /usr/local/etc/netatalk/atalkd.conf) && ! $(grep ^wlan0 /usr/local/etc/netatalk/atalkd.conf) ]]; then | ||||||
|  | if [[ $(tac /usr/local/etc/netatalk/atalkd.conf | sed '/./,$!d' | head -1 | cut -c 1) == "#" ]]; then | ||||||
|     # enable netatalk on the default network interface |     # enable netatalk on the default network interface | ||||||
|     # needs -router and -zone to prevent GS/OS AppleShare CDEV crash when used |     # needs -router and -zone to prevent GS/OS AppleShare CDEV crash when used | ||||||
|     # with Dayna or Asante bridges |     # with Dayna or Asante bridges | ||||||
|     echo -e 'eth0 -router -phase 2 -net 1 -zone "A2SERVER"' \ |     echo -e 'eth0 -router -phase 2 -net 1 -zone "A2SERVER"' | sudo tee -a /usr/local/etc/netatalk/atalkd.conf > /dev/null | ||||||
|     | sudo tee -a /usr/local/etc/netatalk/atalkd.conf > /dev/null |  | ||||||
| fi | fi | ||||||
|  |  | ||||||
| # Raspberry Pi | # Raspberry Pi | ||||||
| @@ -522,12 +525,12 @@ if [[ -f "/lib/modules/$kernelRelease/kernel/drivers/net/appletalk/ipddp.ko" ]]; | |||||||
|     sudo /etc/init.d/netatalk stop &> /dev/null |     sudo /etc/init.d/netatalk stop &> /dev/null | ||||||
|     sudo rmmod ipddp 2> /dev/null |     sudo rmmod ipddp 2> /dev/null | ||||||
|     sudo rmmod appletalk 2> /dev/null |     sudo rmmod appletalk 2> /dev/null | ||||||
|     echo "A2SERVER: Attempting to replace AppleTalk kernel module for MacIP use..." |     echo "A2SERVER: Replacing AppleTalk kernel module (IPDDP disabled) for MacIP use..." | ||||||
|  |  | ||||||
|     sudo mv /lib/modules/$kernelRelease/kernel/net/appletalk/appletalk.ko /tmp 2> /dev/null |     sudo mv /lib/modules/$kernelRelease/kernel/net/appletalk/appletalk.ko /tmp 2> /dev/null | ||||||
|  |  | ||||||
|     if [[ ${arch%_*} == "debian" ]]; then |     if [[ ${arch%_*} == "debian" ]]; then | ||||||
|         echo "A2SERVER: Attempting to fetch AppleTalk kernel module for Debian..." |         echo "A2SERVER: Fetching AppleTalk kernel module for Debian..." | ||||||
|         wget -qO /tmp/appletalk.tgz ${binaryURL}precompiled/appletalk-$kernelRelease-${arch}.tgz |         wget -qO /tmp/appletalk.tgz ${binaryURL}precompiled/appletalk-$kernelRelease-${arch}.tgz | ||||||
|         if [[ $? -eq 0 ]]; then |         if [[ $? -eq 0 ]]; then | ||||||
|             # if we found a prebuilt one on a2server site, install it and load it |             # if we found a prebuilt one on a2server site, install it and load it | ||||||
| @@ -555,7 +558,7 @@ if [[ -f "/lib/modules/$kernelRelease/kernel/drivers/net/appletalk/ipddp.ko" ]]; | |||||||
|  |  | ||||||
|         # kernel module compile adapted from from: http://askubuntu.com/a/338403/288003 |         # kernel module compile adapted from from: http://askubuntu.com/a/338403/288003 | ||||||
|         for i in 1; do |         for i in 1; do | ||||||
|             echo "A2SERVER: Attempting to build AppleTalk kernel module..." |             echo "A2SERVER: Building AppleTalk kernel module..." | ||||||
|             [[ -f /boot/config-$kernelRelease ]] || break |             [[ -f /boot/config-$kernelRelease ]] || break | ||||||
|             sudo apt-get -y install linux-headers-$kernelRelease linux-source-$kernelMajorMinor || break |             sudo apt-get -y install linux-headers-$kernelRelease linux-source-$kernelMajorMinor || break | ||||||
|             sudo apt-get -y install build-essential |             sudo apt-get -y install build-essential | ||||||
| @@ -639,7 +642,7 @@ if [[ ( ! $(ps aux | grep [a]talkd) ) && ( $isRpi ) ]]; then | |||||||
|  |  | ||||||
|     # if no AppleTalk module, try to download it from a2server site |     # if no AppleTalk module, try to download it from a2server site | ||||||
|     if [[ ! -f /lib/modules/$kernelRelease/kernel/net/appletalk/appletalk.ko ]]; then # check for rpi kernel module |     if [[ ! -f /lib/modules/$kernelRelease/kernel/net/appletalk/appletalk.ko ]]; then # check for rpi kernel module | ||||||
|         echo "A2SERVER: Attempting to install AppleTalk kernel module for Raspbian..." |         echo "A2SERVER: Installing AppleTalk kernel module for Raspbian..." | ||||||
|         wget -qO /tmp/appletalk.ko.gz ${binaryURL}appletalk-$kernelRelease-rpi.ko.gz |         wget -qO /tmp/appletalk.ko.gz ${binaryURL}appletalk-$kernelRelease-rpi.ko.gz | ||||||
|         if [[ $? -eq 0 ]]; then |         if [[ $? -eq 0 ]]; then | ||||||
|             # if we found a prebuilt one on a2server site, install it and load it |             # if we found a prebuilt one on a2server site, install it and load it | ||||||
|   | |||||||
| @@ -10,7 +10,7 @@ | |||||||
| # Ensure URL we'll use ends in a / | # Ensure URL we'll use ends in a / | ||||||
| case "$A2SERVER_SCRIPT_URL" in | case "$A2SERVER_SCRIPT_URL" in | ||||||
|     */) scriptURL="$A2SERVER_SCRIPT_URL" ;; |     */) scriptURL="$A2SERVER_SCRIPT_URL" ;; | ||||||
|     *) scriptURL="${A2SERVER_SCRIPT_URL:-http://ivanx.com/a2server}/" ;; |     *) scriptURL="${A2SERVER_SCRIPT_URL:-https://raw.githubusercontent.com/RasppleII/a2server/current}/" ;; | ||||||
| esac | esac | ||||||
| case "$A2SERVER_BINARY_URL" in | case "$A2SERVER_BINARY_URL" in | ||||||
|     */) binaryURL="$A2SERVER_BINARY_URL" ;; |     */) binaryURL="$A2SERVER_BINARY_URL" ;; | ||||||
| @@ -93,7 +93,7 @@ updateP8YearTables () { | |||||||
|     # Update ProDOS 8 year table (and spalsh date because may as well) |     # Update ProDOS 8 year table (and spalsh date because may as well) | ||||||
|     # Effectively, we're turning p8 into the 6.0.2 or 6.0.3 version here. |     # Effectively, we're turning p8 into the 6.0.2 or 6.0.3 version here. | ||||||
|     # |     # | ||||||
|     # ID: updates the year tables for the Thunderclock driver in ProDOS 8; |     # ID: updates the year table for the Thunderclock driver in ProDOS 8; | ||||||
|     #     calculated from the day of week and date, as year is unavailable. |     #     calculated from the day of week and date, as year is unavailable. | ||||||
|     #     accepts optional arguments for custom patches |     #     accepts optional arguments for custom patches | ||||||
|     #     arg1 = year table, comma separated |     #     arg1 = year table, comma separated | ||||||
| @@ -171,11 +171,13 @@ updateP8YearTables () { | |||||||
| [[ -f /tmp/a2server-autoAnswerYes ]] && autoAnswerYes=1 || autoAnswerYes= | [[ -f /tmp/a2server-autoAnswerYes ]] && autoAnswerYes=1 || autoAnswerYes= | ||||||
|  |  | ||||||
| netbootInstalled= | netbootInstalled= | ||||||
| if [[ -f /usr/local/etc/netatalk/a2boot/ProDOS16\ Boot\ Blocks ]] && \ | if [[ -f /usr/local/etc/netatalk/a2boot/ProDOS16\ Boot\ Blocks && \ | ||||||
|     [[ -f /usr/local/etc/netatalk/a2boot/ProDOS16\ Image ]] && \ |     -f /usr/local/etc/netatalk/a2boot/ProDOS16\ Image && \ | ||||||
|     [[ -f /usr/local/etc/netatalk/a2boot/Apple\ :2f:2fe\ Boot\ Blocks ]] && \ |     -f /usr/local/etc/netatalk/a2boot/Apple\ :2f:2fe\ Boot\ Blocks && \ | ||||||
|     [[ -f /usr/local/etc/netatalk/a2boot/p8 ]] && \ |     -f /usr/local/etc/netatalk/a2boot/p8 && \ | ||||||
|     [[ -f /usr/local/etc/netatalk/a2boot/Basic.System ]]; then |     -f /usr/local/etc/netatalk/a2boot/Basic.System && \ | ||||||
|  |     -f $gsosDir/USERS/USER1/SETUP/ATINIT && \ | ||||||
|  |     -f $gsosDir/USERS/"<ANY USER>"/SETUP/ATINIT ]] ; then | ||||||
|     netbootInstalled=1 |     netbootInstalled=1 | ||||||
| fi | fi | ||||||
| REPLY= | REPLY= | ||||||
| @@ -270,8 +272,8 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupNetBoot ]]; then | |||||||
|             echo |             echo | ||||||
|             echo "A2SERVER: Creating NETBOOT.P8..." |             echo "A2SERVER: Creating NETBOOT.P8..." | ||||||
|             touch $p8Dir/NETBOOT.P8 |             touch $p8Dir/NETBOOT.P8 | ||||||
|             echo -n -e "\x38\x20\x1f\xfe\x90\x01\x60\xfb\x08\xc2\x30\xf4\x02\x00\xf4\x62\x00\xa2\x03\x0b\x22\x00\x00\xe1\x78\xf4\x00\x00\xf4\x00\x00\xab\xab\x2b\x38\xfb\xce\xf4\x03\xa9\x0c\x8d\x68\xc0\x9c\x47\xc0\x9c\x41\xc0\xa9\x09\x8d\x39\xc0\xa9\xc0\x8d\x39\xc0\x5c\x62\xfa\x00" | \ |             echo -n -e "\x38\x20\x1f\xfe\x90\x01\x60\xfb\x08\xc2\x30\xf4\x02\x00\xf4\x62\x00\xa2\x03\x0b\x22\x00\x00\xe1\x78\xf4\x00\x00\xf4\x00\x00\xab\xab\x2b\x38\xfb\xce\xf4\x03\xa9\x0c\x8d\x68\xc0\x9c\x47\xc0\x9c\x41\xc0\xa9\x09\x8d\x39\xc0\xa9\xc0\x8d\x39\xc0\x5c\x62\xfa\x00" \ | ||||||
|               sudo dd of="$p8Dir/NETBOOT.P8" 2> /dev/null |             | sudo dd of="$p8Dir/NETBOOT.P8" 2> /dev/null | ||||||
|             afpsync -v $p8Dir > /dev/null |             afpsync -v $p8Dir > /dev/null | ||||||
|             afptype -p SYS -q $p8Dir/NETBOOT.P8 |             afptype -p SYS -q $p8Dir/NETBOOT.P8 | ||||||
|         fi |         fi | ||||||
| @@ -280,8 +282,8 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupNetBoot ]]; then | |||||||
|             echo "A2SERVER: Creating NETBOOT.GSOS..." |             echo "A2SERVER: Creating NETBOOT.GSOS..." | ||||||
|             # create tool for setting GSOS boot in battery RAM and rebooting. Props yet again to Geoff Body. |             # create tool for setting GSOS boot in battery RAM and rebooting. Props yet again to Geoff Body. | ||||||
|             touch $gsosDir/NETBOOT.GSOS |             touch $gsosDir/NETBOOT.GSOS | ||||||
|             echo -n -e "\x38\x20\x1f\xfe\x90\x01\x60\xfb\x08\xc2\x30\xf4\x01\x00\xf4\x62\x00\xa2\x03\x0b\x22\x00\x00\xe1\x78\xf4\x00\x00\xf4\x00\x00\xab\xab\x2b\x38\xfb\xce\xf4\x03\xa9\x0c\x8d\x68\xc0\x9c\x47\xc0\x9c\x41\xc0\xa9\x09\x8d\x39\xc0\xa9\xc0\x8d\x39\xc0\x5c\x62\xfa\x00" | \ |             echo -n -e "\x38\x20\x1f\xfe\x90\x01\x60\xfb\x08\xc2\x30\xf4\x01\x00\xf4\x62\x00\xa2\x03\x0b\x22\x00\x00\xe1\x78\xf4\x00\x00\xf4\x00\x00\xab\xab\x2b\x38\xfb\xce\xf4\x03\xa9\x0c\x8d\x68\xc0\x9c\x47\xc0\x9c\x41\xc0\xa9\x09\x8d\x39\xc0\xa9\xc0\x8d\x39\xc0\x5c\x62\xfa\x00" \ | ||||||
|               sudo dd of="$p8Dir/NETBOOT.GSOS" 2> /dev/null |             | sudo dd of="$p8Dir/NETBOOT.GSOS" 2> /dev/null | ||||||
|             afpsync -v $gsosDir > /dev/null |             afpsync -v $gsosDir > /dev/null | ||||||
|             afptype -p SYS -q $gsosDir/NETBOOT.GSOS |             afptype -p SYS -q $gsosDir/NETBOOT.GSOS | ||||||
|         fi |         fi | ||||||
| @@ -338,11 +340,22 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupNetBoot ]]; then | |||||||
|  |  | ||||||
|         if [[ $gsosReinstall ]]; then |         if [[ $gsosReinstall ]]; then | ||||||
|             if [[ ! $autoAnswerYes ]]; then |             if [[ ! $autoAnswerYes ]]; then | ||||||
|  |                 echo | ||||||
|                 echo "You can set up GS/OS for network boot. This may take a while." |                 echo "You can set up GS/OS for network boot. This may take a while." | ||||||
|  |                 echo | ||||||
|                 echo "  0: don't install GS/OS" |                 echo "  0: don't install GS/OS" | ||||||
|                 echo "1: GS/OS 6.0.1 (official Apple release, May 1993)" |                 echo "  1: GS/OS 6.0.1 (May 1993) [official release]" | ||||||
|                 echo "2: GS/OS 6.0.2 (community release by Antoine Vignau, July 2015)" |                 echo "     The final version authorized by Apple.  It has a few bugs," | ||||||
|                 echo "3: GS/OS 6.0.3 (community release by Tony Diaz, August 2015)" |                 echo "     but most of these can be patched.  Predictable and might be" | ||||||
|  |                 echo "     required if you use certain patches." | ||||||
|  |                 echo "  2: GS/OS 6.0.2 (Jul 2015)" | ||||||
|  |                 echo "     A community effort released by Antoine Vignau with fixes for" | ||||||
|  |                 echo "     some serious bugs and a few other enhancements." | ||||||
|  |                 echo "  3: GS/OS 6.0.3 (Aug 2015)" | ||||||
|  |                 echo "     Continuing community effort released by Tony Diaz. Includes" | ||||||
|  |                 echo "     previous work along with additional fixes/changes. Better" | ||||||
|  |                 echo "     documentation of changes. Most will prefer this or Apple's" | ||||||
|  |                 echo "     release above." | ||||||
|                 echo |                 echo | ||||||
|                 echo -n "Which flavor would you like? " |                 echo -n "Which flavor would you like? " | ||||||
|                 read |                 read | ||||||
| @@ -500,7 +513,7 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupNetBoot ]]; then | |||||||
|  |  | ||||||
|         # if [[ ! $autoAnswerYes && (! $gsosInstall || $gsosInstall -lt 2) ]] && ! checkP8YearTables 603; then |         # if [[ ! $autoAnswerYes && (! $gsosInstall || $gsosInstall -lt 2) ]] && ! checkP8YearTables 603; then | ||||||
|         #     echo |         #     echo | ||||||
|         #     echo -n "Do you want to update the ProDOS 8 Thunderclock year tables? " |         #     echo -n "Do you want to update the ProDOS 8 Thunderclock year table? " | ||||||
|         #     read |         #     read | ||||||
|         # fi |         # fi | ||||||
|         # if [[ $autoAnswerYes || ${REPLY:0:1} == "Y" || ${REPLY:0:1} == "y" ]]; then |         # if [[ $autoAnswerYes || ${REPLY:0:1} == "Y" || ${REPLY:0:1} == "y" ]]; then | ||||||
| @@ -511,7 +524,7 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupNetBoot ]]; then | |||||||
|  |  | ||||||
|         # patch ProDOS 8 Thunderclock driver year table based on today's date |         # patch ProDOS 8 Thunderclock driver year table based on today's date | ||||||
|         echo |         echo | ||||||
|         echo "A2SERVER: Updating ProDOS 8 Thunderclock driver year tables..." |         echo "A2SERVER: Updating ProDOS 8 Thunderclock driver year table..." | ||||||
|         mkdir -p /tmp/netboot |         mkdir -p /tmp/netboot | ||||||
|         rm -r /tmp/netboot/* 2> /dev/null |         rm -r /tmp/netboot/* 2> /dev/null | ||||||
|         wget -qO /tmp/netboot/clock.patch.py "${scriptURL}scripts/clock.patch.py" |         wget -qO /tmp/netboot/clock.patch.py "${scriptURL}scripts/clock.patch.py" | ||||||
| @@ -578,8 +591,10 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupNetBoot ]]; then | |||||||
|                     mkdir -p /tmp/netboot/gshk |                     mkdir -p /tmp/netboot/gshk | ||||||
|                     cd /tmp/netboot/gshk |                     cd /tmp/netboot/gshk | ||||||
|                     if [[ $useExternalURL ]]; then |                     if [[ $useExternalURL ]]; then | ||||||
|  |                         wget -qO gshk11.sea http://www.nulib.com/library/gshk11.sea | ||||||
|  |                         if (( $? != 0 )); then | ||||||
|                             wget -qO gshk11.sea http://web.archive.org/web/20131031160750/http://nulib.com/library/gshk11.sea |                             wget -qO gshk11.sea http://web.archive.org/web/20131031160750/http://nulib.com/library/gshk11.sea | ||||||
|                         #wget -qO gshk11.sea http://www.nulib.com/library/gshk11.sea |                         fi | ||||||
|                         nulib2 -x -s gshk11.sea &> /dev/null |                         nulib2 -x -s gshk11.sea &> /dev/null | ||||||
|                     fi |                     fi | ||||||
|                     if [[ ! -f GSHK ]]; then |                     if [[ ! -f GSHK ]]; then | ||||||
| @@ -603,6 +618,9 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupNetBoot ]]; then | |||||||
|                     cd /tmp/netboot/mountit |                     cd /tmp/netboot/mountit | ||||||
|                     if [[ $useExternalURL ]]; then |                     if [[ $useExternalURL ]]; then | ||||||
|                         wget -q -O MOUNTIT.SHK http://www.brutaldeluxe.fr/products/apple2gs/MOUNTIT.SHK |                         wget -q -O MOUNTIT.SHK http://www.brutaldeluxe.fr/products/apple2gs/MOUNTIT.SHK | ||||||
|  |                         if (( $? != 0 )); then | ||||||
|  |                             wget -q -O http://web.archive.org/web/20150201044930/http://brutaldeluxe.fr/products/apple2gs/MOUNTIT.SHK | ||||||
|  |                         fi | ||||||
|                         cppo -s -ad MOUNTIT.SHK System:System.Setup:MountIt . &> /dev/null |                         cppo -s -ad MOUNTIT.SHK System:System.Setup:MountIt . &> /dev/null | ||||||
|                         cppo -s -ad MOUNTIT.SHK ReadMe . &> /dev/null |                         cppo -s -ad MOUNTIT.SHK ReadMe . &> /dev/null | ||||||
|                     fi |                     fi | ||||||
| @@ -632,7 +650,10 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupNetBoot ]]; then | |||||||
|                 echo |                 echo | ||||||
|                 cd /tmp/netboot |                 cd /tmp/netboot | ||||||
|                 if [[ $useExternalURL ]]; then |                 if [[ $useExternalURL ]]; then | ||||||
|  |                     wget -qO shrinkit.sdk http://www.nulib.com/library/shrinkit.sdk | ||||||
|  |                     if (( $? != 0 )); then | ||||||
|                         wget -qO shrinkit.sdk http://web.archive.org/web/20131031160750/http://www.nulib.com/library/shrinkit.sdk |                         wget -qO shrinkit.sdk http://web.archive.org/web/20131031160750/http://www.nulib.com/library/shrinkit.sdk | ||||||
|  |                     fi | ||||||
|                     nulib2 -x -s -e shrinkit.sdk &> /dev/null |                     nulib2 -x -s -e shrinkit.sdk &> /dev/null | ||||||
|                 fi |                 fi | ||||||
|                 if [[ ! -f "SHRINKIT#000118i" ]]; then |                 if [[ ! -f "SHRINKIT#000118i" ]]; then | ||||||
| @@ -673,8 +694,8 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupNetBoot ]]; then | |||||||
|                     wget --max-redirect 0 -qO Apple_II_System_Disk_3.2.sea.bin http://download.info.apple.com/Apple_Support_Area/Apple_Software_Updates/English-North_American/Apple_II/Apple_II_Supplemental/Apple_II_System_Disk_3.2.sea.bin |                     wget --max-redirect 0 -qO Apple_II_System_Disk_3.2.sea.bin http://download.info.apple.com/Apple_Support_Area/Apple_Software_Updates/English-North_American/Apple_II/Apple_II_Supplemental/Apple_II_System_Disk_3.2.sea.bin | ||||||
|                     if (( $? != 0 )); then |                     if (( $? != 0 )); then | ||||||
|                         wget -qO Apple_II_System_Disk_3.2.sea.bin http://archive.org/download/download.info.apple.com.2012.11/download.info.apple.com.2012.11.zip/download.info.apple.com%2FApple_Support_Area%2FApple_Software_Updates%2FEnglish-North_American%2FApple_II%2FApple_II_Supplemental%2FApple_II_System_Disk_3.2.sea.bin |                         wget -qO Apple_II_System_Disk_3.2.sea.bin http://archive.org/download/download.info.apple.com.2012.11/download.info.apple.com.2012.11.zip/download.info.apple.com%2FApple_Support_Area%2FApple_Software_Updates%2FEnglish-North_American%2FApple_II%2FApple_II_Supplemental%2FApple_II_System_Disk_3.2.sea.bin | ||||||
|                         unar -k skip Apple_II_System_Disk_3.2.sea.bin &> /dev/null |  | ||||||
|                     fi |                     fi | ||||||
|  |                     unar -k skip Apple_II_System_Disk_3.2.sea.bin &> /dev/null | ||||||
|                 fi |                 fi | ||||||
|                 if [[ ! -f 'Apple II System Disk 3.2.sea' ]]; then |                 if [[ ! -f 'Apple II System Disk 3.2.sea' ]]; then | ||||||
|                     wget -qO Apple_II_System_Disk_3.2.sea.bin ${binaryURL}external/appleii/Apple_II_System_Disk_3.2.sea.bin |                     wget -qO Apple_II_System_Disk_3.2.sea.bin ${binaryURL}external/appleii/Apple_II_System_Disk_3.2.sea.bin | ||||||
| @@ -694,7 +715,7 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupNetBoot ]]; then | |||||||
|         p8CommInstalled= |         p8CommInstalled= | ||||||
|         [[ -f $commDir/ProTERM/PROTERM && -f $commDir/Z.Link/Z.LINK && -f $commDir/ADTPro/ADTPRO && -f $commDir/ADTPro/VSDRIVE ]] && p8CommInstalled=1 |         [[ -f $commDir/ProTERM/PROTERM && -f $commDir/Z.Link/Z.LINK && -f $commDir/ADTPro/ADTPRO && -f $commDir/ADTPro/VSDRIVE ]] && p8CommInstalled=1 | ||||||
|         gsosCommInstalled= |         gsosCommInstalled= | ||||||
|         [[ -f $commDir/Spectrum/Spectrum && -f $commDir/SAM2/SAM2 && -f $commDir/SAFE2/SAFE2 && $commDir/SNAP/SNAP && $gsosDir/System/CDevs/TCPIP ]] && gsosCommInstalled=1 |         [[ -f $commDir/Spectrum/Spectrum && -f $commDir/SAM2/SAM2 && -f $commDir/SAFE2/SAFE2 && -f $commDir/SNAP/SNAP && -f $gsosDir/System/CDevs/TCPIP ]] && gsosCommInstalled=1 | ||||||
|         commInstalled= |         commInstalled= | ||||||
|         if [[ $gsosInstalled ]]; then |         if [[ $gsosInstalled ]]; then | ||||||
|             [[ $gsosCommInstalled && $p8CommInstalled ]] && commInstalled=1 |             [[ $gsosCommInstalled && $p8CommInstalled ]] && commInstalled=1 | ||||||
| @@ -724,9 +745,9 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupNetBoot ]]; then | |||||||
|                 unset safeUrl samUrl snapUrl safeVer samVer snapVer |                 unset safeUrl samUrl snapUrl safeVer samVer snapVer | ||||||
|                 if [[ $useExternalURL ]]; then |                 if [[ $useExternalURL ]]; then | ||||||
|                     html=$(wget -qO- http://speccie.co.uk/speccie/Site/Download_Centre_files/widget1_markup.html) |                     html=$(wget -qO- http://speccie.co.uk/speccie/Site/Download_Centre_files/widget1_markup.html) | ||||||
|                     safeUrl=$(echo "$html" | grep -i 'safe2.*bxy' | tr '<>' '\n' | grep href | cut -d '=' -f 2) |                     safeUrl=$(echo "$html" | grep -i 'safe2.*bxy' | tr '<>' '\n' | grep href | cut -d '=' -f 2 | tr -d '"') | ||||||
|                     samUrl=$(echo "$html" | grep -i 'sam2.*bxy' | tr '<>' '\n' | grep href | cut -d '=' -f 2) |                     samUrl=$(echo "$html" | grep -i 'sam2.*bxy' | tr '<>' '\n' | grep href | cut -d '=' -f 2 | tr -d '"') | ||||||
|                     snapUrl=$(echo "$html" | grep -i 'snap.*bxy' | tr '<>' '\n' | grep href | cut -d '=' -f 2) |                     snapUrl=$(echo "$html" | grep -i 'snap.*bxy' | tr '<>' '\n' | grep href | cut -d '=' -f 2 | tr -d '"') | ||||||
|                     safeVer=$(echo $safeUrl | rev | cut -d '/' -f 1 | cut -d '.' -f 2 | rev | cut -c 5- | sed 's/./.&/g' | cut -c 2-) |                     safeVer=$(echo $safeUrl | rev | cut -d '/' -f 1 | cut -d '.' -f 2 | rev | cut -c 5- | sed 's/./.&/g' | cut -c 2-) | ||||||
|                     samVer=$(echo $samUrl | rev | cut -d '/' -f 1 | cut -d '.' -f 2 | rev | cut -c 4- | sed 's/./.&/g' | cut -c 2-) |                     samVer=$(echo $samUrl | rev | cut -d '/' -f 1 | cut -d '.' -f 2 | rev | cut -c 4- | sed 's/./.&/g' | cut -c 2-) | ||||||
|                     snapVer=$(echo $snapUrl | rev | cut -d '/' -f 1 | cut -d '.' -f 2 | rev | cut -c 5- | sed 's/./.&/g' | cut -c 2-) |                     snapVer=$(echo $snapUrl | rev | cut -d '/' -f 1 | cut -d '.' -f 2 | rev | cut -c 5- | sed 's/./.&/g' | cut -c 2-) | ||||||
| @@ -809,7 +830,7 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupNetBoot ]]; then | |||||||
|                     if [[ $? != 0 || ! -f PPPX.1.3d4.SHK || $(wc -c < PPPX.1.3d4.SHK) != "22068" ]]; then |                     if [[ $? != 0 || ! -f PPPX.1.3d4.SHK || $(wc -c < PPPX.1.3d4.SHK) != "22068" ]]; then | ||||||
|                         wget -qO PPPX.1.3d4.SHK ${binaryURL}external/appleii/PPPX.1.3d4.SHK |                         wget -qO PPPX.1.3d4.SHK ${binaryURL}external/appleii/PPPX.1.3d4.SHK | ||||||
|                     fi |                     fi | ||||||
|                     cppo -ad -s PPPX.1.3d4.SHK . &> /dev/null |                     cppo -ad -s PPPX.1.3d4.SHK . > /dev/null | ||||||
|                     cd PPPX.1.3d4 |                     cd PPPX.1.3d4 | ||||||
|                     cpAD PPP.scripted $gsosDir/System/TCPIP |                     cpAD PPP.scripted $gsosDir/System/TCPIP | ||||||
|                     cpAD PPP.Script.DOC $commDir/Marinetti/Documentation |                     cpAD PPP.Script.DOC $commDir/Marinetti/Documentation | ||||||
| @@ -869,7 +890,7 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupNetBoot ]]; then | |||||||
|                     cpAD TimeZone/Tool056 $gsosDir/System/Tools |                     cpAD TimeZone/Tool056 $gsosDir/System/Tools | ||||||
|                     rm -r $gsosDir/System/Desk.Accs/Help.Files/SAFE2 2> /dev/null |                     rm -r $gsosDir/System/Desk.Accs/Help.Files/SAFE2 2> /dev/null | ||||||
|                     mv Help/Help.Files/SAFE2 $gsosDir/System/Desk.Accs/Help.Files |                     mv Help/Help.Files/SAFE2 $gsosDir/System/Desk.Accs/Help.Files | ||||||
|                     wget -qO- ${scriptURL}files/safe2-setup.tgz | tar Pzx |                     wget -qO- ${binaryURL}safe2-setup.tgz | tar Pzx | ||||||
|  |  | ||||||
|                     afpsync -v $gsosDir > /dev/null |                     afpsync -v $gsosDir > /dev/null | ||||||
|                 fi |                 fi | ||||||
| @@ -939,7 +960,7 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupNetBoot ]]; then | |||||||
|                     cpAD Quick.Start $commDir/SNAP |                     cpAD Quick.Start $commDir/SNAP | ||||||
|                     rm -r $gsosDir/System/Desk.Accs/Help.Files/SNAP 2> /dev/null |                     rm -r $gsosDir/System/Desk.Accs/Help.Files/SNAP 2> /dev/null | ||||||
|                     mv Help/Help.Files/SNAP $gsosDir/System/Desk.Accs/Help.Files |                     mv Help/Help.Files/SNAP $gsosDir/System/Desk.Accs/Help.Files | ||||||
|                     wget -qO- ${scriptURL}files/snap-setup.tgz | tar Pzx |                     wget -qO- ${binaryURL}snap-setup.tgz | tar Pzx | ||||||
|                     # cpAD Fonts/SIS.3.10 $gsosDir/System/Fonts |                     # cpAD Fonts/SIS.3.10 $gsosDir/System/Fonts | ||||||
|                     # cpAD Fonts/SIS.4.10 $gsosDir/System/Fonts |                     # cpAD Fonts/SIS.4.10 $gsosDir/System/Fonts | ||||||
|                     # cpAD Tools/HTMLTool/TOOL130 $gsosDir/System/Tools |                     # cpAD Tools/HTMLTool/TOOL130 $gsosDir/System/Tools | ||||||
|   | |||||||
| @@ -14,7 +14,7 @@ password="your password" | |||||||
| [[ $isRaspberryPw ]] && password="'raspberry'" | [[ $isRaspberryPw ]] && password="'raspberry'" | ||||||
|  |  | ||||||
| isDebian= | isDebian= | ||||||
| [[ ( -f /etc/debian_version ) && ( $(cut -c 1-2 < /etc/debian_version) == "7." ) && ( $(uname -m) == "i686" ) ]] && isDebian=1 | b_release -a 2> /dev/null | grep -q 'Distributor ID:.Debian' && [[ ( -f /etc/debian_version ) && ( $(cut -d . -f 1 < /etc/debian_version) -ge "7" ) ]] && isDebian=1 | ||||||
|  |  | ||||||
| if [[ $isDebian ]]; then | if [[ $isDebian ]]; then | ||||||
|     if { lspci 2> /dev/null | grep -q VirtualBox; }; then |     if { lspci 2> /dev/null | grep -q VirtualBox; }; then | ||||||
|   | |||||||
| @@ -100,7 +100,7 @@ while True:                                     # 999  REM  get the user's input | |||||||
|         if (mo == 4 or                          # 1162  IF (MO = 4 OR MO = 6 OR MO = 9 OR MO = 11) AND DA > 30 THEN 1050 |         if (mo == 4 or                          # 1162  IF (MO = 4 OR MO = 6 OR MO = 9 OR MO = 11) AND DA > 30 THEN 1050 | ||||||
|             mo == 6 or |             mo == 6 or | ||||||
|             mo == 9 or |             mo == 9 or | ||||||
|             mo == 11): x = -1; continue |             mo == 11) and da > 30: x = -1; continue | ||||||
|                                                 # 1170  REM  Convert year string into numeric value |                                                 # 1170  REM  Convert year string into numeric value | ||||||
|         yr = int(day)                           # 1180 YR =  VAL (DAY$) |         yr = int(day)                           # 1180 YR =  VAL (DAY$) | ||||||
|         if yr < 0 or yr > 99: x = -1; continue  # 1190  IF YR < 0 OR YR > 99 THEN 1050: REM Only allow 0-99 |         if yr < 0 or yr > 99: x = -1; continue  # 1190  IF YR < 0 OR YR > 99 THEN 1050: REM Only allow 0-99 | ||||||
|   | |||||||
| @@ -2,17 +2,17 @@ | |||||||
| # vim: set tabstop=4 shiftwidth=4 expandtab filetype=sh: | # vim: set tabstop=4 shiftwidth=4 expandtab filetype=sh: | ||||||
|  |  | ||||||
| alias a2server-help="more /usr/local/etc/a2server-help.txt" | alias a2server-help="more /usr/local/etc/a2server-help.txt" | ||||||
| alias a2server-setup="wget -q -O /tmp/a2server-setup ${A2SERVER_SCRIPT_URL}setup/index.txt || { echo \"Can't download A2SERVER setup scripts. Do you has internet?\"; false; } && source /tmp/a2server-setup" | alias a2server-setup='wget -q -O /tmp/a2server-setup ${A2SERVER_SCRIPT_URL:-https://raw.githubusercontent.com/RasppleII/a2server/current/}setup/index.txt || { echo "Can'"'"'t download A2SERVER setup scripts. Do you has internet?"; false; } && source /tmp/a2server-setup' | ||||||
|  |  | ||||||
| alias a2server-version="cat /usr/local/etc/A2SERVER-version" | alias a2server-version="cat /usr/local/etc/A2SERVER-version" | ||||||
| alias a2server-update="wget -q -O /tmp/a2server-update ${A2SERVER_SCRIPT_URL}update/index.txt || { echo \"Can't download A2SERVER setup scripts. Do you has internet?\"; false; } && source /tmp/a2server-update" | alias a2server-update='wget -q -O /tmp/a2server-update ${A2SERVER_SCRIPT_URL:-https://raw.githubusercontent.com/RasppleII/a2server/current/}update/index.txt || { echo "Can'"'"'t download A2SERVER setup scripts. Do you has internet?"; false; } && source /tmp/a2server-update' | ||||||
|  |  | ||||||
| alias system-shutdown='sudo shutdown -h now' | alias system-shutdown='sudo shutdown -h now' | ||||||
| alias system-restart='sudo shutdown -r now' | alias system-restart='sudo shutdown -r now' | ||||||
|  |  | ||||||
|  |  | ||||||
| alias raspi-config='[[ -f /usr/bin/raspi-config ]] && sudo /usr/bin/raspi-config || echo "raspi-config not found. Are you using a Raspberry Pi with Raspbian?"' | alias raspi-config='[[ -f /usr/bin/raspi-config ]] && sudo /usr/bin/raspi-config || echo "raspi-config not found. Are you using a Raspberry Pi with Raspbian?"' | ||||||
| alias raspbian-update='wget -qO /tmp/raspbian-update ${A2SERVER_SCRIPT_URL}scripts/raspbian-update.txt; source /tmp/raspbian-update' | alias raspbian-update='wget -qO /tmp/raspbian-update ${A2SERVER_SCRIPT_URL:-https://raw.githubusercontent.com/RasppleII/a2server/current/}scripts/raspbian-update.txt || { echo "Can'"'"'t download A2SERVER setup scripts. Do you has internet?"; false; } && source /tmp/raspbian-update' | ||||||
| alias rasppleii-update='raspbian-update a2cloud a2server' | alias rasppleii-update='raspbian-update a2cloud a2server' | ||||||
|  |  | ||||||
| alias welcome-message-edit='sudo nano /etc/motd' | alias welcome-message-edit='sudo nano /etc/motd' | ||||||
| @@ -33,8 +33,8 @@ alias bonjour-off="sudo mv /etc/avahi/services/afpd.service /etc/avahi/services/ | |||||||
| alias bonjour-on="sudo mv /etc/avahi/services/afpd.service_disabled /etc/avahi/services/afpd.service &> /dev/null" | alias bonjour-on="sudo mv /etc/avahi/services/afpd.service_disabled /etc/avahi/services/afpd.service &> /dev/null" | ||||||
|  |  | ||||||
|  |  | ||||||
| alias netatalk-router-on='sudo sed -i '"'"'s/^eth0.*$/eth0 -router -phase 2 -net 1 -zone "A2SERVER"/'"'"' /usr/local/etc/netatalk/atalkd.conf; sudo sed -i '"'"'s/^wlan0.*$/wlan0 -router -phase 2 -net 1 -zone "A2SERVER"/'"'"' /usr/local/etc/netatalk/atalkd.conf; netatalk-restart' | alias netatalk-router-on='sudo sed -i '"'"'s/^\([^# ]*\)\( .*\)$/\1 -router\2 -zone "A2SERVER"/'"'"' /usr/local/etc/netatalk/atalkd.conf; netatalk-restart' | ||||||
| alias netatalk-router-off='sudo sed -i '"'"'s/^eth0.*$/eth0/'"'"' /usr/local/etc/netatalk/atalkd.conf; sudo sed -i '"'"'s/^wlan0.*$/wlan0/'"'"' /usr/local/etc/netatalk/atalkd.conf; netatalk-restart' | alias netatalk-router-off='sudo sed -i '"'"'s/^\([^#].*\) -router\(.*\) -zone [^ ]*\(.*\)$/\1\2\3/'"'"' /usr/local/etc/netatalk/atalkd.conf; netatalk-restart' | ||||||
|  |  | ||||||
|  |  | ||||||
| alias netatalk-eth='sudo sed -i 's/^wlan0/eth0/' /usr/local/etc/netatalk/atalkd.conf; netatalk-restart' | alias netatalk-eth='sudo sed -i 's/^wlan0/eth0/' /usr/local/etc/netatalk/atalkd.conf; netatalk-restart' | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| #! /bin/bash | #! /bin/bash | ||||||
| # vim: set tabstop=4 shiftwidth=4 expandtab filetype=sh: | # vim: set tabstop=4 shiftwidth=4 expandtab filetype=sh: | ||||||
|  |  | ||||||
| export A2SERVER_SCRIPT_URL="${A2SERVER_SCRIPT_URL:-http://ivanx.com/a2server/}" | export A2SERVER_SCRIPT_URL="${A2SERVER_SCRIPT_URL:-https://raw.githubusercontent.com/RasppleII/a2server/current/}" | ||||||
| export A2SERVER_BINARY_URL="${A2SERVER_BINARY_URL:-http://ivanx.com/a2server/files/}" | export A2SERVER_BINARY_URL="${A2SERVER_BINARY_URL:-http://ivanx.com/a2server/files/}" | ||||||
| source /usr/local/etc/a2server-aliases | source /usr/local/etc/a2server-aliases | ||||||
|   | |||||||
| @@ -41,6 +41,7 @@ import shutil | |||||||
| import errno | import errno | ||||||
| import uuid | import uuid | ||||||
| import subprocess | import subprocess | ||||||
|  | import tempfile | ||||||
|  |  | ||||||
| # Intentionally fails on pre-2.6 (no b'') so user can see what's wrong | # Intentionally fails on pre-2.6 (no b'') so user can see what's wrong | ||||||
| b'ERROR: cppo requires Python 2.6 or later, including 3.x.' | b'ERROR: cppo requires Python 2.6 or later, including 3.x.' | ||||||
| @@ -749,9 +750,9 @@ def quitNow(exitCode=0): | |||||||
|               "If the directory") |               "If the directory") | ||||||
|         print("is shared by Netatalk, please type 'afpsync' now.") |         print("is shared by Netatalk, please type 'afpsync' now.") | ||||||
|     if g.SHK: # clean up |     if g.SHK: # clean up | ||||||
|         for file in os.listdir("/tmp"): |         for file in os.listdir('/tmp'): | ||||||
|             if file.startswith("cppo-"): |             if file.startswith("cppo-"): | ||||||
|                 shutil.rmtree(file) |                 shutil.rmtree('/tmp' + "/" + file) | ||||||
|     sys.exit(exitCode) |     sys.exit(exitCode) | ||||||
|  |  | ||||||
| def usage(exitcode=1): | def usage(exitcode=1): | ||||||
| @@ -1175,11 +1176,27 @@ if (g.SHK or | |||||||
| if (len(args) == 4): | if (len(args) == 4): | ||||||
|     g.extractFile = args[2] |     g.extractFile = args[2] | ||||||
|  |  | ||||||
|  | if g.extractFile: | ||||||
|  |     targetPath = args[3] | ||||||
|  |     if os.path.isdir(targetPath): | ||||||
|  |         g.targetDir = targetPath | ||||||
|  |     elif (targetPath.rsplit("/", 1) > 1): | ||||||
|  |         g.targetDir = targetPath.rsplit("/", 1)[0] | ||||||
|  |         g.targetName = targetPath.rsplit("/", 1)[1] | ||||||
|  |     if not os.path.isdir(g.targetDir): | ||||||
|  |         print("Target directory not found.") | ||||||
|  |         quitNow(2) | ||||||
|  | else: | ||||||
|  |     if not g.CAT: | ||||||
|  |         if not os.path.isdir(args[2]): | ||||||
|  |             print("Target directory not found.") | ||||||
|  |             quitNow(2) | ||||||
|  |  | ||||||
| if g.SHK: | if g.SHK: | ||||||
|     g.PNAME = 0 |     g.PNAME = 0 | ||||||
|     if not g.CAT: |     if not g.CAT: | ||||||
|         targetDir = (args[3] if g.extractFile else args[2]) |         targetDir = (args[3] if g.extractFile else args[2]) | ||||||
|     unshkdir = ("/tmp/cppo-" + str(uuid.uuid4())) |     unshkdir = ('/tmp' + "/cppo-" + str(uuid.uuid4())) | ||||||
|     makedirs(unshkdir) |     makedirs(unshkdir) | ||||||
|     result = os.system("/bin/bash -c 'cd " + unshkdir + "; " + |     result = os.system("/bin/bash -c 'cd " + unshkdir + "; " + | ||||||
|                        "result=$(nulib2 -xse " + os.path.abspath(g.imageFile) + |                        "result=$(nulib2 -xse " + os.path.abspath(g.imageFile) + | ||||||
| @@ -1201,7 +1218,7 @@ if g.SHK: | |||||||
|         extractPath = (unshkdir + "/" + g.extractFile) |         extractPath = (unshkdir + "/" + g.extractFile) | ||||||
|         extractPathDir = os.path.dirname(extractPath) |         extractPathDir = os.path.dirname(extractPath) | ||||||
|         # move the extracted file to the root |         # move the extracted file to the root | ||||||
|         newunshkdir = ("/tmp/cppo-" + str(uuid.uuid4())) |         newunshkdir = ('/tmp' + "/cppo-" + str(uuid.uuid4())) | ||||||
|         makedirs(newunshkdir) |         makedirs(newunshkdir) | ||||||
|         for filename in os.listdir(extractPathDir): |         for filename in os.listdir(extractPathDir): | ||||||
|             shutil.move(extractPathDir + "/" + filename, newunshkdir) |             shutil.move(extractPathDir + "/" + filename, newunshkdir) | ||||||
| @@ -1340,22 +1357,6 @@ if (not g.SHK and | |||||||
|     (slyce(args[2],0,1) != ":")): |     (slyce(args[2],0,1) != ":")): | ||||||
|     usage() |     usage() | ||||||
|  |  | ||||||
| if g.extractFile: |  | ||||||
|     targetPath = args[3] |  | ||||||
|     if os.path.isdir(targetPath): |  | ||||||
|         g.targetDir = targetPath |  | ||||||
|     else: |  | ||||||
|         g.targetDir = targetPath.rsplit("/", 1)[0] |  | ||||||
|         g.targetName = targetPath.rsplit("/", 1)[1] |  | ||||||
|     if not os.path.isdir(g.targetDir): |  | ||||||
|         print("Target directory not found.") |  | ||||||
|         quitNow(2) |  | ||||||
| else: |  | ||||||
|     if not g.CAT: |  | ||||||
|         if not os.path.isdir(args[2]): |  | ||||||
|             print("Target directory not found.") |  | ||||||
|             quitNow(2) |  | ||||||
|      |  | ||||||
| if g.D33: | if g.D33: | ||||||
|     diskName = os.path.basename(g.imageFile) |     diskName = os.path.basename(g.imageFile) | ||||||
|     if (diskName[-4:].lower() == ".dsk" or |     if (diskName[-4:].lower() == ".dsk" or | ||||||
|   | |||||||
| @@ -9,12 +9,12 @@ | |||||||
| # to download and execute, type: | # to download and execute, type: | ||||||
| # wget ivanx.com/a2server/setup; source setup | # wget ivanx.com/a2server/setup; source setup | ||||||
|  |  | ||||||
| a2serverVersion="132" | a2serverVersion="150" | ||||||
|  |  | ||||||
| # Ensure URL we'll use ends in a / | # Ensure URL we'll use ends in a / | ||||||
| case "$A2SERVER_SCRIPT_URL" in | case "$A2SERVER_SCRIPT_URL" in | ||||||
| 	*/) scriptURL="$A2SERVER_SCRIPT_URL" ;; | 	*/) scriptURL="$A2SERVER_SCRIPT_URL" ;; | ||||||
| 	*) scriptURL="${A2SERVER_SCRIPT_URL:-http://ivanx.com/a2server}/" ;; | 	*) scriptURL="${A2SERVER_SCRIPT_URL:-https://raw.githubusercontent.com/RasppleII/a2server/current}/" ;; | ||||||
| esac | esac | ||||||
| case "$A2SERVER_BINARY_URL" in | case "$A2SERVER_BINARY_URL" in | ||||||
| 	*/) binaryURL="$A2SERVER_BINARY_URL" ;; | 	*/) binaryURL="$A2SERVER_BINARY_URL" ;; | ||||||
| @@ -27,15 +27,16 @@ isRpi= | |||||||
| [[ -f /usr/bin/raspi-config ]] && isRpi=1 | [[ -f /usr/bin/raspi-config ]] && isRpi=1 | ||||||
|  |  | ||||||
| isDebian= | isDebian= | ||||||
| lsb_release -a 2> /dev/null | grep -q 'Distributor ID:.Debian' && [[ ( -f /etc/debian_version ) && ( $(cut -c 1 < /etc/debian_version) -ge "7" ) ]] && isDebian=1 | lsb_release -a 2> /dev/null | grep -q 'Distributor ID:.Debian' && [[ ( -f /etc/debian_version ) && ( $(cut -d . -f 1 < /etc/debian_version) -ge "7" ) ]] && isDebian=1 | ||||||
|  |  | ||||||
| if [[ -f /usr/local/etc/A2SERVER-version ]]; then | if [ -f /usr/local/etc/A2SERVER-version ]; then | ||||||
|     echo "A2SERVER version available: $a2serverVersion" |     installedVersion="$(cat /usr/local/etc/A2SERVER-version)" | ||||||
|     echo "A2SERVER version installed: $(cat /usr/local/etc/A2SERVER-version)" |  | ||||||
| fi | fi | ||||||
|  | echo "A2SERVER version available: $a2serverVersion" | ||||||
|  | echo "A2SERVER version installed: ${installedVersion:=None}" | ||||||
|  |  | ||||||
| echo | echo | ||||||
| [[ $scriptURL != *"ivanx.com"* ]] && echo "Using script URL: $scriptURL" | [[ $scriptURL != *"ivanx.com"* && $scriptURL != *"raw.githubusercontent.com/RasppleII/a2server"* ]] && echo "Using script URL: $scriptURL" | ||||||
| [[ $binaryURL != *"ivanx.com"* ]] && echo "Using binary URL: $binaryURL" | [[ $binaryURL != *"ivanx.com"* ]] && echo "Using binary URL: $binaryURL" | ||||||
| [[ ! $useExternalURL ]] && echo -e "Not using external URLs. Downloads must be available from:\n  ${binaryURL}external/appleii/\n  ${binaryURL}external/source/\n  (See the A2SERVER developer page for more information.)" | [[ ! $useExternalURL ]] && echo -e "Not using external URLs. Downloads must be available from:\n  ${binaryURL}external/appleii/\n  ${binaryURL}external/source/\n  (See the A2SERVER developer page for more information.)" | ||||||
|  |  | ||||||
| @@ -77,10 +78,7 @@ while [[ $1 ]]; do | |||||||
|         updateRasppleII=1 |         updateRasppleII=1 | ||||||
|     elif [[ $1 == "-v" ]]; then |     elif [[ $1 == "-v" ]]; then | ||||||
|         shift |         shift | ||||||
|         if [[ ! -f /usr/local/etc/A2SERVER-version ]]; then |         # Version was already printed | ||||||
|             echo "A2SERVER version available: $a2serverVersion" |  | ||||||
|             echo "A2SERVER version installed: none" |  | ||||||
|         fi |  | ||||||
|         [[ $0 == "-bash" ]] && return 1 || exit 1 |         [[ $0 == "-bash" ]] && return 1 || exit 1 | ||||||
|     elif [[ $1 ]]; then |     elif [[ $1 ]]; then | ||||||
|         echo "options:" |         echo "options:" | ||||||
| @@ -116,6 +114,10 @@ fi | |||||||
| a2server_update=0 | a2server_update=0 | ||||||
| doSetup=1 | doSetup=1 | ||||||
|  |  | ||||||
|  | if { [[ -f /usr/local/etc/A2SERVER-version ]] && (( $(head -c 3 /usr/local/etc/A2SERVER-version) < 150 )); }; then | ||||||
|  |     a2server_update=1 | ||||||
|  | fi | ||||||
|  |  | ||||||
| unsupportedOS=1 | unsupportedOS=1 | ||||||
| if [[ $isRpi ]]; then #supported Raspbian? (16-Feb-15, 20-Jun-14, 09-Jan-14, etc) | if [[ $isRpi ]]; then #supported Raspbian? (16-Feb-15, 20-Jun-14, 09-Jan-14, etc) | ||||||
|     fwhash=$(zcat /usr/share/doc/raspberrypi-bootloader/changelog.Debian.gz | grep -m 1 'as of' | awk '{print $NF}') |     fwhash=$(zcat /usr/share/doc/raspberrypi-bootloader/changelog.Debian.gz | grep -m 1 'as of' | awk '{print $NF}') | ||||||
| @@ -147,13 +149,12 @@ if [[ $unsupportedOS ]]; then | |||||||
|     echo |     echo | ||||||
|     echo "WARNING: A2SERVER and its installer scripts have only been tested on" |     echo "WARNING: A2SERVER and its installer scripts have only been tested on" | ||||||
|     echo "Debian and Raspbian. Continuing is probably fine, but might not be." |     echo "Debian and Raspbian. Continuing is probably fine, but might not be." | ||||||
|     echo "Worst case could make your operating system no longer work properly," |     echo "Theoretical worst case would be your operating system no longer works" | ||||||
|     echo "or cause data to be lost." |     echo "properly or data is lost, so consider backing up first." | ||||||
|     echo "More information is at http://ivanx.com/a2server." |  | ||||||
| fi | fi | ||||||
|  |  | ||||||
| doSetup=1 | doSetup=1 | ||||||
| if [[ ! -f /usr/local/etc/a2server-help.txt ]] || (( $a2server_update )); then | if [[ $installAll || ! -f /usr/local/etc/a2server-help.txt ]] || (( $a2server_update )); then | ||||||
|     echo |     echo | ||||||
|     echo "Setting up A2SERVER will take up to 60 minutes, during which" |     echo "Setting up A2SERVER will take up to 60 minutes, during which" | ||||||
|     echo "you'll see a bunch of stuff spit out across the screen." |     echo "you'll see a bunch of stuff spit out across the screen." | ||||||
| @@ -279,9 +280,10 @@ if (( $doSetup )); then | |||||||
|             echo "via the AppleShare control panel." |             echo "via the AppleShare control panel." | ||||||
|             if [[ -f /srv/A2SERVER/A2FILES/System/Start.GS.OS ]]; then |             if [[ -f /srv/A2SERVER/A2FILES/System/Start.GS.OS ]]; then | ||||||
|                 echo |                 echo | ||||||
|                 echo "You can network boot GS/OS. On a ROM 01 IIgs, set slot 1 or 2, and slot 7," |                 echo "You can network boot GS/OS." | ||||||
|                 echo 'to AppleTalk, and Startup Slot to 7 or "Scan". On a ROM 3 IIgs, set' |                 echo "On a ROM 01 IIgs, set slot 1 (printer port), or slot 2 (modem port)" | ||||||
|                 echo "slot 1 or 2, and Startup Slot, to AppleTalk." |                 echo "to Your Card, and slot 7 to AppleTalk, and Startup Slot to 7 or Scan." | ||||||
|  |                 echo "On a ROM 3 IIgs, set slot 1 or 2, and Startup Slot, to AppleTalk." | ||||||
|             fi |             fi | ||||||
|             if [[ -f /srv/A2SERVER/A2FILES/BASIC.System ]]; then |             if [[ -f /srv/A2SERVER/A2FILES/BASIC.System ]]; then | ||||||
|                 echo |                 echo | ||||||
|   | |||||||
							
								
								
									
										101
									
								
								update/devhistory.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								update/devhistory.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,101 @@ | |||||||
|  | 1.0.0: Jan 2012: initial release | ||||||
|  |  | ||||||
|  | 1.0.1: Jan 2012: fixes Netatalk date-stamp bug (thanks to Steven Hirsch) | ||||||
|  |  | ||||||
|  | 1.0.2: Jan 2013: Netatalk 2.2.4; OS X 10.7+ login fixed; netboot fixes; | ||||||
|  |                  Raspbian "Wheezy" support; Ubuntu 12.04 LTS support | ||||||
|  |  | ||||||
|  | 1.1.0: Apr 2013: Full GS/OS install; eliminated GS.SYSTEM volume; | ||||||
|  |                  Raspberry Pi enhancements; lots of improvements to installer; | ||||||
|  |                  more utilities installed for Apple II; improved cppo | ||||||
|  |                  NOTE: fresh install required, can't update earlier version | ||||||
|  |  | ||||||
|  | 1.1.1: Jun 2013: Wi-Fi support; updates/additions to commands in a2server-help; | ||||||
|  |                  bug fixes and improvements to install script; appletalk kernel | ||||||
|  |                  module for Raspbian (instead of replacement kernel); RPi | ||||||
|  |                  console (onboard serial) set to 19,200 bps during boot | ||||||
|  |  | ||||||
|  | 1.1.2: Oct 2013: resolves issue of no AppleTalk in Raspbian 2013-09-10 and | ||||||
|  |                  later; faster command-line installation on Raspberry Pi | ||||||
|  |                  (nulib2 and unar binaries are downloaded rather than compiled) | ||||||
|  |  | ||||||
|  | 1.1.3: Jan 2014: shares ADTPro disks folder as ADTDISKS; added environment | ||||||
|  |                  variables for shared folders; can resolve by name | ||||||
|  |                  "a2server.local" if network client has Bonjour/zeroconf; | ||||||
|  |                  server presents itself as Shared computer to Macs on network; | ||||||
|  |                  VM based on Debian 7 | ||||||
|  |  | ||||||
|  | 1.1.4: Jan 2014: fixes bug with network boot if ADTPro disks folder is shared | ||||||
|  |  | ||||||
|  | 1.1.5: Jul 2014: a2server-setup fixes Raspbian 20-Jul-14 AppleTalk kernel panic | ||||||
|  |  | ||||||
|  | 1.2.0: Aug 2014: a2server-setup and Netatalk startup script addresses AppleTalk | ||||||
|  |                  kernel panic on any Linux kernel 3.12-3.15; Netatalk starts | ||||||
|  |                  in background, preventing startup delay; a2server-setup always | ||||||
|  |                  configures Netatalk startup script and can download a new one | ||||||
|  |                  if missing; a2server-setup on Raspbian or Debian 7 x86 is | ||||||
|  |                  faster because it downloads binaries rather than compiling | ||||||
|  |                  from source; unbit/unexec/usq unarchivers added; additional | ||||||
|  |                  virtual machine which has both A2SERVER and A2CLOUD installed | ||||||
|  |  | ||||||
|  | 1.2.1: Jan 2015: minor fixes; support for LED blink on Raspbian 2015-01-31 | ||||||
|  |  | ||||||
|  | 1.2.2: Mar 2015: installer improvements: now has command line options, | ||||||
|  |                  including unattended install; installer sets passwords | ||||||
|  |                  automatically to 'apple2'; status messages are now prefixed by | ||||||
|  |                  A2SERVER:; can update Raspple II (Raspbian OS, | ||||||
|  |                  NOOBS install manager, A2SERVER, and A2CLOUD); minor fixes. | ||||||
|  |  | ||||||
|  | 1.2.3: May 2015: changed Apple software links to Internet Archive | ||||||
|  |  | ||||||
|  | 1.2.4: Jul 2015: offer to download A2CLOUD disk contents onto A2FILES volume | ||||||
|  |  | ||||||
|  | 1.2.4+:Oct 2015: support for using A2SERVER scripts from a location other than | ||||||
|  | [unannounced]    ivanx.com/a2server for development purposes | ||||||
|  |  | ||||||
|  | 1.2.5: Nov 2015: netboot install option for GS/OS 6.0.2/3 | ||||||
|  |                  netboot always downloads GS/OS disk images even if present | ||||||
|  |                  provides error if a2setup doesn't have internet | ||||||
|  |                  remove persisting a2server-setup options after aborted install | ||||||
|  |                  fixed installer bug that omits first and last script elements | ||||||
|  |                  download images from Apple, with Internet Archive as a backup | ||||||
|  |                  install HFS.FST during netboot install | ||||||
|  |  | ||||||
|  | 1.2.5+:Nov 2015: Merged Ivan's 1.2.5 release, removed support for Ubuntu for | ||||||
|  | [unannounced]    now (see RasppleII/a2server#11), patched ProDOS 8 in boot | ||||||
|  |                  files for current year table, install unar from a package if | ||||||
|  |                  it exists. | ||||||
|  |  | ||||||
|  | 1.2.6: Nov 2015: full, ready to use install of Spectrum; install unzip | ||||||
|  | [unannounced] | ||||||
|  |  | ||||||
|  | 1.2.6+:Nov 2015: merged Ivan's 1.2.6 (into github master branch) | ||||||
|  | [unannounced] | ||||||
|  |  | ||||||
|  | 1.2.7: Dec 2015: preliminary Jessie support; case insensitive file system for | ||||||
|  | [unannounced]    A2FILES; removes GSFILES if empty; DOS3.3.FST and TEACH are | ||||||
|  |                  installed with netboot installation; minor bug fixes and | ||||||
|  |                  tweaks; Ubuntu support removed; branches unified | ||||||
|  |  | ||||||
|  | 1.2.8: Dec 2015: can specify alternate host for binaries and external files; | ||||||
|  | [unannounced]    64-bit Debian precompiled binaries; move /media/A2SHARED/* | ||||||
|  |                  to /srv/A2SERVER; internet access (MacIP support); | ||||||
|  |  | ||||||
|  | 1.2.9: Jan 2016: cppo supports ShrinkIt, DOS 3.3, DSK, 2MG; MountIt fully | ||||||
|  | [unannounced]    installed; nulib2 fixes handling empty forks (thanks Andy); | ||||||
|  |                  -c installer option compiles all software (no binaries) | ||||||
|  |  | ||||||
|  | 1.3.0: Jan 2016: Marinetti 3.0b8 installed, with preconfigured MacIP | ||||||
|  | [unannounced] | ||||||
|  |  | ||||||
|  | 1.3.1: Jan 2016: patch Prodos 8 Thunderclock year table based on current date | ||||||
|  | [unannounced] | ||||||
|  |  | ||||||
|  | 1.3.2: Jan 2016: install SAFE2, SAM2, and SNAP, configured for Apple II sites; | ||||||
|  | [unannounced]    -i installer option reinstalls A2SERVER | ||||||
|  |  | ||||||
|  | 1.5.0: Jan 2016: defaults to GitHub for location of installer scripts | ||||||
|  | [unannounced] | ||||||
|  |  | ||||||
|  | 1.5.1: May 2016: changed URLs from rawgit.com to raw.githubusercontent.com | ||||||
|  |                  to resolve https problems during install | ||||||
| @@ -4,7 +4,7 @@ | |||||||
| # Ensure URL we'll use ends in a / | # Ensure URL we'll use ends in a / | ||||||
| case "$A2SERVER_SCRIPT_URL" in | case "$A2SERVER_SCRIPT_URL" in | ||||||
| 	*/) scriptURL="$A2SERVER_SCRIPT_URL" ;; | 	*/) scriptURL="$A2SERVER_SCRIPT_URL" ;; | ||||||
| 	*) scriptURL="${A2SERVER_SCRIPT_URL:-http://ivanx.com/a2server}/" ;; | 	*) scriptURL="${A2SERVER_SCRIPT_URL:-https://raw.githubusercontent.com/RasppleII/a2server/current}/" ;; | ||||||
| esac | esac | ||||||
|  |  | ||||||
| currentVersion=$(wget -qO- "${scriptURL}setup/index.txt" | grep '^a2serverVersion' | cut -d '"' -f 2) | currentVersion=$(wget -qO- "${scriptURL}setup/index.txt" | grep '^a2serverVersion' | cut -d '"' -f 2) | ||||||
| @@ -37,9 +37,8 @@ else | |||||||
|     read |     read | ||||||
| fi | fi | ||||||
| if [[ ${REPLY:0:1} == "y" || ${REPLY:0:1} == "Y" ]]; then | if [[ ${REPLY:0:1} == "y" || ${REPLY:0:1} == "Y" ]]; then | ||||||
|     sudo rm /usr/local/etc/A2SERVER-version &> /dev/null |  | ||||||
|     # sudo rm /usr/local/etc/netatalk/a2boot/* &> /dev/null |     # sudo rm /usr/local/etc/netatalk/a2boot/* &> /dev/null | ||||||
|     wget -q -O /tmp/setup "${scriptURL}setup/index.txt"; source /tmp/setup "$@" |     wget -q -O /tmp/setup "${scriptURL}setup/index.txt"; source /tmp/setup -i "$@" | ||||||
| fi | fi | ||||||
|  |  | ||||||
| unset currentVersion 2> /dev/null | unset currentVersion 2> /dev/null | ||||||
|   | |||||||
| @@ -48,44 +48,32 @@ | |||||||
|  |  | ||||||
| 1.2.3: May 2015: changed Apple software links to Internet Archive | 1.2.3: May 2015: changed Apple software links to Internet Archive | ||||||
|  |  | ||||||
| 1.2.4: Jul 2015: offer to download A2CLOUD disk contents onto A2FILES volume | 1.2.4: Jul 2015: install option for ProTERM, Z.Link, ADTPro, Spectrum images | ||||||
|  |  | ||||||
| 1.2.4+:Oct 2015: support for using A2SERVER scripts from a location other than | 1.2.5: Nov 2015: netboot install option for GS/OS 6.0.2/3; install HFS.FST | ||||||
|                  ivanx.com/a2server for development purposes |                  during netboot install | ||||||
|                  [not released] |  | ||||||
|  |  | ||||||
| 1.2.5: Nov 2015: netboot install option for GS/OS 6.0.2/3 | 1.2.6: Nov 2015: full, ready to use install of Spectrum | ||||||
|                  netboot always downloads GS/OS disk images even if present |                  [unannounced; released briefly, then withdrawn] | ||||||
|                  provides error if a2setup doesn't have internet |  | ||||||
|                  remove persisting a2server-setup options after aborted install |  | ||||||
|                  fixed installer bug that omits first and last script elements |  | ||||||
|                  download images from Apple, with Internet Archive as a backup |  | ||||||
|                  install HFS.FST during netboot install |  | ||||||
|  |  | ||||||
| 1.2.5+:Nov 2015: Merged Ivan's 1.2.5 release, removed support for Ubuntu for | 1.5.0: Jan 2016: mixed case filenames for A2FILES; remove GSFILES if empty; | ||||||
|                  now (see RasppleII/a2server#11), patched ProDOS 8 in boot |                  install Marinetti 3.0b8 with internet access via MacIP; | ||||||
|                  files for current year table, install unar from a package if |                  fully install Spectrum, SAFE2, SAM2, SNAP, MountIt; install | ||||||
|                  it exists. |                  DOS3.3 and TEACH; remove Ubuntu support; move/media/A2SHARED/* | ||||||
|                  [not released] |                  to /srv/A2SERVER; faster install (precompiled binaries) on | ||||||
|  |                  64-bit Debian; cppo supports ShrinkIt, DOS 3.3, DSK, 2MG,mixed | ||||||
|  |                  case filenames; nulib2 handles empty forks (thanks Andy); | ||||||
|  |                  new installer options; patch P8 Thunderclock driver year table | ||||||
|  |                  for current date; install from any host URL for development; | ||||||
|  |                  source code at GitHub (thanks Joseph) | ||||||
|  |  | ||||||
| 1.2.6: Nov 2015: full, ready to use install of Spectrum; install unzip | 1.5.0r2: Jan 16: fixed GitHub URLs to prevent https errors during installation | ||||||
|                  [released briefly, then withdrawn] |                  (thanks to http://blogs.yahoo.co.jp/ushi_cow/57459736.html) | ||||||
|  |  | ||||||
| 1.2.6+:Nov 2015: merged Ivan's 1.2.6 | Big thanks to: Anthony Martino, Henry Courbis, Joseph Carter, Jason King, | ||||||
|                  [not released] | Andy McFadden, Steven Hirsch, Geoff Body, Peter Wong, Tony Diaz, David Schmidt, | ||||||
|  | David Schmenk, Ewen Wannop, Andrew Roughan, Antoine Vignau, Martin Haye, | ||||||
| 1.2.7: Dec 2015: codebase unified; preliminary Jessie support; case insensitive | Ken Gagne, Peter Neubauer, James Littlejohn, Ninjaforce; the creators of | ||||||
|                  file system for A2FILES; removes GSFILES if empty; DOS3.3.FST | Netatalk, The Unarchiver, ciopfs, macipgw; and the entire Apple II community. | ||||||
|                  and TEACH are installed with netboot installation; minor bug | Redistribution of Spectrum, SAFE2, SAM2, SNAP by permission of Ewen Wannop. | ||||||
|                  fixes and tweaks | Thanks for using A2SERVER! | ||||||
|                  [not released] |  | ||||||
|  |  | ||||||
| 1.2.8: Dec 2015: moved /media/A2SHARED to /srv/A2SERVER |  | ||||||
|                  macipgw installed |  | ||||||
|                  files subdirectory reorganized |  | ||||||
|                  64-bit Debian binaries |  | ||||||
|                  A2SERVER_SCRIPT_URL now works everywhere |  | ||||||
|                  A2SERVER_BINARY_URL can now be specified |  | ||||||
|                  self-hosted binaries fallback, or preferred with A2SERVER_NO_EXTERNAL |  | ||||||
|                  better information at start and end of install |  | ||||||
|                  [not released] |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user