aoeII 发表于 2019-5-31 11:14

【2019-5-31】AC9改好GPIO增加User_Scripts基于华硕3.0.0.4.382.51610源码16M固件

本帖最后由 aoeII 于 2019-5-31 16:43 编辑

采用ASUS官方源码修改编译而来。


源码下载地址:https://dlcdnets.asus.com/pub/ASUS/wireless/RT-AC1200G+/GPL_RT-AC1200GPlus_300438251610.zip?_ga=2.53265576.1240088749.1559268863-196246637.1546938074

固件说明:

1、修改init.c,适配GPIO(包含在了增加用户脚本User_Scripts源码修改文件里)

2、增加用户脚本User_Scripts功能,源码修改文件见帖子附件

3、用梅林源码里的wget 1.20替换官方源码里的1.16,以适应某些网站对tls 1.2的要求
   wget 1.20 源码下载地址:https://github.com/RMerl/asuswrt-merlin.ng/tree/master/release/src/router/wget

4、修改Makefile,把源码中编译出来的curl 7.21.7安装到/usr/sbin下面(官方源码只编译不安装curl,除非选用speedtest组件)
   修改方法:找到判断speedtest是否安装的语句注释或删除
curl-7.21.7-install: curl-7.21.7
      @$(SEP)
      install -D curl-7.21.7/lib/.libs/libcurl.so.4.2.0 $(INSTALLDIR)/curl-7.21.7/usr/lib/libcurl.so.4.2.0
      $(STRIP) $(INSTALLDIR)/curl-7.21.7/usr/lib/libcurl.so.4.2.0
      cd $(INSTALLDIR)/curl-7.21.7/usr/lib && ln -sf libcurl.so.4.2.0 libcurl.so && ln -sf libcurl.so.4.2.0 libcurl.so.4
# ifeq ($(RTCONFIG_SPEEDTEST),y)
      # for speedtest
      install -D curl-7.21.7/src/.libs/curl $(INSTALLDIR)/curl-7.21.7/usr/sbin/curl
      $(STRIP) $(INSTALLDIR)/curl-7.21.7/usr/sbin/curl
# endif

用户脚本使用方法:
1、在系统设置里打开SSH,为安全起见,仅内网Lan可登录



2、用putty等终端软件登陆路由器SHELL环境,执行以下命令,并等待路由器重启nvram set jffs2_on=1
nvram set jffs2_enable=1
nvram set jffs2_format=1
nvram set jffs2_scripts=1
nvram commit
reboot

3、用Winscp登录路由器,可以看到/jffs下已自动建立configs和scripts两个子目录,可以写入自定义配置文件和脚本了。

附上一个我自己用的脚本/jffs/scripts/init-start,实现自定义hosts文件
#!/bin/sh
i=0
while [ $i -le 20 ]; do
      success_start_service=`nvram get success_start_service`
      if [ "$success_start_service" == "1" ]; then
            break
      fi
      i=$(($i+1))
      echo "autorun APP: wait $i seconds...";
      sleep 1
done
#从下方开始你的脚本
rm -f /etc/hosts
cp -rf /jffs/configs/hosts /etc/hosts
sleep 30
killall -SIGHUP dnsmasq

dnspod动态域名更新脚本/jffs/scripts/wan-start(没有修改出custom_ddns,需要改动的地方比较多,先用这个凑合一下)#!/bin/sh
#################################################
# AnripDdns v5.08
# 基于DNSPod用户API实现的动态域名客户端
# 作者: 若海
# 介绍: http://www.anrip.com/ddnspod
# 时间: 2016-02-24 16:25:00
# Mod: 荒野无灯 http://ihacklog.com2016-03-16
# Mod: aoeii https://aoeii.com2019-05-30
#################################################
# 等待获得外网IP (wan0=第1wanwan1=第2wan)
i=0
while [ $i -le 30 ]; do
          wan_ip_last3digits=`nvram get wan0_ipaddr | awk -F "." '{print $4}'`
          if [ "$wan_ip_last3digits" != "255" ]; then
            break
      fi
      i=$(($i+1))
      echo "autorun APP: wait $i seconds...";
      sleep 1
