steptail.com

Does expecting the unexpected make the unexpected the expected?

User Tools

Site Tools


guides:virtual_modem:script

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
guides:virtual_modem:script [2022-12-20 06:08]
omolini
guides:virtual_modem:script [2022-12-28 03:32]
omolini
Line 34: Line 34:
 # o PuTTY # o PuTTY
 # #
-# PPP connectivity ​will initialize ​correctly ​under the following configurations:​+# PPP dial-up ​connectivity ​tested to initialize under the following configurations:​
 # #
-# o Microsoft ​Windows 3.1 +# o Windows 3.1 
-#   - Trumpet Winsock+#   - Trumpet Winsock ​3.0 revision D
 # #
-# o Microsoft ​Windows 95 OSR 2.5 + DUN 1.4 +# o Windows 95 OSR 2.5 + DUN 1.4 
-#   - Generic+#   - Generic ​Modem
 #     - Standard 28800 bps Modem #     - Standard 28800 bps Modem
 # #
-# o Microsoft ​Windows 98 +# o Windows 98 
-#   - Generic+#   - Generic ​Modem
 #     - Standard 9 600 bps modem #     - Standard 9 600 bps modem
 #     - Standard 33 600 bps modem #     - Standard 33 600 bps modem
Line 50: Line 50:
 #     - Standard 56 000 bps X2 modem #     - Standard 56 000 bps X2 modem
 #     - Standard 56 000 bps K56Flex modem #     - Standard 56 000 bps K56Flex modem
 +#
 +# o Windows 2000
 +#   - Generic Modem
 +#     - Standard 19200 bps Modem
 +#
 +# Help us test and add more supported systems! ​
 +# Contact us on Discord, links at the bottom of the Virtual Modem page.
 # #
  
Line 130: Line 137:
 # SEND MESSAGE ON SCREEN AND OVER SERIAL # SEND MESSAGE ON SCREEN AND OVER SERIAL
 sendtty () { sendtty () {
 +  # Prints message in console and over serial. Message is given as first parameter.
   message="​$1"​   message="​$1"​
   echo -en "​$message"​ | tee /​dev/​$serport   echo -en "​$message"​ | tee /​dev/​$serport
 +}
 +
 +readtty () {
 +  # Reads input from TTY and stores it in variable given as first parameter
 +  line=
 +  while [[ -z "​$line"​ ]]; do
 +    charhex=`head -c 1 /​dev/​$serport | xxd -p -`
 +    char="​`echo -e "​\x$charhex"​`"​
 +    echo -n "​$char"​
 +    echo -n "​$char"​ > /​dev/​$serport
 +    # Newline received
 +    if [ "​$charhex"​ = "​0d"​ -o "​$charhex"​ = "​0a"​ ]; then
 +      line=$buffer
 +      buffer=
 +      char=
 +      sendtty "​\n"​
 +    fi
 +    buffer=$buffer$char
 +  done
 +  local __resultvar=$1
 +  local result="​$line"​
 +  eval $__resultvar="'​$result'"​
 } }
  
 export -f sendtty export -f sendtty
 +export -f readtty
 export -f ttyinit export -f ttyinit
  
Line 143: Line 174:
  
 sendtty "​\n"​ sendtty "​\n"​
-sendtty "VMODEM - Virtual Modem bootstrap for PPP link v$vmodver\n"​ +sendtty "​Virtual Modem bootstrap for PPP link v$vmodver\n"​ 
-sendtty "​Connection speed set to $baud baud\n"​+sendtty "​Connection speed set to $baud baud.\n" 
 +sendtty "My current IP address is $(hostname -I).\n"
 sendtty "​\n"​ sendtty "​\n"​
-sendtty "TYPE HELP FOR COMMANDS\n"+sendtty "​TYPE ​\"HELP\" ​FOR COMMAND REFERENCE.\n"
 sendtty "​READY.\n"​ sendtty "​READY.\n"​
  
Line 433: Line 465:
       sendtty "​General commands:​\n"​       sendtty "​General commands:​\n"​
       sendtty "​HELP.......Display this help\n"​       sendtty "​HELP.......Display this help\n"​
