#!/bin/bash

# The 3G card might be:
#  Not roaming and we know it (this is the only condition that will result in a 3G connection)
#  Roaming and we know it
#  Don't know if we are roaming or not
#  Some error occurred

# Roaming condition is indicated by metrics files as follows:
# root@ML-997-Router:/# tail -1 /tmp/verizonmetrics | grep ^0 1>/dev/null 2>/dev/null && echo NOT ROAMING || echo ROAMING
# NOT ROAMING
# root@ML-997-Router:/# tail -1 /tmp/attmetrics | grep ^0 1>/dev/null 2>/dev/null && echo NOT ROAMING || echo ROAMING    
# NOT ROAMING

# Verizon roaming modes:
#  -1 unknown
#   0 not roaming
#   1 roaming with guaranteed SIDs
#   2 roaming without guaranteed SIDs
#   >2 roaming

/usr/bin/isverizon && {
 if [ -f /tmp/verizonmetrics ] ; then {
   tail -1 /tmp/verizonmetrics | grep ^1 1>/dev/null 2>/dev/null && {
	logger -t chat "ROAMING WITH SIDS - NO VERIZON 3G CONNECTION"
	logger -t chat "TRYING TO ACTIVATE VERIZON MODEM - /usr/bin/verizonactivate.py"
	/usr/bin/verizonactivate.py
	sleep 45
	exec /bin/false
   	}
   tail -1 /tmp/verizonmetrics | grep ^0 1>/dev/null 2>/dev/null || logger -t chat "ROAMING - NO VERIZON 3G CONNECTION"
   tail -1 /tmp/verizonmetrics | grep ^0 1>/dev/null 2>/dev/null && exec /usr/sbin/chat.real $@ || /bin/false
 }
 else
    logger -t chat "UNKNOWN VERIZON ROAMING - NO 3G CONNECTION"
    exec /bin/false
#   exec /usr/sbin/chat.real $@
 fi
}

/usr/bin/attroaming.py
/usr/bin/isverizon || {
 if [ -f /tmp/attmetrics ] ; then {
   tail -1 /tmp/attmetrics | grep ^0 1>/dev/null 2>/dev/null || logger -t chat "ROAMING - NO ATT 3G CONNECTION"
   tail -1 /tmp/attmetrics | grep ^0 1>/dev/null 2>/dev/null && exec /usr/sbin/chat.real $@ || /bin/false
 }
 else
    logger -t chat "UNKNOWN ATT ROAMING - NO 3G CONNECTION"
    exec /bin/false
#   exec /usr/sbin/chat.real $@
 fi
}

# WTF how did we get here. Catch-all condition in case something went wrong.
#exec /usr/sbin/chat.real $@

logger -t chat "UNKNOWN ROAMING STATUS - NO 3G CONNECTION"
exec /bin/false