done
#延迟两分钟,等待ntp服务同步路由器时间
sleep 120
# 获得本地外网IP (wan0=第1wanwan1=第2wan)
arIpAdress() {
    local inter=`nvram get wan0_ipaddr`
    echo $inter
}
# 查询域名地址
# 参数: 待查询域名
arNslookup() {
    local inter="http://ip.taobao.com/service/getIpInfo2.php?ip=myip"
    local ipstr=`wget --quiet --output-document=- $inter$1`
    if [ $? != 0 ]; then
      local ipstr=`curl -s$inter$1`
    fi   
    echo $ipstr$1 | awk -F"ip" '{print $2}' | awk -F'"' '{print $3}'
}
# 读取接口数据
# 参数: 接口类型 待提交数据
arApiPost() {
    local agent="AnripDdns/5.07(mail@anrip.com)"
    local inter="https://dnsapi.cn/${1:?'Info.Version'}"
      if [ "x${arToken}" = "x" ]; then # undefine token
      local param="login_email=${arMail}&login_password=${arPass}&format=json&${2}"
      else
            local param="login_token=${arToken}&format=json&${2}"
      fi
      wget --quiet --no-check-certificate --output-document=- --user-agent=$agent --post-data $param $inter
    if [ $? != 0 ]; then
            curl --silent -X POST -H 'charset=UTF-8;' --user-agent "$agent" --data "$param" $inter
    fi
}
# 更新记录信息
# 参数: 主域名 子域名
arDdnsUpdate() {
    local domainID recordID recordRS recordCD
    # 获得域名ID
    domainID=$(arApiPost "Domain.Info" "domain=${1}")
    domainID=$(echo $domainID | sed 's/.\+{"id":"\(\+\)".\+/\1/')
    # 获得记录ID
    recordID=$(arApiPost "Record.List" "domain_id=${domainID}&sub_domain=${2}")
      recordID=$(echo $recordID | sed 's/.\+\[{"id":"\(\+\)".\+/\1/')
      # 更新记录IP
      recordRS=$(arApiPost "Record.Ddns" "domain_id=${domainID}&record_id=${recordID}&sub_domain=${2}&record_line=默认&value=$hostIP")
      recordCD=$(echo $recordRS | sed 's/.\+{"code":"\(\+\)".\+/\1/')
      # 输出记录IP
      if [ "$recordCD" == "1" ]; then
            echo $recordRS | sed 's/.\+,"value":"\(\+\)".\+/\1/'
            return 1
      fi
      # 输出错误信息
      echo $recordRS | sed 's/.\+,"message":"\([^"]\+\)".\+/\1/'
}
# 动态检查更新
# 参数: 主域名 子域名
arDdnsCheck() {
    local postRS
    local hostIP=$(arIpAdress)
      local lastIP=$(arNslookup)
    echo "hostIP: ${hostIP}"
      echo "lastIP: ${lastIP}"
    if [ "$lastIP" != "$hostIP" ]; then
      postRS=$(arDdnsUpdate $1 $2)
            echo "postRS: ${postRS}"
      if [ $? -ne 1 ]; then
            return 1
      fi
    fi
    return 0
}
###################################################
# 使用Token认证(免登陆,安全性更高,推荐使用) 请去 https://www.dnspod.cn/console/user/security 获取
arToken="12345,123456789abcdefghijklmnopq"
# 使用邮箱和密码认证(不启用Token用这个)
arMail=""
arPass=""
###################################################
# 检查更新域名
arDdnsCheck "aaa.com" "www"
arDdnsCheck "bbb.com" ""
arDdnsCheck "ccc.com" "pic"
if [ $? -ne 0 ]; then
      echo -n '##'"$(date "+%Y-%m-%d %H:%M:%S")"'## ''更新DDNS成功' >> /jffs/ddns.log
else
    echo -n '##'"$(date "+%Y-%m-%d %H:%M:%S")"'## ''IP未改变或更新失败' >> /jffs/ddns.log
fi

别忘了给脚本加上执行权限:

chmod +x /jffs/scripts/*.*固件及修改文件下载地址:

固件:
https://aoeii.com/router/image-1 ... et1.20-curl7.21.zip

Makefile:
https://aoeii.com/router/Makefile.zip

wget 1.20:
https://aoeii.com/router/wget_1.20.zip


启用user_scripts功能的源码修改






CCIE_ZZ 发表于 2019-5-31 11:21

6666666666666666666

samyi 发表于 2019-5-31 11:23

终于有AC9的固件更新了

doutoudou 发表于 2019-5-31 11:33

楼主辛苦,顶

king8 发表于 2019-5-31 11:55


终于有AC9的固件更新了,
楼主辛苦,顶!

nexus.one 发表于 2019-5-31 12:08

看看哈哈哈

猜破天机 发表于 2019-5-31 12:58

没硬改的就看看,精简的用起来还不错

tjs920 发表于 2019-5-31 13:30

楼主牛逼~~~~~~~~~~~~~~~~~~

togod513 发表于 2019-5-31 13:47

楼主666666666666666666666666

williamszhao 发表于 2019-5-31 17:00

马上测试一下

crazyboyshun 发表于 2019-5-31 18:22

终于有人更新了!!!!:lol

ymez 发表于 2019-5-31 18:27

感谢分享!!辛苦了~~~

drlifeng 发表于 2019-5-31 18:38

感谢分享!!辛苦了~~~

懒懒猪 发表于 2019-5-31 20:27

卧槽,强大!!!大神入住AC9呐可喜可贺

mjl371 发表于 2019-5-31 20:48

感谢分享····
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 【2019-5-31】AC9改好GPIO增加User_Scripts基于华硕3.0.0.4.382.51610源码16M固件