-      sendtty "​LOGIN......Fork a new linux login on serial\n"+      sendtty "​LOGIN......Drop to shell\n"​ 
 +      sendtty "​SETUP......Change settings\n"
       sendtty "​EXIT.......End this script\n"​       sendtty "​EXIT.......End this script\n"​
       sendtty "​\n"​       sendtty "​\n"​
Line 447: Line 480:
       sendtty "​READY.\n"​       sendtty "​READY.\n"​
     fi     fi
 +
 +    if [[ $cmd = "​SETUP"​ ]]; then
 +      while true; do
 +        # Display menu
 +        sendtty "​\n"​
 +        sendtty "​System Setup\n"​
 +        sendtty "​============\n"​
 +        sendtty "1. Change Wireless Network settings\n"​
 +        sendtty "2. Exit\n"​
 +        sendtty "Enter your selection: "
 +        # Read user input
 +        readtty selection
 +
 +        # Wireless network settings
 +        if [[ "​$selection"​ == "​1"​ ]]; then
 +          while true; do
 +            sendtty "​\n"​
 +            sendtty "Wi-Fi Settings\n"​
 +            sendtty "​==============\n"​
 +            sendtty "1. Connect to new Wi-Fi network\n"​
 +            sendtty "2. Modify password for current Wi-Fi network\n"​
 +            sendtty "3. Disconnect from current Wi-Fi network\n"​
 +            sendtty "4. Display current Wi-Fi connection status\n"​
 +            sendtty "5. Exit\n"​
 +            sendtty "Enter your selection: "
 +            # Read user input
 +            readtty selection
 +            # Connect to new Wi-Fi network
 +            if [[ "​$selection"​ == "​1"​ ]]; then
 +              sendtty "Enter SSID: "
 +              readtty ssid
 +              sendtty "Enter password: "
 +              readtty password
 +              sudo wpa_cli -i wlan0 remove_network 0
 +              sudo wpa_cli -i wlan0 add_network
 +              sudo wpa_cli -i wlan0 set_network 0 ssid "​\"​$ssid\""​
 +              sudo wpa_cli -i wlan0 set_network 0 psk "​\"​$password\""​
 +              sudo wpa_cli -i wlan0 select_network 0
 +              sudo wpa_cli -i wlan0 enable_network 0
 +            # Modify password for current Wi-Fi network
 +            elif [[ "​$selection"​ == "​2"​ ]]; then
 +              sendtty "Enter new password: "
 +              readtty password
 +              sudo wpa_cli -i wlan0 set_network 0 psk "​\"​$password\""​
 +            # Disconnect from current Wi-Fi network
 +            elif [[ "​$selection"​ == "​3"​ ]]; then
 +              sendtty "​Disconnecting from current Wi-Fi network\n"​
 +              sudo wpa_cli -i wlan0 disable_network 0
 +            # Display current Wi-Fi connection status
 +            elif [[ "​$selection"​ == "​4"​ ]]; then
 +              status=$(sudo wpa_cli -i wlan0 status)
 +              sendtty "​\n"​
 +              sendtty "Wi-fi connection status\n"​
 +              sendtty "​=======================\n"​
 +              sendtty "​$status"​
 +              sendtty "​\n"​
 +            # Exit
 +            elif [[ "​$selection"​ == "​5"​ ]]; then
 +              break
 +            # Invalid selection
 +            else
 +              sendtty "​Invalid selection. Please try again.\n"​
 +            fi
 +          done
 +        # Exit
 +        elif [[ "​$selection"​ == "​2"​ ]]; then
 +          sendtty "​Exited setup\n"​
 +          sendtty "​READY.\n"​
 +          break
 +        # Invalid selection
 +        else
 +          sendtty "​Invalid selection. Please try again.\n"​
 +        fi
 +      done
 +    fi
 +
  
     # LOGIN  -  FORK LOGIN SESSION     # LOGIN  -  FORK LOGIN SESSION
Line 566: Line 675:
 sendtty "​\n"​ sendtty "​\n"​
 sendtty "​Please enter your name: \n" sendtty "​Please enter your name: \n"
-read -e -p "User? " ​username+readtty ​username
 sendtty "​\n"​ sendtty "​\n"​
 sendtty "​Hello,​ $username!\n"​ sendtty "​Hello,​ $username!\n"​
guides/virtual_modem/script.txt · Last modified: 2022-12-28 03:32 by omolini