mirror of https://github.com/hak5/openwrt.git
parent
2af4d04336
commit
d495281b6e
|
@ -17,6 +17,10 @@ PKG_MD5SUM:=db2452680c3d953631299e331daf49ef
|
||||||
|
|
||||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME).$(PKG_VERSION)
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME).$(PKG_VERSION)
|
||||||
|
|
||||||
|
PKG_CONFIG_DEPENDS:=CONFIG_USE_NETIFD
|
||||||
|
COMGT_VARIANT:=$(if $(CONFIG_USE_NETIFD),netifd,old)
|
||||||
|
FILES_DIR:=./files-$(COMGT_VARIANT)
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
define Package/comgt
|
define Package/comgt
|
||||||
|
@ -41,28 +45,37 @@ define Build/Compile
|
||||||
comgt
|
comgt
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
define Package/comgt/install/netifd
|
||||||
|
$(INSTALL_DIR) $(1)/lib/netifd/proto
|
||||||
|
$(INSTALL_BIN) $(FILES_DIR)/3g.sh $(1)/lib/netifd/proto/3g.sh
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/comgt/install/old
|
||||||
|
$(INSTALL_DIR) $(1)/etc/ppp
|
||||||
|
$(INSTALL_BIN) $(FILES_DIR)/3g.connect $(1)/etc/ppp/3g.connect
|
||||||
|
$(INSTALL_DIR) $(1)/lib/network
|
||||||
|
$(INSTALL_BIN) $(FILES_DIR)/3g.sh $(1)/lib/network/3g.sh
|
||||||
|
$(INSTALL_DIR) $(1)/etc/hotplug.d/button
|
||||||
|
$(INSTALL_DATA) $(FILES_DIR)/3g.button $(1)/etc/hotplug.d/button/05-3g
|
||||||
|
$(INSTALL_DIR) $(1)/etc/hotplug.d/iface
|
||||||
|
$(INSTALL_DATA) $(FILES_DIR)/3g.iface $(1)/etc/hotplug.d/iface/05-3g
|
||||||
|
endef
|
||||||
|
|
||||||
define Package/comgt/install
|
define Package/comgt/install
|
||||||
$(INSTALL_DIR) $(1)/usr/bin
|
$(INSTALL_DIR) $(1)/usr/bin
|
||||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/comgt $(1)/usr/bin/
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/comgt $(1)/usr/bin/
|
||||||
ln -s comgt $(1)/usr/bin/gcom
|
ln -s comgt $(1)/usr/bin/gcom
|
||||||
$(INSTALL_DIR) $(1)/etc/ppp
|
|
||||||
$(INSTALL_BIN) ./files/3g.connect $(1)/etc/ppp/3g.connect
|
|
||||||
$(INSTALL_DIR) $(1)/etc/chatscripts
|
$(INSTALL_DIR) $(1)/etc/chatscripts
|
||||||
$(INSTALL_DATA) ./files/3g.chat $(1)/etc/chatscripts/3g.chat
|
$(INSTALL_DATA) ./files/3g.chat $(1)/etc/chatscripts/3g.chat
|
||||||
$(INSTALL_DATA) ./files/evdo.chat $(1)/etc/chatscripts/evdo.chat
|
$(INSTALL_DATA) ./files/evdo.chat $(1)/etc/chatscripts/evdo.chat
|
||||||
$(INSTALL_DIR) $(1)/lib/network
|
|
||||||
$(INSTALL_BIN) ./files/3g.sh $(1)/lib/network/3g.sh
|
|
||||||
$(INSTALL_DIR) $(1)/etc/hotplug.d/button
|
|
||||||
$(INSTALL_DATA) ./files/3g.button $(1)/etc/hotplug.d/button/05-3g
|
|
||||||
$(INSTALL_DIR) $(1)/etc/hotplug.d/iface
|
|
||||||
$(INSTALL_DATA) ./files/3g.iface $(1)/etc/hotplug.d/iface/05-3g
|
|
||||||
$(INSTALL_DIR) $(1)/etc/hotplug.d/tty
|
|
||||||
$(INSTALL_DATA) ./files/3g.usb $(1)/etc/hotplug.d/tty/30-3g
|
|
||||||
$(INSTALL_DIR) $(1)/etc/gcom
|
$(INSTALL_DIR) $(1)/etc/gcom
|
||||||
$(INSTALL_DATA) ./files/setpin.gcom $(1)/etc/gcom/setpin.gcom
|
$(INSTALL_DATA) ./files/setpin.gcom $(1)/etc/gcom/setpin.gcom
|
||||||
$(INSTALL_DATA) ./files/setmode.gcom $(1)/etc/gcom/setmode.gcom
|
$(INSTALL_DATA) ./files/setmode.gcom $(1)/etc/gcom/setmode.gcom
|
||||||
$(INSTALL_DATA) ./files/getcardinfo.gcom $(1)/etc/gcom/getcardinfo.gcom
|
$(INSTALL_DATA) ./files/getcardinfo.gcom $(1)/etc/gcom/getcardinfo.gcom
|
||||||
$(INSTALL_DATA) ./files/getstrength.gcom $(1)/etc/gcom/getstrength.gcom
|
$(INSTALL_DATA) ./files/getstrength.gcom $(1)/etc/gcom/getstrength.gcom
|
||||||
|
$(INSTALL_DIR) $(1)/etc/hotplug.d/tty
|
||||||
|
$(INSTALL_DATA) $(FILES_DIR)/3g.usb $(1)/etc/hotplug.d/tty/30-3g
|
||||||
|
$(Package/comgt/install/$(COMGT_VARIANT))
|
||||||
endef
|
endef
|
||||||
|
|
||||||
$(eval $(call BuildPackage,comgt))
|
$(eval $(call BuildPackage,comgt))
|
||||||
|
|
|
@ -0,0 +1,83 @@
|
||||||
|
#!/bin/sh
|
||||||
|
INCLUDE_ONLY=1
|
||||||
|
|
||||||
|
. ../netifd-proto.sh
|
||||||
|
. ./ppp.sh
|
||||||
|
init_proto "$@"
|
||||||
|
|
||||||
|
proto_3g_init_config() {
|
||||||
|
no_device=1
|
||||||
|
available=1
|
||||||
|
ppp_generic_init_config
|
||||||
|
proto_config_add_string "device"
|
||||||
|
proto_config_add_string "apn"
|
||||||
|
proto_config_add_string "service"
|
||||||
|
proto_config_add_int "pincode"
|
||||||
|
}
|
||||||
|
|
||||||
|
proto_3g_setup() {
|
||||||
|
local interface="$1"
|
||||||
|
local chat
|
||||||
|
|
||||||
|
json_get_var device device
|
||||||
|
json_get_var apn apn
|
||||||
|
json_get_var service service
|
||||||
|
json_get_var pincode pincode
|
||||||
|
|
||||||
|
[ -e "$device" ] || {
|
||||||
|
proto_set_available "$interface" 0
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$service" in
|
||||||
|
cdma|evdo)
|
||||||
|
chat="/etc/chatscripts/evdo.chat"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
chat="/etc/chatscripts/3g.chat"
|
||||||
|
cardinfo=$(gcom -d "$device" -s /etc/gcom/getcardinfo.gcom)
|
||||||
|
if echo "$cardinfo" | grep -q Novatel; then
|
||||||
|
case "$service" in
|
||||||
|
umts_only) CODE=2;;
|
||||||
|
gprs_only) CODE=1;;
|
||||||
|
*) CODE=0;;
|
||||||
|
esac
|
||||||
|
export MODE="AT\$NWRAT=${CODE},2"
|
||||||
|
elif echo "$cardinfo" | grep -q Option; then
|
||||||
|
case "$service" in
|
||||||
|
umts_only) CODE=1;;
|
||||||
|
gprs_only) CODE=0;;
|
||||||
|
*) CODE=3;;
|
||||||
|
esac
|
||||||
|
export MODE="AT_OPSYS=${CODE}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$pincode" ]; then
|
||||||
|
PINCODE="$pincode" gcom -d "$device" -s /etc/gcom/setpin.gcom || {
|
||||||
|
proto_notify_error "$interface" PIN_FAILED
|
||||||
|
proto_block_restart "$interface"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
[ -n "$MODE" ] && gcom -d "$device" -s /etc/gcom/setmode.gcom
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
connect="${apn:+USE_APN=$apn }/usr/sbin/chat -t5 -v -E -f $chat"
|
||||||
|
ppp_generic_setup "$interface" \
|
||||||
|
noaccomp \
|
||||||
|
nopcomp \
|
||||||
|
novj \
|
||||||
|
nobsdcomp \
|
||||||
|
noauth \
|
||||||
|
lock \
|
||||||
|
crtscts \
|
||||||
|
115200 "$device"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
proto_3g_teardown() {
|
||||||
|
proto_kill_command "$interface"
|
||||||
|
}
|
||||||
|
|
||||||
|
add_protocol 3g
|
|
@ -0,0 +1,33 @@
|
||||||
|
#!/bin/sh
|
||||||
|
. /etc/functions.sh
|
||||||
|
. /lib/netifd/netifd-proto.sh
|
||||||
|
|
||||||
|
find_3g_iface() {
|
||||||
|
local cfg="$1"
|
||||||
|
local tty="$2"
|
||||||
|
|
||||||
|
local proto
|
||||||
|
config_get proto "$cfg" proto
|
||||||
|
[ "$proto" = 3g ] || return 0
|
||||||
|
|
||||||
|
local dev
|
||||||
|
config_get dev "$cfg" device
|
||||||
|
|
||||||
|
if [ "${dev##*/}" = "${tty##*/}" ]; then
|
||||||
|
if [ "$ACTION" = add ]; then
|
||||||
|
available=1
|
||||||
|
else
|
||||||
|
available=0
|
||||||
|
fi
|
||||||
|
proto_set_available "$cfg" $available
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$DEVICENAME" in
|
||||||
|
tty*)
|
||||||
|
[ -e "/dev/$DEVICENAME" ] || [ "$ACTION" = remove ] || exit 0
|
||||||
|
config_load network
|
||||||
|
config_foreach find_3g_iface interface "/dev/$DEVICENAME"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
Loading…
Reference in New Issue