├── .github └── workflows │ ├── friendlywrt.yml │ ├── friendlywrt_with_features.yml │ ├── friendlywrt_with_flowoffload.yml │ ├── lean.yml_ │ └── lienol_on_lean.yml_ ├── FriendlyWRT ├── CHANGELOG.md ├── README.md ├── repo_used_path.env └── status.env ├── FriendlyWRTwPatches ├── CHANGELOG.md └── status.env ├── FriendlyWRTwithFlowOffload ├── CHANGELOG.md ├── minimal_offload.seed ├── repo_used_path.env └── status.env ├── FwF ├── CHANGELOG.md ├── README.md ├── repo_used_path.env └── status.env ├── LOL ├── CHANGELOG.md ├── README.md ├── rebase_on_lienol.sh ├── repo_used_path.env └── status.env ├── Lean ├── .config.override ├── CHANGELOG.md ├── README.md ├── enable_autocore.diff ├── lean_patches.sh ├── patch_kernel_5.4.sh ├── rebase_on_lean.sh ├── repo_used_path.env └── status.env ├── README.md ├── add_fullconenat.diff ├── add_packages_to_lean.sh ├── changelog.sh ├── features.seed ├── friendlywrt_source.sh ├── images ├── r2s_dhcp_nat.png ├── r2s_fastcom.png ├── r2s_fastcom_nat.png └── r2s_pppoe_nat.png ├── init_env.sh ├── luci-app-r2sflasher ├── Makefile ├── README.md ├── images │ └── luci-app-r2sflasher.png ├── luasrc │ ├── controller │ │ └── r2sflasher.lua │ ├── model │ │ └── cbi │ │ │ └── r2sflasher │ │ │ ├── flash.lua │ │ │ └── log.lua │ └── view │ │ └── r2sflasher │ │ ├── log.htm │ │ └── rom.htm ├── po │ └── zh-cn │ │ └── r2sflasher.po └── root │ └── usr │ └── bin │ └── rom_flash ├── minimal_config.seed ├── name_and_urls.env ├── scripts ├── check_net.sh ├── check_wan4.sh ├── fw_update.sh ├── rom_prepare.sh └── temp.chart.sh └── set_repo_hash.sh /.github/workflows/friendlywrt.yml: -------------------------------------------------------------------------------- 1 | name: friendlywrt 2 | 3 | 4 | on: 5 | repository_dispatch: 6 | push: 7 | branches: 8 | - master 9 | paths: 10 | - '.github/workflows/friendlywrt.yml' 11 | - 'minimal_config.seed' 12 | - '*.sh' 13 | - 'luci-app-r2sflasher' 14 | 15 | jobs: 16 | build: 17 | runs-on: ubuntu-latest 18 | env: 19 | GITHUB_TOKEN: ${{ secrets.sec_token }} 20 | sec_token: ${{ secrets.sec_token }} 21 | 22 | steps: 23 | - name: Setup timezone 24 | uses: zcong1993/setup-timezone@master 25 | with: 26 | timezone: Asia/Shanghai 27 | 28 | - name: Checkout 29 | uses: actions/checkout@master 30 | with: 31 | ref: master 32 | fetch-depth: 0 33 | token: ${{ env.sec_token }} 34 | 35 | - name: Init Env 36 | env: 37 | DEBIAN_FRONTEND: noninteractive 38 | run: | 39 | . init_env.sh 40 | 41 | - name: Repo Hash 42 | run: | 43 | ./set_repo_hash.sh Builder 44 | 45 | - name: Friendlywrt Source 46 | run: | 47 | . friendlywrt_source.sh 48 | 49 | - name: Change Feeds to Lean 50 | run: | 51 | cd friendlywrt-rk3328 52 | git clone https://github.com/coolsnowwolf/lede 53 | cd lede 54 | ../../set_repo_hash.sh Lean 55 | cd ../friendlywrt 56 | cp -r ../lede/package/lean package/ 57 | rm -rf package/network/config/firewall 58 | cp -r ../lede/package/network/config/firewall package/network/config/ 59 | sed -i 's/^src-git luci.*/src-git luci https:\/\/github.com\/coolsnowwolf\/luci/' feeds.conf.default 60 | sed -i 's/^src-git packages.*/src-git packages https:\/\/github.com\/coolsnowwolf\/packages/' feeds.conf.default 61 | ../../set_repo_hash.sh LeanLuci https://github.com/coolsnowwolf/luci.git 62 | ../../set_repo_hash.sh LeanPackage https://github.com/coolsnowwolf/packages.git 63 | 64 | - name: Add Packages to Lean 65 | run: | 66 | . add_packages_to_lean.sh 67 | 68 | - name: Install Openwrt Libs 69 | run: | 70 | git config --global user.email "action@github.com" && git config --global user.name "GitHub Action" 71 | cd friendlywrt-rk3328 72 | git clone https://github.com/openwrt/openwrt 73 | rm -rf friendlywrt/package/libs 74 | cp -r openwrt/package/libs friendlywrt/package/ 75 | 76 | - name: Use Chuck's Kernel 77 | run: | 78 | cd friendlywrt-rk3328 79 | rm -rf kernel 80 | git clone --depth=1 https://github.com/fanck0605/friendlywrt-kernel.git kernel 81 | cd kernel 82 | ../../set_repo_hash.sh Kernel 83 | cd ../openwrt 84 | ../../set_repo_hash.sh OpenWrt 85 | rm -f target/linux/generic/pending-5.4/834-ledtrig-libata.patch 86 | ./scripts/patch-kernel.sh ../kernel target/linux/generic/backport-5.4 87 | ./scripts/patch-kernel.sh ../kernel target/linux/generic/pending-5.4 88 | ./scripts/patch-kernel.sh ../kernel target/linux/generic/hack-5.4 89 | ./scripts/patch-kernel.sh ../kernel target/linux/octeontx/patches-5.4 90 | cp -a ./target/linux/generic/files/* ../kernel/ 91 | cd ../kernel 92 | wget -O net/netfilter/xt_FULLCONENAT.c https://raw.githubusercontent.com/Chion82/netfilter-full-cone-nat/master/xt_FULLCONENAT.c 93 | wget -O ../fullcone_nat.patch https://github.com/fanck0605/nanopi-r2s/raw/openwrt-lienol/patches/001-kernel-add-full_cone_nat.patch 94 | git apply ../fullcone_nat.patch 95 | # cd .. 96 | # curl -s https://api.github.com/repos/fanck0605/nanopi-r2s/releases/latest | jq ".zipball_url" | cut -d '"' -f 2 | wget -O fanck.zip -qi - 97 | # kernelconfig=$(unzip -Z -1 fanck.zip | grep "nanopi-r2_linux_defconfig") 98 | # if [ "$kernelconfig" == "" ]; then 99 | # echo "kernelconfig not fount" 100 | # exit 1 101 | # fi 102 | # unzip fanck.zip $kernelconfig 103 | # mv $kernelconfig kernel/arch/arm64/configs/nanopi-r2_linux_defconfig 104 | # rm fanck.zip 105 | 106 | - name: Change Log 107 | id: changelog 108 | run: | 109 | git config --global user.email "action@github.com" && git config --global user.name "GitHub Action" 110 | ./changelog.sh FriendlyWRT 111 | 112 | - name: Update Feeds 113 | if: steps.changelog.outputs.changelog != '' 114 | run: | 115 | cd friendlywrt-rk3328/friendlywrt 116 | ./scripts/feeds update -a 117 | ./scripts/feeds install -a 118 | 119 | - name: Install Mods 120 | if: steps.changelog.outputs.changelog != '' 121 | run: | 122 | cd friendlywrt-rk3328 123 | sed -i '/Load Average/i\\t\t<%:CPU Temperature%><%=luci.sys.exec("cut -c1-2 /sys/class/thermal/thermal_zone0/temp")%> ℃' friendlywrt/feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm 124 | sed -i 's/pcdata(boardinfo.system or "?")/"ARMv8"/' friendlywrt/feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm 125 | sed -i 's/<%=luci.sys.exec("cat \/etc\/bench.log") or " "%>//' friendlywrt/feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm 126 | sed -i "/redirect_https/d" friendlywrt/package/network/services/uhttpd/files/uhttpd.config 127 | sed -i '/luciversion/a \/ ${{ steps.changelog.outputs.buildtag }} by scw' friendlywrt/feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm 128 | sed -i '/firewall\.user/d' friendlywrt/package/lean/default-settings/files/zzz-default-settings 129 | cp ../scripts/fw_update.sh friendlywrt/package/base-files/files/usr/bin/fw_update 130 | cp ../scripts/rom_prepare.sh friendlywrt/package/base-files/files/usr/bin/rom_prepare 131 | cp ../scripts/check_net.sh friendlywrt/package/base-files/files/usr/bin/check_net 132 | echo "/usr/bin/check_net" >> friendlywrt/package/base-files/files/root/setup.sh 133 | 134 | - name: Add Temperature to Netdata 135 | if: steps.changelog.outputs.changelog != '' 136 | run: | 137 | cd friendlywrt-rk3328 138 | mkdir -p friendlywrt/package/base-files/files/usr/lib/netdata/charts.d 139 | cp ../scripts/temp.chart.sh friendlywrt/package/base-files/files/usr/lib/netdata/charts.d/ 140 | echo "sed -i 's/charts.d = no/charts.d = yes/' /etc/netdata/netdata.conf" >> friendlywrt/package/base-files/files/root/setup.sh 141 | echo "cp /usr/lib/netdata/conf.d/charts.d.conf /etc/netdata/" >> friendlywrt/package/base-files/files/root/setup.sh 142 | echo "echo 'temp=yes' >> /etc/netdata/charts.d.conf" >> friendlywrt/package/base-files/files/root/setup.sh 143 | echo "/etc/init.d/netdata restart" >> friendlywrt/package/base-files/files/root/setup.sh 144 | 145 | - name: Add OPKG Feeds 146 | if: steps.changelog.outputs.changelog != '' 147 | run: | 148 | cd friendlywrt-rk3328 149 | git clone -b src --depth 1 https://github.com/songchenwen/nanopi-r2s-opkg-feeds.git 150 | mkdir -p friendlywrt/package/base-files/files/etc/opkg/keys/ 151 | cp nanopi-r2s-opkg-feeds/keys/* friendlywrt/package/base-files/files/etc/opkg/keys/ 152 | rm -rf nanopi-r2s-opkg-feeds 153 | echo "grep -qF 'songchenwen.com' /etc/opkg/customfeeds.conf || echo 'src/gz songchenwen https://nanopi-r2s-opkg-feeds.songchenwen.com/packages' >> /etc/opkg/customfeeds.conf" >> friendlywrt/package/base-files/files/root/setup.sh 154 | 155 | - name: Download Clash Binary 156 | if: steps.changelog.outputs.changelog != '' 157 | run: | 158 | CLASH_VERSION=v1.0.0 159 | mkdir -p friendlywrt-rk3328/friendlywrt/package/base-files/files/usr/bin 160 | cd friendlywrt-rk3328/friendlywrt/package/base-files/files/usr/bin 161 | wget -O clash.gz https://github.com/Dreamacro/clash/releases/download/$CLASH_VERSION/clash-linux-armv8-$CLASH_VERSION.gz 162 | gunzip clash.gz 163 | chmod +x clash 164 | cd ../.. 165 | mkdir -p etc/clash 166 | cd etc/clash 167 | wget -O Country.mmdb https://github.com/Dreamacro/maxmind-geoip/releases/latest/download/Country.mmdb 168 | 169 | - name: Install UPX 170 | if: steps.changelog.outputs.changelog != '' 171 | run: | 172 | mkdir -p friendlywrt-rk3328/friendlywrt/staging_dir/host/bin/ 173 | ln -s /usr/bin/upx-ucl friendlywrt-rk3328/friendlywrt/staging_dir/host/bin/upx 174 | 175 | - name: Update Target.mk 176 | if: steps.changelog.outputs.changelog != '' 177 | run: | 178 | cd friendlywrt-rk3328/friendlywrt/include 179 | sed -i 's/dnsmasq /dnsmasq-full default-settings luci /' target.mk 180 | 181 | - name: Build Config 182 | if: steps.changelog.outputs.changelog != '' 183 | run: | 184 | cd friendlywrt-rk3328 185 | cat configs/config_rk3328 | grep "TARGET" > ../rk3328.config 186 | cat ../minimal_config.seed >> ../rk3328.config 187 | cat ../rk3328.config > configs/config_rk3328 188 | cat configs/config_rk3328 189 | 190 | - name: Clean src 191 | if: steps.changelog.outputs.changelog != '' 192 | run: | 193 | cd friendlywrt-rk3328 194 | rm -rf lede 195 | rm -rf openwrt 196 | 197 | - name: Build Friendlywrt 198 | if: steps.changelog.outputs.changelog != '' 199 | run: | 200 | cd friendlywrt-rk3328 201 | ./build.sh nanopi_r2s.mk 202 | 203 | # from https://github.com/fanck0605/nanopi_r2s/blob/lean/.github/workflows/main.yml#L87 204 | - name: Fix FriendlyWrt rootfs owner and group 205 | if: steps.changelog.outputs.changelog != '' 206 | run: | 207 | sudo df -lh 208 | lodev=$(sudo losetup -f) 209 | echo "found unused loop dev $lodev" 210 | sudo losetup -P $lodev friendlywrt-rk3328/out/*.img 211 | sudo rm -rf /mnt/friendlywrt-tmp 212 | sudo mkdir -p /mnt/friendlywrt-tmp 213 | sudo mount ${lodev}p1 /mnt/friendlywrt-tmp 214 | sudo chown -R root:root /mnt/friendlywrt-tmp 215 | sudo umount /mnt/friendlywrt-tmp 216 | sudo losetup -d $lodev 217 | 218 | - name: Zip Files 219 | if: steps.changelog.outputs.changelog != '' 220 | run: | 221 | gzip friendlywrt-rk3328/out/*.img 222 | 223 | - name: Assemble Artifact 224 | if: steps.changelog.outputs.changelog != '' 225 | id: assemble_artifact 226 | run: | 227 | rm -rf ./artifact/ 228 | mkdir -p ./artifact/ 229 | cd friendlywrt-rk3328/friendlywrt;./scripts/diffconfig.sh > ../../artifact/config.seed;cd ../../ 230 | mv friendlywrt-rk3328/out/*img* ./artifact/ 231 | cp friendlywrt-rk3328/friendlywrt/.config ./artifact/full.config 232 | cp friendlywrt-rk3328/friendlywrt/bin/packages/*/scw/luci-app-passwall*.ipk ./artifact/ 233 | cp friendlywrt-rk3328/friendlywrt/bin/packages/*/*/luci-app-r2sflasher*.ipk ./artifact/ 234 | cp friendlywrt-rk3328/friendlywrt/bin/packages/*/*/luci-app-filetransfer*.ipk ./artifact/ 235 | zip -r artifact.zip -j artifact artifact/* 236 | release_tag=${{ steps.changelog.outputs.buildtag }} 237 | echo "##[set-output name=release_tag;]$release_tag" 238 | 239 | - name: Create Release 240 | if: steps.changelog.outputs.changelog != '' 241 | id: create_release 242 | uses: actions/create-release@v1 243 | with: 244 | tag_name: ${{ steps.assemble_artifact.outputs.release_tag }} 245 | release_name: ${{ steps.assemble_artifact.outputs.release_tag }} 246 | body: ${{ steps.changelog.outputs.changelog }} 247 | draft: false 248 | prerelease: false 249 | 250 | - name: Upload Release Asset 251 | if: steps.changelog.outputs.changelog != '' 252 | id: upload-release-asset 253 | uses: actions/upload-release-asset@v1 254 | with: 255 | upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps 256 | asset_path: ./artifact.zip 257 | asset_name: ${{ steps.assemble_artifact.outputs.release_tag }}-ROM.zip 258 | asset_content_type: application/zip 259 | 260 | - name: Push Change Log 261 | if: steps.changelog.outputs.changelog != '' 262 | run: | 263 | git pull --rebase --autostash 264 | git push 265 | -------------------------------------------------------------------------------- /.github/workflows/friendlywrt_with_features.yml: -------------------------------------------------------------------------------- 1 | name: FwF 2 | 3 | 4 | on: 5 | repository_dispatch: 6 | push: 7 | branches: 8 | - master 9 | paths: 10 | - '.github/workflows/friendlywrt_with_features.yml' 11 | - 'features.seed' 12 | - '*.sh' 13 | - 'luci-app-r2sflasher' 14 | 15 | jobs: 16 | build: 17 | runs-on: ubuntu-latest 18 | env: 19 | GITHUB_TOKEN: ${{ secrets.sec_token }} 20 | sec_token: ${{ secrets.sec_token }} 21 | 22 | steps: 23 | - name: Setup timezone 24 | uses: zcong1993/setup-timezone@master 25 | with: 26 | timezone: Asia/Shanghai 27 | 28 | - name: Checkout 29 | uses: actions/checkout@master 30 | with: 31 | ref: master 32 | fetch-depth: 0 33 | token: ${{ env.sec_token }} 34 | 35 | - name: Init Env 36 | env: 37 | DEBIAN_FRONTEND: noninteractive 38 | run: | 39 | . init_env.sh 40 | 41 | - name: Repo Hash 42 | run: | 43 | ./set_repo_hash.sh Builder 44 | 45 | - name: Friendlywrt Source 46 | run: | 47 | . friendlywrt_source.sh 48 | 49 | - name: Change Feeds to Lean 50 | run: | 51 | cd friendlywrt-rk3328 52 | git clone https://github.com/coolsnowwolf/lede 53 | cd lede 54 | ../../set_repo_hash.sh Lean 55 | cd ../friendlywrt 56 | cp -r ../lede/package/lean package/ 57 | rm -rf package/network/config/firewall 58 | cp -r ../lede/package/network/config/firewall package/network/config/ 59 | sed -i 's/^src-git luci.*/src-git luci https:\/\/github.com\/coolsnowwolf\/luci/' feeds.conf.default 60 | sed -i 's/^src-git packages.*/src-git packages https:\/\/github.com\/coolsnowwolf\/packages/' feeds.conf.default 61 | ../../set_repo_hash.sh LeanLuci https://github.com/coolsnowwolf/luci.git 62 | ../../set_repo_hash.sh LeanPackage https://github.com/coolsnowwolf/packages.git 63 | 64 | - name: Add Packages to Lean 65 | run: | 66 | . add_packages_to_lean.sh 67 | 68 | - name: Add SSRP 69 | run: | 70 | cd friendlywrt-rk3328/friendlywrt/package 71 | git clone https://github.com/fw876/helloworld.git 72 | cd helloworld 73 | ../../../../set_repo_hash.sh SSRP 74 | 75 | - name: Install Openwrt Libs 76 | run: | 77 | git config --global user.email "action@github.com" && git config --global user.name "GitHub Action" 78 | cd friendlywrt-rk3328 79 | git clone https://github.com/openwrt/openwrt 80 | rm -rf friendlywrt/package/libs 81 | cp -r openwrt/package/libs friendlywrt/package/ 82 | 83 | - name: Use Chuck's Kernel 84 | run: | 85 | cd friendlywrt-rk3328 86 | rm -rf kernel 87 | git clone --depth=1 https://github.com/fanck0605/friendlywrt-kernel.git kernel 88 | cd kernel 89 | ../../set_repo_hash.sh Kernel 90 | cd ../openwrt 91 | ../../set_repo_hash.sh OpenWrt 92 | rm -f target/linux/generic/pending-5.4/834-ledtrig-libata.patch 93 | ./scripts/patch-kernel.sh ../kernel target/linux/generic/backport-5.4 94 | ./scripts/patch-kernel.sh ../kernel target/linux/generic/pending-5.4 95 | ./scripts/patch-kernel.sh ../kernel target/linux/generic/hack-5.4 96 | ./scripts/patch-kernel.sh ../kernel target/linux/octeontx/patches-5.4 97 | cp -a ./target/linux/generic/files/* ../kernel/ 98 | cd ../kernel 99 | wget -O net/netfilter/xt_FULLCONENAT.c https://raw.githubusercontent.com/Chion82/netfilter-full-cone-nat/master/xt_FULLCONENAT.c 100 | wget -O ../fullcone_nat.patch https://github.com/fanck0605/nanopi-r2s/raw/openwrt-lienol/patches/001-kernel-add-full_cone_nat.patch 101 | git apply ../fullcone_nat.patch 102 | # cd .. 103 | # curl -s https://api.github.com/repos/fanck0605/nanopi-r2s/releases/latest | jq ".zipball_url" | cut -d '"' -f 2 | wget -O fanck.zip -qi - 104 | # kernelconfig=$(unzip -Z -1 fanck.zip | grep "nanopi-r2_linux_defconfig") 105 | # if [ "$kernelconfig" == "" ]; then 106 | # echo "kernelconfig not fount" 107 | # exit 1 108 | # fi 109 | # unzip fanck.zip $kernelconfig 110 | # mv $kernelconfig kernel/arch/arm64/configs/nanopi-r2_linux_defconfig 111 | # rm fanck.zip 112 | 113 | - name: Change Log 114 | id: changelog 115 | run: | 116 | git config --global user.email "action@github.com" && git config --global user.name "GitHub Action" 117 | ./changelog.sh FwF 118 | 119 | - name: Update Feeds 120 | if: steps.changelog.outputs.changelog != '' 121 | run: | 122 | cd friendlywrt-rk3328/friendlywrt 123 | ./scripts/feeds update -a 124 | ./scripts/feeds install -a 125 | 126 | - name: Install Mods 127 | if: steps.changelog.outputs.changelog != '' 128 | run: | 129 | cd friendlywrt-rk3328 130 | sed -i '/Load Average/i\\t\t<%:CPU Temperature%><%=luci.sys.exec("cut -c1-2 /sys/class/thermal/thermal_zone0/temp")%> ℃' friendlywrt/feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm 131 | sed -i 's/pcdata(boardinfo.system or "?")/"ARMv8"/' friendlywrt/feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm 132 | sed -i 's/<%=luci.sys.exec("cat \/etc\/bench.log") or " "%>//' friendlywrt/feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm 133 | sed -i "/redirect_https/d" friendlywrt/package/network/services/uhttpd/files/uhttpd.config 134 | sed -i '/luciversion/a \/ ${{ steps.changelog.outputs.buildtag }} by scw' friendlywrt/feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm 135 | sed -i '/firewall\.user/d' friendlywrt/package/lean/default-settings/files/zzz-default-settings 136 | cp ../scripts/fw_update.sh friendlywrt/package/base-files/files/usr/bin/fw_update 137 | cp ../scripts/rom_prepare.sh friendlywrt/package/base-files/files/usr/bin/rom_prepare 138 | cp ../scripts/check_net.sh friendlywrt/package/base-files/files/usr/bin/check_net 139 | echo "/usr/bin/check_net" >> friendlywrt/package/base-files/files/root/setup.sh 140 | 141 | - name: Add Temperature to Netdata 142 | if: steps.changelog.outputs.changelog != '' 143 | run: | 144 | cd friendlywrt-rk3328 145 | mkdir -p friendlywrt/package/base-files/files/usr/lib/netdata/charts.d 146 | cp ../scripts/temp.chart.sh friendlywrt/package/base-files/files/usr/lib/netdata/charts.d/ 147 | echo "sed -i 's/charts.d = no/charts.d = yes/' /etc/netdata/netdata.conf" >> friendlywrt/package/base-files/files/root/setup.sh 148 | echo "cp /usr/lib/netdata/conf.d/charts.d.conf /etc/netdata/" >> friendlywrt/package/base-files/files/root/setup.sh 149 | echo "echo 'temp=yes' >> /etc/netdata/charts.d.conf" >> friendlywrt/package/base-files/files/root/setup.sh 150 | echo "/etc/init.d/netdata restart" >> friendlywrt/package/base-files/files/root/setup.sh 151 | 152 | - name: Add OPKG Feeds 153 | if: steps.changelog.outputs.changelog != '' 154 | run: | 155 | cd friendlywrt-rk3328 156 | git clone -b src --depth 1 https://github.com/songchenwen/nanopi-r2s-opkg-feeds.git 157 | mkdir -p friendlywrt/package/base-files/files/etc/opkg/keys/ 158 | cp nanopi-r2s-opkg-feeds/keys/* friendlywrt/package/base-files/files/etc/opkg/keys/ 159 | rm -rf nanopi-r2s-opkg-feeds 160 | echo "grep -qF 'songchenwen.com' /etc/opkg/customfeeds.conf || echo 'src/gz songchenwen https://nanopi-r2s-opkg-feeds.songchenwen.com/packages' >> /etc/opkg/customfeeds.conf" >> friendlywrt/package/base-files/files/root/setup.sh 161 | 162 | # - name: Unlock CPU 1.5Ghz 163 | # run: | 164 | # cd friendlywrt-rk3328/kernel 165 | # wget https://github.com/armbian/build/raw/master/patch/kernel/rockchip64-dev/RK3328-enable-1512mhz-opp.patch 166 | # git apply RK3328-enable-1512mhz-opp.patch 167 | 168 | - name: Download Clash Binary 169 | if: steps.changelog.outputs.changelog != '' 170 | run: | 171 | CLASH_VERSION=v1.0.0 172 | mkdir -p friendlywrt-rk3328/friendlywrt/package/base-files/files/usr/bin 173 | cd friendlywrt-rk3328/friendlywrt/package/base-files/files/usr/bin 174 | wget -O clash.gz https://github.com/Dreamacro/clash/releases/download/$CLASH_VERSION/clash-linux-armv8-$CLASH_VERSION.gz 175 | gunzip clash.gz 176 | chmod +x clash 177 | cd ../.. 178 | mkdir -p etc/clash 179 | cd etc/clash 180 | wget -O Country.mmdb https://github.com/Dreamacro/maxmind-geoip/releases/latest/download/Country.mmdb 181 | 182 | - name: Install UPX 183 | if: steps.changelog.outputs.changelog != '' 184 | run: | 185 | mkdir -p friendlywrt-rk3328/friendlywrt/staging_dir/host/bin/ 186 | ln -s /usr/bin/upx-ucl friendlywrt-rk3328/friendlywrt/staging_dir/host/bin/upx 187 | 188 | - name: Update Target.mk 189 | if: steps.changelog.outputs.changelog != '' 190 | run: | 191 | cd friendlywrt-rk3328/friendlywrt/include 192 | sed -i 's/dnsmasq /dnsmasq-full default-settings luci /' target.mk 193 | 194 | - name: Build Config 195 | if: steps.changelog.outputs.changelog != '' 196 | run: | 197 | cd friendlywrt-rk3328 198 | cat configs/config_rk3328 | grep "TARGET" > ../rk3328.config 199 | cat ../features.seed >> ../rk3328.config 200 | cat ../rk3328.config > configs/config_rk3328 201 | cat configs/config_rk3328 202 | 203 | - name: Clean src 204 | if: steps.changelog.outputs.changelog != '' 205 | run: | 206 | cd friendlywrt-rk3328 207 | rm -rf lede 208 | rm -rf openwrt 209 | 210 | - name: Build Friendlywrt 211 | if: steps.changelog.outputs.changelog != '' 212 | run: | 213 | cd friendlywrt-rk3328 214 | ./build.sh nanopi_r2s.mk 215 | 216 | # from https://github.com/fanck0605/nanopi_r2s/blob/lean/.github/workflows/main.yml#L87 217 | - name: Fix FriendlyWrt rootfs owner and group 218 | if: steps.changelog.outputs.changelog != '' 219 | run: | 220 | sudo df -lh 221 | lodev=$(sudo losetup -f) 222 | echo "found unused loop dev $lodev" 223 | sudo losetup -P $lodev friendlywrt-rk3328/out/*.img 224 | sudo rm -rf /mnt/friendlywrt-tmp 225 | sudo mkdir -p /mnt/friendlywrt-tmp 226 | sudo mount ${lodev}p1 /mnt/friendlywrt-tmp 227 | sudo chown -R root:root /mnt/friendlywrt-tmp 228 | sudo umount /mnt/friendlywrt-tmp 229 | sudo losetup -d $lodev 230 | 231 | - name: Zip Files 232 | if: steps.changelog.outputs.changelog != '' 233 | run: | 234 | gzip friendlywrt-rk3328/out/*.img 235 | 236 | - name: Assemble Artifact 237 | if: steps.changelog.outputs.changelog != '' 238 | id: assemble_artifact 239 | run: | 240 | rm -rf ./artifact/ 241 | mkdir -p ./artifact/ 242 | cd friendlywrt-rk3328/friendlywrt;./scripts/diffconfig.sh > ../../artifact/config.seed;cd ../../ 243 | mv friendlywrt-rk3328/out/*img* ./artifact/ 244 | cp friendlywrt-rk3328/friendlywrt/.config ./artifact/full.config 245 | cp friendlywrt-rk3328/friendlywrt/bin/packages/*/scw/luci-app-passwall*.ipk ./artifact/ 246 | cp friendlywrt-rk3328/friendlywrt/bin/packages/*/*/luci-app-r2sflasher*.ipk ./artifact/ 247 | cp friendlywrt-rk3328/friendlywrt/bin/packages/*/*/luci-app-filetransfer*.ipk ./artifact/ 248 | zip -r artifact.zip -j artifact artifact/* 249 | release_tag=${{ steps.changelog.outputs.buildtag }} 250 | echo "##[set-output name=release_tag;]$release_tag" 251 | 252 | - name: Create Release 253 | if: steps.changelog.outputs.changelog != '' 254 | id: create_release 255 | uses: actions/create-release@v1 256 | with: 257 | tag_name: ${{ steps.assemble_artifact.outputs.release_tag }} 258 | release_name: ${{ steps.assemble_artifact.outputs.release_tag }} 259 | body: ${{ steps.changelog.outputs.changelog }} 260 | draft: false 261 | prerelease: false 262 | 263 | - name: Upload Release Asset 264 | if: steps.changelog.outputs.changelog != '' 265 | id: upload-release-asset 266 | uses: actions/upload-release-asset@v1 267 | with: 268 | upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps 269 | asset_path: ./artifact.zip 270 | asset_name: ${{ steps.assemble_artifact.outputs.release_tag }}-ROM.zip 271 | asset_content_type: application/zip 272 | 273 | - name: Push Change Log 274 | if: steps.changelog.outputs.changelog != '' 275 | run: | 276 | git pull --rebase --autostash 277 | git push 278 | -------------------------------------------------------------------------------- /.github/workflows/friendlywrt_with_flowoffload.yml: -------------------------------------------------------------------------------- 1 | name: friendlywrt_with_flowoffload 2 | 3 | 4 | on: 5 | repository_dispatch: 6 | push: 7 | branches: 8 | - master 9 | paths: 10 | - '.github/workflows/friendlywrt_with_flowoffload.yml' 11 | - 'FriendlyWRTwithFlowOffload/minimal_offload.seed' 12 | 13 | 14 | jobs: 15 | build: 16 | runs-on: ubuntu-latest 17 | env: 18 | GITHUB_TOKEN: ${{ secrets.sec_token }} 19 | sec_token: ${{ secrets.sec_token }} 20 | 21 | steps: 22 | - name: Setup timezone 23 | uses: zcong1993/setup-timezone@master 24 | with: 25 | timezone: Asia/Shanghai 26 | 27 | - name: Checkout 28 | uses: actions/checkout@master 29 | with: 30 | ref: master 31 | fetch-depth: 0 32 | token: ${{ env.sec_token }} 33 | 34 | - name: Init Env 35 | env: 36 | DEBIAN_FRONTEND: noninteractive 37 | run: | 38 | . init_env.sh 39 | 40 | - name: Repo Hash 41 | run: | 42 | ./set_repo_hash.sh Builder 43 | 44 | - name: Friendlywrt Source 45 | run: | 46 | . friendlywrt_source.sh 47 | 48 | - name: Change Feeds to Lean 49 | run: | 50 | cd friendlywrt-rk3328 51 | git clone https://github.com/coolsnowwolf/lede 52 | cd lede 53 | ../../set_repo_hash.sh Lean 54 | cd ../friendlywrt 55 | cp -r ../lede/package/lean package/ 56 | sed -i 's/^src-git luci.*/src-git luci https:\/\/github.com\/coolsnowwolf\/luci/' feeds.conf.default 57 | sed -i 's/^src-git packages.*/src-git packages https:\/\/github.com\/coolsnowwolf\/packages/' feeds.conf.default 58 | ../../set_repo_hash.sh LeanLuci https://github.com/coolsnowwolf/luci.git 59 | ../../set_repo_hash.sh LeanPackage https://github.com/coolsnowwolf/packages.git 60 | 61 | - name: Add Packages to Lean 62 | run: | 63 | . add_packages_to_lean.sh 64 | 65 | - name: Install Openwrt Libs 66 | run: | 67 | git config --global user.email "action@github.com" && git config --global user.name "GitHub Action" 68 | cd friendlywrt-rk3328 69 | git clone https://github.com/openwrt/openwrt 70 | cd openwrt 71 | git revert --no-edit d27623b542548b765ddd46b046169006a3b5f66f 72 | cd .. 73 | rm -rf friendlywrt/package/libs 74 | cp -r openwrt/package/libs friendlywrt/package/ 75 | 76 | - name: Patch for FlowOffload 77 | run: | 78 | cd friendlywrt-rk3328 79 | mkdir kernelpatches 80 | cp openwrt/target/linux/generic/*-5.4/*offload* kernelpatches/ 81 | cp openwrt/target/linux/generic/*-5.4/*OFFLOAD* kernelpatches/ 82 | cp openwrt/target/linux/generic/*-5.4/*flow* kernelpatches/ 83 | rm kernelpatches/*ppp* 84 | ./openwrt/scripts/patch-kernel.sh kernel kernelpatches 85 | echo "CONFIG_NETFILTER_ADVANCED=y" >> kernel/arch/arm64/configs/nanopi-r2_linux_defconfig 86 | echo "CONFIG_NETFILTER_XTABLES=m" >> kernel/arch/arm64/configs/nanopi-r2_linux_defconfig 87 | echo "CONFIG_NETFILTER_XT_TARGET_FLOWOFFLOAD=m" >> kernel/arch/arm64/configs/nanopi-r2_linux_defconfig 88 | cat kernel/arch/arm64/configs/nanopi-r2_linux_defconfig 89 | 90 | - name: Install Openwrt octeontx patches 91 | run: | 92 | cd friendlywrt-rk3328 93 | cp -r openwrt/target/linux/octeontx/patches-5.4 friendlywrt/target/linux/rockchip-rk3328/ 94 | ls friendlywrt/target/linux/rockchip-rk3328/patches-5.4 95 | 96 | - name: Change Log 97 | id: changelog 98 | run: | 99 | git config --global user.email "action@github.com" && git config --global user.name "GitHub Action" 100 | ./changelog.sh FriendlyWRTwithFlowOffload 101 | 102 | - name: Update Feeds 103 | if: steps.changelog.outputs.changelog != '' 104 | run: | 105 | cd friendlywrt-rk3328/friendlywrt 106 | ./scripts/feeds update -a 107 | ./scripts/feeds install -a 108 | 109 | - name: Install Mods 110 | if: steps.changelog.outputs.changelog != '' 111 | run: | 112 | cd friendlywrt-rk3328 113 | sed -i '/Load Average/i\\t\t<%:CPU Temperature%><%=luci.sys.exec("cut -c1-2 /sys/class/thermal/thermal_zone0/temp")%> ℃' friendlywrt/feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm 114 | sed -i 's/pcdata(boardinfo.system or "?")/"ARMv8"/' friendlywrt/feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm 115 | sed -i 's/<%=luci.sys.exec("cat \/etc\/bench.log") or " "%>//' friendlywrt/feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm 116 | sed -i "/redirect_https/d" friendlywrt/package/network/services/uhttpd/files/uhttpd.config 117 | sed -i '/luciversion/a \/ ${{ steps.changelog.outputs.buildtag }} by scw' friendlywrt/feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm 118 | cp ../scripts/fw_update.sh friendlywrt/package/base-files/files/usr/bin/fw_update 119 | 120 | - name: Add Temperature to Netdata 121 | if: steps.changelog.outputs.changelog != '' 122 | run: | 123 | cd friendlywrt-rk3328 124 | mkdir -p friendlywrt/package/base-files/files/usr/lib/netdata/charts.d 125 | cp ../scripts/temp.chart.sh friendlywrt/package/base-files/files/usr/lib/netdata/charts.d/ 126 | echo "sed -i 's/charts.d = no/charts.d = yes/' /etc/netdata/netdata.conf" >> friendlywrt/package/base-files/files/root/setup.sh 127 | echo "cp /usr/lib/netdata/conf.d/charts.d.conf /etc/netdata/" >> friendlywrt/package/base-files/files/root/setup.sh 128 | echo "echo 'temp=yes' >> /etc/netdata/charts.d.conf" >> friendlywrt/package/base-files/files/root/setup.sh 129 | echo "/etc/init.d/netdata restart" >> friendlywrt/package/base-files/files/root/setup.sh 130 | 131 | - name: Download Clash Binary 132 | if: steps.changelog.outputs.changelog != '' 133 | run: | 134 | CLASH_VERSION=v0.19.0 135 | mkdir -p friendlywrt-rk3328/friendlywrt/package/base-files/files/usr/bin 136 | cd friendlywrt-rk3328/friendlywrt/package/base-files/files/usr/bin 137 | wget -O clash.gz https://github.com/Dreamacro/clash/releases/download/$CLASH_VERSION/clash-linux-armv8-$CLASH_VERSION.gz 138 | gunzip clash.gz 139 | chmod +x clash 140 | cd ../.. 141 | mkdir -p etc/clash 142 | cd etc/clash 143 | wget -O Country.mmdb https://github.com/Dreamacro/maxmind-geoip/releases/latest/download/Country.mmdb 144 | 145 | - name: Install UPX 146 | if: steps.changelog.outputs.changelog != '' 147 | run: | 148 | mkdir -p friendlywrt-rk3328/friendlywrt/staging_dir/host/bin/ 149 | ln -s /usr/bin/upx-ucl friendlywrt-rk3328/friendlywrt/staging_dir/host/bin/upx 150 | 151 | - name: Update Target.mk 152 | if: steps.changelog.outputs.changelog != '' 153 | run: | 154 | cd friendlywrt-rk3328/friendlywrt/include 155 | sed -i 's/dnsmasq /dnsmasq-full default-settings luci /' target.mk 156 | 157 | - name: Build Config 158 | if: steps.changelog.outputs.changelog != '' 159 | run: | 160 | cd friendlywrt-rk3328 161 | cat configs/config_rk3328 | grep "TARGET" > ../rk3328.config 162 | cat ../FriendlyWRTwithFlowOffload/minimal_offload.seed >> ../rk3328.config 163 | cat ../rk3328.config > configs/config_rk3328 164 | cat configs/config_rk3328 165 | 166 | - name: Clean src 167 | if: steps.changelog.outputs.changelog != '' 168 | run: | 169 | cd friendlywrt-rk3328 170 | rm -rf lede 171 | rm -rf openwrt 172 | 173 | - name: Build Friendlywrt 174 | if: steps.changelog.outputs.changelog != '' 175 | run: | 176 | cd friendlywrt-rk3328 177 | sed -i 's/set -eu/set -u/' scripts/mk-friendlywrt.sh 178 | ./build.sh nanopi_r2s.mk 179 | 180 | # from https://github.com/fanck0605/nanopi_r2s/blob/lean/.github/workflows/main.yml#L87 181 | - name: Fix FriendlyWrt rootfs owner and group 182 | if: steps.changelog.outputs.changelog != '' 183 | run: | 184 | sudo df -lh 185 | lodev=$(sudo losetup -f) 186 | echo "found unused loop dev $lodev" 187 | sudo losetup -o 100663296 $lodev friendlywrt-rk3328/out/*.img 188 | sudo rm -rf /mnt/friendlywrt-tmp 189 | sudo mkdir -p /mnt/friendlywrt-tmp 190 | sudo mount $lodev /mnt/friendlywrt-tmp 191 | sudo chown -R root:root /mnt/friendlywrt-tmp 192 | sudo umount /mnt/friendlywrt-tmp 193 | sudo losetup -d $lodev 194 | 195 | - name: Zip Files 196 | if: steps.changelog.outputs.changelog != '' 197 | run: | 198 | gzip friendlywrt-rk3328/out/*.img 199 | 200 | - name: Assemble Artifact 201 | if: steps.changelog.outputs.changelog != '' 202 | id: assemble_artifact 203 | run: | 204 | rm -rf ./artifact/ 205 | mkdir -p ./artifact/ 206 | cd friendlywrt-rk3328/friendlywrt;./scripts/diffconfig.sh > ../../artifact/config.seed;cd ../../ 207 | mv friendlywrt-rk3328/out/*img* ./artifact/ 208 | cp friendlywrt-rk3328/friendlywrt/.config ./artifact/full.config 209 | cp friendlywrt-rk3328/friendlywrt/bin/packages/*/scw/luci-app-passwall*.ipk ./artifact/ 210 | cp friendlywrt-rk3328/friendlywrt/bin/packages/*/*/luci-app-r2sflasher*.ipk ./artifact/ 211 | cp friendlywrt-rk3328/friendlywrt/bin/packages/*/*/luci-app-filetransfer*.ipk ./artifact/ 212 | zip -r artifact.zip -j artifact artifact/* 213 | release_tag=${{ steps.changelog.outputs.buildtag }} 214 | echo "##[set-output name=release_tag;]$release_tag" 215 | 216 | - name: Create Release 217 | if: steps.changelog.outputs.changelog != '' 218 | id: create_release 219 | uses: actions/create-release@v1 220 | with: 221 | tag_name: ${{ steps.assemble_artifact.outputs.release_tag }} 222 | release_name: ${{ steps.assemble_artifact.outputs.release_tag }} 223 | body: ${{ steps.changelog.outputs.changelog }} 224 | draft: false 225 | prerelease: false 226 | 227 | - name: Upload Release Asset 228 | if: steps.changelog.outputs.changelog != '' 229 | id: upload-release-asset 230 | uses: actions/upload-release-asset@v1 231 | with: 232 | upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps 233 | asset_path: ./artifact.zip 234 | asset_name: ${{ steps.assemble_artifact.outputs.release_tag }}-ROM.zip 235 | asset_content_type: application/zip 236 | 237 | - name: Push Change Log 238 | if: steps.changelog.outputs.changelog != '' 239 | run: | 240 | git pull --rebase --autostash 241 | git push 242 | -------------------------------------------------------------------------------- /.github/workflows/lean.yml_: -------------------------------------------------------------------------------- 1 | name: lean 2 | 3 | on: 4 | repository_dispatch: 5 | push: 6 | branches: 7 | - master 8 | paths: 9 | - '.github/workflows/lean.yml' 10 | - '*.sh' 11 | schedule: 12 | - cron: '0 6 * * 1' 13 | 14 | jobs: 15 | build: 16 | runs-on: ubuntu-latest 17 | env: 18 | GITHUB_TOKEN: ${{ secrets.sec_token }} 19 | sec_token: ${{ secrets.sec_token }} 20 | 21 | steps: 22 | - name: Setup timezone 23 | uses: zcong1993/setup-timezone@master 24 | with: 25 | timezone: Asia/Shanghai 26 | 27 | - name: Checkout 28 | uses: actions/checkout@master 29 | with: 30 | ref: master 31 | fetch-depth: 0 32 | token: ${{ env.sec_token }} 33 | 34 | - name: Init Env 35 | env: 36 | DEBIAN_FRONTEND: noninteractive 37 | run: | 38 | . init_env.sh 39 | 40 | - name: Repo Hash 41 | run: | 42 | ./set_repo_hash.sh Builder 43 | 44 | - name: Friendlywrt Source 45 | run: | 46 | . friendlywrt_source.sh 47 | 48 | - name: Patch Kernel 49 | run: | 50 | . Lean/patch_kernel_5.4.sh 51 | 52 | - name: Rebase on Lean 53 | run: | 54 | . Lean/rebase_on_lean.sh 55 | 56 | - name: Add Packages to Lean 57 | run: | 58 | . add_packages_to_lean.sh 59 | 60 | - name: Patches for Lean 61 | run: | 62 | . Lean/lean_patches.sh 63 | 64 | - name: Install Openwrt octeontx patches 65 | run: | 66 | cd friendlywrt-rk3328 67 | cp -r openwrt/target/linux/octeontx/patches-5.4 friendlywrt/target/linux/rockchip-rk3328/ 68 | ls friendlywrt/target/linux/rockchip-rk3328/patches-5.4 69 | 70 | - name: Install Mods 71 | run: | 72 | cd friendlywrt-rk3328 73 | cp ../scripts/fw_update.sh friendlywrt/package/base-files/files/usr/bin/fw_update 74 | 75 | - name: Change Log 76 | id: changelog 77 | run: | 78 | ./changelog.sh Lean 79 | 80 | - name: Download Clash Binary 81 | if: steps.changelog.outputs.changelog != '' 82 | run: | 83 | CLASH_VERSION=v0.19.0 84 | mkdir -p friendlywrt-rk3328/friendlywrt/package/base-files/files/usr/bin 85 | cd friendlywrt-rk3328/friendlywrt/package/base-files/files/usr/bin 86 | wget -O clash.gz https://github.com/Dreamacro/clash/releases/download/$CLASH_VERSION/clash-linux-armv8-$CLASH_VERSION.gz 87 | gunzip clash.gz 88 | chmod +x clash 89 | cd ../.. 90 | mkdir -p etc/clash 91 | cd etc/clash 92 | wget -O Country.mmdb https://github.com/Dreamacro/maxmind-geoip/releases/latest/download/Country.mmdb 93 | 94 | - name: Build Config 95 | if: steps.changelog.outputs.changelog != '' 96 | run: | 97 | cd friendlywrt-rk3328 98 | cat configs/config_rk3328 | grep "TARGET" > ../rk3328.config 99 | cat ../minimal_config.seed >> ../rk3328.config 100 | cat ../rk3328.config > configs/config_rk3328 101 | cat configs/config_rk3328 102 | 103 | - name: Build Friendlywrt 104 | if: steps.changelog.outputs.changelog != '' 105 | run: | 106 | cd friendlywrt-rk3328 107 | sed -i 's/set -eu/set -u/' scripts/mk-friendlywrt.sh 108 | ./build.sh nanopi_r2s.mk 109 | 110 | # from https://github.com/fanck0605/nanopi_r2s/blob/lean/.github/workflows/main.yml#L87 111 | - name: Fix FriendlyWrt rootfs owner and group 112 | if: steps.changelog.outputs.changelog != '' 113 | run: | 114 | sudo df -lh 115 | lodev=$(sudo losetup -f) 116 | echo "found unused loop dev $lodev" 117 | sudo losetup -o 100663296 $lodev friendlywrt-rk3328/out/*.img 118 | sudo rm -rf /mnt/friendlywrt-tmp 119 | sudo mkdir -p /mnt/friendlywrt-tmp 120 | sudo mount $lodev /mnt/friendlywrt-tmp 121 | sudo chown -R root:root /mnt/friendlywrt-tmp 122 | sudo umount /mnt/friendlywrt-tmp 123 | sudo losetup -d $lodev 124 | 125 | - name: Zip Files 126 | if: steps.changelog.outputs.changelog != '' 127 | run: | 128 | gzip friendlywrt-rk3328/out/*.img 129 | 130 | - name: Assemble Artifact 131 | if: steps.changelog.outputs.changelog != '' 132 | id: assemble_artifact 133 | run: | 134 | rm -rf ./artifact/ 135 | mkdir -p ./artifact/ 136 | cd friendlywrt-rk3328/friendlywrt;./scripts/diffconfig.sh > ../../artifact/config.seed;cd ../../ 137 | mv friendlywrt-rk3328/out/*img* ./artifact/ 138 | cp friendlywrt-rk3328/friendlywrt/.config ./artifact/full.config 139 | cp friendlywrt-rk3328/friendlywrt/bin/packages/*/scw/luci-app-passwall*.ipk ./artifact/ 140 | cp friendlywrt-rk3328/friendlywrt/bin/packages/*/*/luci-app-r2sflasher*.ipk ./artifact/ 141 | cp friendlywrt-rk3328/friendlywrt/bin/packages/*/*/luci-app-filetransfer*.ipk ./artifact/ 142 | zip -r artifact.zip -j artifact artifact/* 143 | release_tag=${{ steps.changelog.outputs.buildtag }} 144 | echo "##[set-output name=release_tag;]$release_tag" 145 | 146 | - name: Create Release 147 | if: steps.changelog.outputs.changelog != '' 148 | id: create_release 149 | uses: actions/create-release@v1 150 | with: 151 | tag_name: ${{ steps.assemble_artifact.outputs.release_tag }} 152 | release_name: ${{ steps.assemble_artifact.outputs.release_tag }} 153 | body: ${{ steps.changelog.outputs.changelog }} 154 | draft: false 155 | prerelease: false 156 | 157 | - name: Upload Release Asset 158 | if: steps.changelog.outputs.changelog != '' 159 | id: upload-release-asset 160 | uses: actions/upload-release-asset@v1 161 | with: 162 | upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps 163 | asset_path: ./artifact.zip 164 | asset_name: ${{ steps.assemble_artifact.outputs.release_tag }}-ROM.zip 165 | asset_content_type: application/zip 166 | 167 | - name: Push Change Log 168 | if: steps.changelog.outputs.changelog != '' 169 | run: | 170 | git pull --rebase --autostash 171 | git push 172 | -------------------------------------------------------------------------------- /.github/workflows/lienol_on_lean.yml_: -------------------------------------------------------------------------------- 1 | name: LOL 2 | 3 | on: 4 | repository_dispatch: 5 | push: 6 | branches: 7 | - master 8 | paths: 9 | - '.github/workflows/lienol_on_lean.yml' 10 | - '*.sh' 11 | schedule: 12 | - cron: '0 4 * * 1' 13 | 14 | jobs: 15 | build: 16 | runs-on: ubuntu-latest 17 | env: 18 | GITHUB_TOKEN: ${{ secrets.sec_token }} 19 | sec_token: ${{ secrets.sec_token }} 20 | 21 | steps: 22 | - name: Setup timezone 23 | uses: zcong1993/setup-timezone@master 24 | with: 25 | timezone: Asia/Shanghai 26 | 27 | - name: Checkout 28 | uses: actions/checkout@master 29 | with: 30 | ref: master 31 | fetch-depth: 0 32 | token: ${{ env.sec_token }} 33 | 34 | - name: Init Env 35 | env: 36 | DEBIAN_FRONTEND: noninteractive 37 | run: | 38 | . init_env.sh 39 | 40 | - name: Repo Hash 41 | run: | 42 | ./set_repo_hash.sh Builder 43 | 44 | - name: Friendlywrt Source 45 | run: | 46 | . friendlywrt_source.sh 47 | 48 | - name: Patch Kernel 49 | run: | 50 | . Lean/patch_kernel_5.4.sh 51 | sed -i -r 's/# (CONFIG_.*_ERRATUM_.*?) is.*/\1=y/g' kernel/arch/arm64/configs/nanopi-r2_linux_defconfig 52 | 53 | - name: Rebase on Lean 54 | run: | 55 | . LOL/rebase_on_lienol.sh 56 | 57 | - name: Add Packages to Lean 58 | run: | 59 | sed -i 's/^src-git lienol.*//' friendlywrt-rk3328/friendlywrt/feeds.conf.default 60 | . add_packages_to_lean.sh 61 | 62 | - name: Patches for Lean 63 | run: | 64 | . Lean/lean_patches.sh 65 | 66 | - name: Install Openwrt octeontx patches 67 | run: | 68 | cd friendlywrt-rk3328 69 | cp -r openwrt/target/linux/octeontx/patches-5.4 friendlywrt/target/linux/rockchip-rk3328/ 70 | ls friendlywrt/target/linux/rockchip-rk3328/patches-5.4 71 | 72 | - name: Install Mods 73 | run: | 74 | cd friendlywrt-rk3328 75 | cp ../scripts/fw_update.sh friendlywrt/package/base-files/files/usr/bin/fw_update 76 | 77 | - name: Change Log 78 | id: changelog 79 | run: | 80 | ./changelog.sh LOL 81 | 82 | - name: Download Clash Binary 83 | if: steps.changelog.outputs.changelog != '' 84 | run: | 85 | CLASH_VERSION=v0.19.0 86 | mkdir -p friendlywrt-rk3328/friendlywrt/package/base-files/files/usr/bin 87 | cd friendlywrt-rk3328/friendlywrt/package/base-files/files/usr/bin 88 | wget -O clash.gz https://github.com/Dreamacro/clash/releases/download/$CLASH_VERSION/clash-linux-armv8-$CLASH_VERSION.gz 89 | gunzip clash.gz 90 | chmod +x clash 91 | cd ../.. 92 | mkdir -p etc/clash 93 | cd etc/clash 94 | wget -O Country.mmdb https://github.com/Dreamacro/maxmind-geoip/releases/latest/download/Country.mmdb 95 | 96 | - name: Build Config 97 | if: steps.changelog.outputs.changelog != '' 98 | run: | 99 | cd friendlywrt-rk3328 100 | cat configs/config_rk3328 | grep "TARGET" > ../rk3328.config 101 | cat ../minimal_config.seed >> ../rk3328.config 102 | cat ../rk3328.config > configs/config_rk3328 103 | cat configs/config_rk3328 104 | 105 | - name: Build Friendlywrt 106 | if: steps.changelog.outputs.changelog != '' 107 | run: | 108 | cd friendlywrt-rk3328 109 | sed -i 's/set -eu/set -u/' scripts/mk-friendlywrt.sh 110 | ./build.sh nanopi_r2s.mk 111 | 112 | # from https://github.com/fanck0605/nanopi_r2s/blob/lean/.github/workflows/main.yml#L87 113 | - name: Fix FriendlyWrt rootfs owner and group 114 | if: steps.changelog.outputs.changelog != '' 115 | run: | 116 | sudo df -lh 117 | lodev=$(sudo losetup -f) 118 | echo "found unused loop dev $lodev" 119 | sudo losetup -o 100663296 $lodev friendlywrt-rk3328/out/*.img 120 | sudo rm -rf /mnt/friendlywrt-tmp 121 | sudo mkdir -p /mnt/friendlywrt-tmp 122 | sudo mount $lodev /mnt/friendlywrt-tmp 123 | sudo chown -R root:root /mnt/friendlywrt-tmp 124 | sudo umount /mnt/friendlywrt-tmp 125 | sudo losetup -d $lodev 126 | 127 | - name: Zip Files 128 | if: steps.changelog.outputs.changelog != '' 129 | run: | 130 | gzip friendlywrt-rk3328/out/*.img 131 | 132 | - name: Assemble Artifact 133 | if: steps.changelog.outputs.changelog != '' 134 | id: assemble_artifact 135 | run: | 136 | rm -rf ./artifact/ 137 | mkdir -p ./artifact/ 138 | cd friendlywrt-rk3328/friendlywrt;./scripts/diffconfig.sh > ../../artifact/config.seed;cd ../../ 139 | mv friendlywrt-rk3328/out/*img* ./artifact/ 140 | cp friendlywrt-rk3328/friendlywrt/.config ./artifact/full.config 141 | cp friendlywrt-rk3328/friendlywrt/bin/packages/*/scw/luci-app-passwall*.ipk ./artifact/ 142 | cp friendlywrt-rk3328/friendlywrt/bin/packages/*/*/luci-app-r2sflasher*.ipk ./artifact/ 143 | cp friendlywrt-rk3328/friendlywrt/bin/packages/*/*/luci-app-filetransfer*.ipk ./artifact/ 144 | zip -r artifact.zip -j artifact artifact/* 145 | release_tag=${{ steps.changelog.outputs.buildtag }} 146 | echo "##[set-output name=release_tag;]$release_tag" 147 | 148 | - name: Create Release 149 | if: steps.changelog.outputs.changelog != '' 150 | id: create_release 151 | uses: actions/create-release@v1 152 | with: 153 | tag_name: ${{ steps.assemble_artifact.outputs.release_tag }} 154 | release_name: ${{ steps.assemble_artifact.outputs.release_tag }} 155 | body: ${{ steps.changelog.outputs.changelog }} 156 | draft: false 157 | prerelease: false 158 | 159 | - name: Upload Release Asset 160 | if: steps.changelog.outputs.changelog != '' 161 | id: upload-release-asset 162 | uses: actions/upload-release-asset@v1 163 | with: 164 | upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps 165 | asset_path: ./artifact.zip 166 | asset_name: ${{ steps.assemble_artifact.outputs.release_tag }}-ROM.zip 167 | asset_content_type: application/zip 168 | 169 | - name: Push Change Log 170 | if: steps.changelog.outputs.changelog != '' 171 | run: | 172 | git pull --rebase --autostash 173 | git push 174 | -------------------------------------------------------------------------------- /FriendlyWRT/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## FriendlyWRT-2020-07-04-935c67b 2 | 3 | #### Argon [6bab4a8..d4b2541](https://github.com/jerrykuku/luci-theme-argon/compare/6bab4a8..d4b2541) 4 | 5 | 6 | | Commit | Author | Desc | 7 | | :----- | :------| :--- | 8 | | [d4b2541](https://github.com/jerrykuku/luci-theme-argon/commit/d4b2541) | jerrykuku | Update style.css | 9 | | [b9a2dde](https://github.com/jerrykuku/luci-theme-argon/commit/b9a2dde) | jerrykuku | update readme | 10 | | [86f9b0a](https://github.com/jerrykuku/luci-theme-argon/commit/86f9b0a) | jerrykuku | fix display bugs | 11 | 12 | 13 | 14 | 15 | -------------- 16 | 17 | ## FriendlyWRT-2020-07-01-935c67b 18 | 19 | #### Builder [8affca1..935c67b](https://github.com/songchenwen/nanopi-r2s/compare/8affca1..935c67b) 20 | 21 | 22 | | Commit | Author | Desc | 23 | | :----- | :------| :--- | 24 | | [935c67b](https://github.com/songchenwen/nanopi-r2s/commit/935c67b) | songchenwen | Enable Check Net Script | 25 | 26 | 27 | 28 | 29 | -------------- 30 | 31 | ## FriendlyWRT-2020-06-10-8affca1 32 | 33 | #### Builder [7707052..8affca1](https://github.com/songchenwen/nanopi-r2s/compare/7707052..8affca1) 34 | 35 | 36 | | Commit | Author | Desc | 37 | | :----- | :------| :--- | 38 | | [8affca1](https://github.com/songchenwen/nanopi-r2s/commit/8affca1) | songchenwen | Check Net Script in Hotplug.d | 39 | 40 | 41 | 42 | 43 | -------------- 44 | 45 | ## FriendlyWRT-2020-06-01-7707052 46 | 47 | #### Builder [b0a8b83..7707052](https://github.com/songchenwen/nanopi-r2s/compare/b0a8b83..7707052) 48 | 49 | 50 | | Commit | Author | Desc | 51 | | :----- | :------| :--- | 52 | | [7707052](https://github.com/songchenwen/nanopi-r2s/commit/7707052) | songchenwen | Fix FullCone Nat Patch | 53 | 54 | 55 | 56 | 57 | -------------- 58 | 59 | ## FriendlyWRT-2020-05-28-b0a8b83 60 | 61 | #### FriendlyWRT [4132f4f..b2b9dc9](https://github.com/friendlyarm/friendlywrt/compare/4132f4f..b2b9dc9) 62 | 63 | 64 | | Commit | Author | Desc | 65 | | :----- | :------| :--- | 66 | | [b2b9dc9763](https://github.com/friendlyarm/friendlywrt/commit/b2b9dc9763) | Lawrence-Tang | lcd2usb_echo: display cpu temperature and ip on lcd1602 | 67 | 68 | 69 | 70 | 71 | -------------- 72 | 73 | ## FriendlyWRT-2020-05-24-b0a8b83 74 | 75 | #### ServerChan [cd9cf97..db547c1](https://github.com/tty228/luci-app-serverchan/compare/cd9cf97..db547c1) 76 | 77 | 78 | | Commit | Author | Desc | 79 | | :----- | :------| :--- | 80 | | [db547c1](https://github.com/tty228/luci-app-serverchan/commit/db547c1) | tty228 | update | 81 | 82 | 83 | 84 | 85 | -------------- 86 | 87 | ## FriendlyWRT-2020-05-20-b0a8b83 88 | 89 | #### Builder [ae0868c..b0a8b83](https://github.com/songchenwen/nanopi-r2s/compare/ae0868c..b0a8b83) 90 | 91 | 92 | | Commit | Author | Desc | 93 | | :----- | :------| :--- | 94 | | [b0a8b83](https://github.com/songchenwen/nanopi-r2s/commit/b0a8b83) | songchenwen | Add Check Net Script | 95 | 96 | 97 | 98 | 99 | -------------- 100 | 101 | ## FriendlyWRT-2020-05-19-ae0868c 102 | 103 | #### Builder [772dcd8..ae0868c](https://github.com/songchenwen/nanopi-r2s/compare/772dcd8..ae0868c) 104 | 105 | 106 | | Commit | Author | Desc | 107 | | :----- | :------| :--- | 108 | | [ae0868c](https://github.com/songchenwen/nanopi-r2s/commit/ae0868c) | songchenwen | Update Clash Binary | 109 | 110 | 111 | 112 | 113 | -------------- 114 | 115 | ## FriendlyWRT-2020-05-19-772dcd8 116 | 117 | #### Builder [7ff9cfd..772dcd8](https://github.com/songchenwen/nanopi-r2s/compare/7ff9cfd..772dcd8) 118 | 119 | 120 | | Commit | Author | Desc | 121 | | :----- | :------| :--- | 122 | | [0e22b19](https://github.com/songchenwen/nanopi-r2s/commit/0e22b19) | Chuck | r2sflash: fix read only filesystem test | 123 | 124 | 125 | 126 | 127 | -------------- 128 | 129 | ## FriendlyWRT-2020-05-16-7ff9cfd 130 | 131 | #### Builder [a8d344a..7ff9cfd](https://github.com/songchenwen/nanopi-r2s/compare/a8d344a..7ff9cfd) 132 | 133 | 134 | | Commit | Author | Desc | 135 | | :----- | :------| :--- | 136 | | [7ff9cfd](https://github.com/songchenwen/nanopi-r2s/commit/7ff9cfd) | songchenwen | R2S Flasher: Fix Loop Mount Test | 137 | 138 | 139 | 140 | 141 | -------------- 142 | 143 | ## FriendlyWRT-2020-05-15-a8d344a 144 | 145 | #### FriendlyWRT [f6e2de1..4132f4f](https://github.com/friendlyarm/friendlywrt/compare/f6e2de1..4132f4f) 146 | 147 | 148 | | Commit | Author | Desc | 149 | | :----- | :------| :--- | 150 | | [4132f4fe51](https://github.com/friendlyarm/friendlywrt/commit/4132f4fe51) | Lawrence-Tang | rk3328: add support for rtl8812au | 151 | | [4cf743eb54](https://github.com/friendlyarm/friendlywrt/commit/4cf743eb54) | Chuck | rk3328: adapt to rockchip-kernel's HZ settings | 152 | | [e7952a97a2](https://github.com/friendlyarm/friendlywrt/commit/e7952a97a2) | Chuck | rk3328: remove CONFIG_COMPACTION config | 153 | 154 | 155 | 156 | 157 | -------------- 158 | 159 | ## FriendlyWRT-2020-05-11-a8d344a 160 | 161 | #### Builder [91af96c..a8d344a](https://github.com/songchenwen/nanopi-r2s/compare/91af96c..a8d344a) 162 | 163 | 164 | | Commit | Author | Desc | 165 | | :----- | :------| :--- | 166 | | [a8d344a](https://github.com/songchenwen/nanopi-r2s/commit/a8d344a) | songchenwen | User New OPKG Feeds Domain Name | 167 | 168 | 169 | 170 | 171 | -------------- 172 | 173 | ## FriendlyWRT-2020-05-05-91af96c 174 | 175 | #### Builder [394c9a4..91af96c](https://github.com/songchenwen/nanopi-r2s/compare/394c9a4..91af96c) 176 | 177 | 178 | | Commit | Author | Desc | 179 | | :----- | :------| :--- | 180 | | [91af96c](https://github.com/songchenwen/nanopi-r2s/commit/91af96c) | songchenwen | Try Deleting NFT Offload | 181 | 182 | 183 | 184 | 185 | -------------- 186 | 187 | ## FriendlyWRT-2020-05-04-394c9a4 188 | 189 | #### Builder [3ceb089..394c9a4](https://github.com/songchenwen/nanopi-r2s/compare/3ceb089..394c9a4) 190 | 191 | 192 | | Commit | Author | Desc | 193 | | :----- | :------| :--- | 194 | | [394c9a4](https://github.com/songchenwen/nanopi-r2s/commit/394c9a4) | songchenwen | Fix FullCone NAT in Firewall | 195 | 196 | 197 | #### Argon [358e293..6bab4a8](https://github.com/jerrykuku/luci-theme-argon/compare/358e293..6bab4a8) 198 | 199 | 200 | | Commit | Author | Desc | 201 | | :----- | :------| :--- | 202 | | [6bab4a8](https://github.com/jerrykuku/luci-theme-argon/commit/6bab4a8) | jerrykuku | fix some display error | 203 | 204 | 205 | 206 | 207 | -------------- 208 | 209 | ## FriendlyWRT-2020-05-04-3ceb089 210 | 211 | #### Builder [23a4f41..3ceb089](https://github.com/songchenwen/nanopi-r2s/compare/23a4f41..3ceb089) 212 | 213 | 214 | | Commit | Author | Desc | 215 | | :----- | :------| :--- | 216 | | [05dfa4e](https://github.com/songchenwen/nanopi-r2s/commit/05dfa4e) | songchenwen | Merge Chuck's Changes | 217 | | [6f7092e](https://github.com/songchenwen/nanopi-r2s/commit/6f7092e) | Chuck | r2sflasher: optimize loop device mount | 218 | 219 | 220 | 221 | 222 | -------------- 223 | 224 | ## FriendlyWRT-2020-05-04-23a4f41 225 | 226 | #### Builder [55f162a..23a4f41](https://github.com/songchenwen/nanopi-r2s/compare/55f162a..23a4f41) 227 | 228 | 229 | | Commit | Author | Desc | 230 | | :----- | :------| :--- | 231 | | [23a4f41](https://github.com/songchenwen/nanopi-r2s/commit/23a4f41) | songchenwen | Add FullCone NAT Dependencies. | 232 | 233 | 234 | #### Argon [3e41f5b..358e293](https://github.com/jerrykuku/luci-theme-argon/compare/3e41f5b..358e293) 235 | 236 | 237 | | Commit | Author | Desc | 238 | | :----- | :------| :--- | 239 | | [621d5cf](https://github.com/jerrykuku/luci-theme-argon/commit/621d5cf) | R3pl4c3r | favicon: replaced by icon.png | 240 | 241 | 242 | 243 | 244 | -------------- 245 | 246 | ## FriendlyWRT-2020-05-01-55f162a 247 | 248 | #### Builder [10a45b1..55f162a](https://github.com/songchenwen/nanopi-r2s/compare/10a45b1..55f162a) 249 | 250 | 251 | | Commit | Author | Desc | 252 | | :----- | :------| :--- | 253 | | [55f162a](https://github.com/songchenwen/nanopi-r2s/commit/55f162a) | songchenwen | Update Kernel URL | 254 | | [c129fd9](https://github.com/songchenwen/nanopi-r2s/commit/c129fd9) | songchenwen | Update README | 255 | 256 | 257 | 258 | 259 | -------------- 260 | 261 | ## FriendlyWRT-2020-04-30-10a45b1 262 | 263 | #### OpenWrt [f57230c](/commit/f57230c) 264 | 265 | 266 | 267 | 268 | #### Builder [29cf7e9..10a45b1](https://github.com/songchenwen/nanopi-r2s/compare/29cf7e9..10a45b1) 269 | 270 | 271 | | Commit | Author | Desc | 272 | | :----- | :------| :--- | 273 | | [10a45b1](https://github.com/songchenwen/nanopi-r2s/commit/10a45b1) | songchenwen | Use Chuck's Kernel | 274 | 275 | 276 | #### Kernel [240bef4](/commit/240bef4) 277 | 278 | 279 | 280 | 281 | 282 | 283 | -------------- 284 | 285 | ## FriendlyWRT-2020-04-29-29cf7e9 286 | 287 | #### FriendlyWRT [6025df0..f6e2de1](https://github.com/friendlyarm/friendlywrt/compare/6025df0..f6e2de1) 288 | 289 | 290 | | Commit | Author | Desc | 291 | | :----- | :------| :--- | 292 | | [48b8c9921b](https://github.com/friendlyarm/friendlywrt/commit/48b8c9921b) | Chuck | setup.sh: make sure it's not commented | 293 | 294 | 295 | 296 | 297 | -------------- 298 | 299 | ## FriendlyWRT-2020-04-23-29cf7e9 300 | 301 | #### Builder [099d874..29cf7e9](https://github.com/songchenwen/nanopi-r2s/compare/099d874..29cf7e9) 302 | 303 | 304 | | Commit | Author | Desc | 305 | | :----- | :------| :--- | 306 | | [29cf7e9](https://github.com/songchenwen/nanopi-r2s/commit/29cf7e9) | songchenwen | Add NanoPi R2S OPKG Feeds | 307 | 308 | 309 | 310 | 311 | -------------- 312 | 313 | ## FriendlyWRT-2020-04-23-099d874 314 | 315 | #### ServerChan [c15251d..cd9cf97](https://github.com/tty228/luci-app-serverchan/compare/c15251d..cd9cf97) 316 | 317 | 318 | | Commit | Author | Desc | 319 | | :----- | :------| :--- | 320 | | [cd9cf97](https://github.com/tty228/luci-app-serverchan/commit/cd9cf97) | tty228 | v1.78 | 321 | 322 | 323 | 324 | 325 | -------------- 326 | 327 | ## FriendlyWRT-2020-04-22-099d874 328 | 329 | #### Builder [a5f91ca..099d874](https://github.com/songchenwen/nanopi-r2s/compare/a5f91ca..099d874) 330 | 331 | 332 | | Commit | Author | Desc | 333 | | :----- | :------| :--- | 334 | | [099d874](https://github.com/songchenwen/nanopi-r2s/commit/099d874) | songchenwen | R2S Flasher Change Backup Dir | 335 | 336 | 337 | 338 | 339 | -------------- 340 | 341 | ## FriendlyWRT-2020-04-21-a5f91ca 342 | 343 | #### Builder [9a6851a..a5f91ca](https://github.com/songchenwen/nanopi-r2s/compare/9a6851a..a5f91ca) 344 | 345 | 346 | | Commit | Author | Desc | 347 | | :----- | :------| :--- | 348 | | [a5f91ca](https://github.com/songchenwen/nanopi-r2s/commit/a5f91ca) | songchenwen | luci-app-flasher auto redirect when reversed proxied | 349 | | [9b56dcc](https://github.com/songchenwen/nanopi-r2s/commit/9b56dcc) | songchenwen | Add Test Build with FlowOffload | 350 | 351 | 352 | 353 | 354 | -------------- 355 | 356 | ## FriendlyWRT-2020-04-20-9a6851a 357 | 358 | #### ServerChan [7d39adb..c15251d](https://github.com/tty228/luci-app-serverchan/compare/7d39adb..c15251d) 359 | 360 | 361 | | Commit | Author | Desc | 362 | | :----- | :------| :--- | 363 | | [c15251d](https://github.com/tty228/luci-app-serverchan/commit/c15251d) | tty228 | v1.77 | 364 | | [07d69bd](https://github.com/tty228/luci-app-serverchan/commit/07d69bd) | tty228 | Update serverchan | 365 | | [49863f2](https://github.com/tty228/luci-app-serverchan/commit/49863f2) | tty228 | 设备下线时不需要重置流量数据 | 366 | 367 | 368 | 369 | 370 | -------------- 371 | 372 | ## FriendlyWRT-2020-04-19-9a6851a 373 | 374 | #### ServerChan [20d4f2e..7d39adb](https://github.com/tty228/luci-app-serverchan/compare/20d4f2e..7d39adb) 375 | 376 | 377 | | Commit | Author | Desc | 378 | | :----- | :------| :--- | 379 | | [7d39adb](https://github.com/tty228/luci-app-serverchan/commit/7d39adb) | tty228 | Update serverchan.lua | 380 | | [25c589e](https://github.com/tty228/luci-app-serverchan/commit/25c589e) | tty228 | v1.76 | 381 | | [c59007e](https://github.com/tty228/luci-app-serverchan/commit/c59007e) | tty228 | Update Makefile | 382 | | [59782cd](https://github.com/tty228/luci-app-serverchan/commit/59782cd) | tty228 | update | 383 | | [babaedf](https://github.com/tty228/luci-app-serverchan/commit/babaedf) | tty228 | update | 384 | | [a028deb](https://github.com/tty228/luci-app-serverchan/commit/a028deb) | tty228 | Update Makefile | 385 | | [d3d3b24](https://github.com/tty228/luci-app-serverchan/commit/d3d3b24) | tty228 | 换行有问题 | 386 | | [19e21e5](https://github.com/tty228/luci-app-serverchan/commit/19e21e5) | tty228 | update | 387 | | [833b3c7](https://github.com/tty228/luci-app-serverchan/commit/833b3c7) | tty228 | update | 388 | 389 | 390 | #### Builder [ec8a958..9a6851a](https://github.com/songchenwen/nanopi-r2s/compare/ec8a958..9a6851a) 391 | 392 | 393 | | Commit | Author | Desc | 394 | | :----- | :------| :--- | 395 | | [9a6851a](https://github.com/songchenwen/nanopi-r2s/commit/9a6851a) | songchenwen | Delete Lean and LOL Version | 396 | 397 | 398 | 399 | 400 | -------------- 401 | 402 | ## FriendlyWRT-2020-04-18-ec8a958 403 | 404 | #### ServerChan [d14067f..20d4f2e](https://github.com/tty228/luci-app-serverchan/compare/d14067f..20d4f2e) 405 | 406 | 407 | | Commit | Author | Desc | 408 | | :----- | :------| :--- | 409 | | [20d4f2e](https://github.com/tty228/luci-app-serverchan/commit/20d4f2e) | tty228 | Update README.md | 410 | | [79d20c9](https://github.com/tty228/luci-app-serverchan/commit/79d20c9) | tty228 | update | 411 | | [7c0b338](https://github.com/tty228/luci-app-serverchan/commit/7c0b338) | tty228 | 修复 lan 接口无线设备离线时接口识别错误的bug | 412 | | [715d7fb](https://github.com/tty228/luci-app-serverchan/commit/715d7fb) | tty228 | 更改几个可能引起问题的语法 | 413 | | [025d0f8](https://github.com/tty228/luci-app-serverchan/commit/025d0f8) | tty228 | v1.74 | 414 | | [915fa16](https://github.com/tty228/luci-app-serverchan/commit/915fa16) | tty228 | 修复 tg 定时推送乱码问题 | 415 | | [ce6c990](https://github.com/tty228/luci-app-serverchan/commit/ce6c990) | tty228 | v1.73 | 416 | 417 | 418 | #### Builder [0e7ccd9..ec8a958](https://github.com/songchenwen/nanopi-r2s/compare/0e7ccd9..ec8a958) 419 | 420 | 421 | | Commit | Author | Desc | 422 | | :----- | :------| :--- | 423 | | [ec8a958](https://github.com/songchenwen/nanopi-r2s/commit/ec8a958) | songchenwen | Fix Timezone | 424 | 425 | 426 | 427 | 428 | -------------- 429 | 430 | ## FriendlyWRT-2020-04-17-0e7ccd9 431 | 432 | #### ServerChan [99c9023..d14067f](https://github.com/tty228/luci-app-serverchan/compare/99c9023..d14067f) 433 | 434 | 435 | | Commit | Author | Desc | 436 | | :----- | :------| :--- | 437 | | [d14067f](https://github.com/tty228/luci-app-serverchan/commit/d14067f) | tty228 | 修复上线检测未正确使用变量 | 438 | | [5ae8cd2](https://github.com/tty228/luci-app-serverchan/commit/5ae8cd2) | tty228 | update | 439 | | [80e5936](https://github.com/tty228/luci-app-serverchan/commit/80e5936) | tty228 | Update README.md | 440 | | [908bbc7](https://github.com/tty228/luci-app-serverchan/commit/908bbc7) | tty228 | v1.72 | 441 | 442 | 443 | #### Builder [9f73416..0e7ccd9](https://github.com/songchenwen/nanopi-r2s/compare/9f73416..0e7ccd9) 444 | 445 | 446 | | Commit | Author | Desc | 447 | | :----- | :------| :--- | 448 | | [0e7ccd9](https://github.com/songchenwen/nanopi-r2s/commit/0e7ccd9) | songchenwen | + FileAssistant -Watchcat | 449 | 450 | 451 | 452 | 453 | -------------- 454 | 455 | ## FriendlyWRT-2020-04-16-9f73416 456 | 457 | #### Builder [94a2747..9f73416](https://github.com/songchenwen/nanopi-r2s/compare/94a2747..9f73416) 458 | 459 | 460 | | Commit | Author | Desc | 461 | | :----- | :------| :--- | 462 | | [9f73416](https://github.com/songchenwen/nanopi-r2s/commit/9f73416) | songchenwen | Update R2S Flasher | 463 | | [2ff8b7e](https://github.com/songchenwen/nanopi-r2s/commit/2ff8b7e) | songchenwen | Add Download URL to luci-app-r2sflasher | 464 | | [d7e657a](https://github.com/songchenwen/nanopi-r2s/commit/d7e657a) | songchenwen | Fix SSRP | 465 | 466 | 467 | 468 | 469 | -------------- 470 | 471 | ## FriendlyWRT-2020-04-16-94a2747 472 | 473 | #### Builder [2e348ea..94a2747](https://github.com/songchenwen/nanopi-r2s/compare/2e348ea..94a2747) 474 | 475 | 476 | | Commit | Author | Desc | 477 | | :----- | :------| :--- | 478 | | [94a2747](https://github.com/songchenwen/nanopi-r2s/commit/94a2747) | songchenwen | Update r2sflasher Dependency | 479 | 480 | 481 | 482 | 483 | -------------- 484 | 485 | ## FriendlyWRT-2020-04-15-2e348ea 486 | 487 | #### Builder [06ca030..2e348ea](https://github.com/songchenwen/nanopi-r2s/compare/06ca030..2e348ea) 488 | 489 | 490 | | Commit | Author | Desc | 491 | | :----- | :------| :--- | 492 | | [2e348ea](https://github.com/songchenwen/nanopi-r2s/commit/2e348ea) | songchenwen | Add Separated Read Me File to Avoid Merge Conflict | 493 | 494 | 495 | 496 | 497 | -------------- 498 | 499 | ## FriendlyWRT-2020-04-15-06ca030 500 | 501 | #### Builder [6921e05..06ca030](https://github.com/songchenwen/nanopi-r2s/compare/6921e05..06ca030) 502 | 503 | 504 | | Commit | Author | Desc | 505 | | :----- | :------| :--- | 506 | | [06ca030](https://github.com/songchenwen/nanopi-r2s/commit/06ca030) | songchenwen | Update README | 507 | | [73d70f6](https://github.com/songchenwen/nanopi-r2s/commit/73d70f6) | songchenwen | README about friendlywrt | 508 | | [f666d0b](https://github.com/songchenwen/nanopi-r2s/commit/f666d0b) | songchenwen | Add ETH Tool and Cloudflare DDNS | 509 | 510 | 511 | 512 | 513 | -------------- 514 | 515 | ## FriendlyWRT-2020-04-15-6921e05 516 | 517 | #### Builder [929220a..6921e05](https://github.com/songchenwen/nanopi-r2s/compare/929220a..6921e05) 518 | 519 | 520 | | Commit | Author | Desc | 521 | | :----- | :------| :--- | 522 | | [6921e05](https://github.com/songchenwen/nanopi-r2s/commit/6921e05) | songchenwen | Edit R2S Flasher ROM Page | 523 | | [c4df26f](https://github.com/songchenwen/nanopi-r2s/commit/c4df26f) | songchenwen | luci-app-r2sflasher support img.zip file | 524 | 525 | 526 | 527 | 528 | -------------- 529 | 530 | ## FriendlyWRT-2020-04-14-929220a 531 | 532 | #### Builder [f8b0fae..929220a](https://github.com/songchenwen/nanopi-r2s/compare/f8b0fae..929220a) 533 | 534 | 535 | | Commit | Author | Desc | 536 | | :----- | :------| :--- | 537 | | [929220a](https://github.com/songchenwen/nanopi-r2s/commit/929220a) | songchenwen | fix elfutils | 538 | | [c5c7214](https://github.com/songchenwen/nanopi-r2s/commit/c5c7214) | songchenwen | Try another way to fix elfutils | 539 | | [3a014f1](https://github.com/songchenwen/nanopi-r2s/commit/3a014f1) | songchenwen | Try to fix elfutils | 540 | | [b7c1390](https://github.com/songchenwen/nanopi-r2s/commit/b7c1390) | songchenwen | Remove Gzip Dependency of r2s flasher | 541 | | [7ab12ae](https://github.com/songchenwen/nanopi-r2s/commit/7ab12ae) | songchenwen | add luci-app-r2sflasher | 542 | | [9b5cf06](https://github.com/songchenwen/nanopi-r2s/commit/9b5cf06) | songchenwen | No Bench Mark for FriendlyWRT | 543 | 544 | 545 | #### FriendlyWRT [c2699cd..6025df0](https://github.com/friendlyarm/friendlywrt/compare/c2699cd..6025df0) 546 | 547 | 548 | | Commit | Author | Desc | 549 | | :----- | :------| :--- | 550 | | [6025df0352](https://github.com/friendlyarm/friendlywrt/commit/6025df0352) | Lawrence-Tang | initial settings for ttyd, samba, watchcat | 551 | | [6ba702543b](https://github.com/friendlyarm/friendlywrt/commit/6ba702543b) | Lawrence-Tang | rk3328: add support for rtl8822bu | 552 | | [5ebce5620b](https://github.com/friendlyarm/friendlywrt/commit/5ebce5620b) | Lawrence-Tang | add p7zip | 553 | 554 | 555 | 556 | 557 | -------------- 558 | 559 | ## FriendlyWRT-2020-04-12-f8b0fae 560 | 561 | #### Builder [d04ccd6..f8b0fae](https://github.com/songchenwen/nanopi-r2s/compare/d04ccd6..f8b0fae) 562 | 563 | 564 | | Commit | Author | Desc | 565 | | :----- | :------| :--- | 566 | | [f8b0fae](https://github.com/songchenwen/nanopi-r2s/commit/f8b0fae) | songchenwen | add luci-app-filebrowser | 567 | 568 | 569 | 570 | 571 | -------------- 572 | 573 | ## FriendlyWRT-2020-04-12-d04ccd6 574 | 575 | #### Builder [cf7d037..d04ccd6](https://github.com/songchenwen/nanopi-r2s/compare/cf7d037..d04ccd6) 576 | 577 | 578 | | Commit | Author | Desc | 579 | | :----- | :------| :--- | 580 | | [d04ccd6](https://github.com/songchenwen/nanopi-r2s/commit/d04ccd6) | songchenwen | Remove nfs add v2ray and wget | 581 | 582 | 583 | 584 | 585 | -------------- 586 | 587 | ## FriendlyWRT-2020-04-11-cf7d037 588 | 589 | #### Builder [bf4fc77..cf7d037](https://github.com/songchenwen/nanopi-r2s/compare/bf4fc77..cf7d037) 590 | 591 | 592 | | Commit | Author | Desc | 593 | | :----- | :------| :--- | 594 | | [cf7d037](https://github.com/songchenwen/nanopi-r2s/commit/cf7d037) | songchenwen | Add fw_update Script | 595 | 596 | 597 | 598 | 599 | -------------- 600 | 601 | ## FriendlyWRT-2020-04-11-bf4fc77 602 | 603 | #### Builder [986d717..bf4fc77](https://github.com/songchenwen/nanopi-r2s/compare/986d717..bf4fc77) 604 | 605 | 606 | | Commit | Author | Desc | 607 | | :----- | :------| :--- | 608 | | [bf4fc77](https://github.com/songchenwen/nanopi-r2s/commit/bf4fc77) | songchenwen | Fix distfeeds | 609 | | [8dbef0a](https://github.com/songchenwen/nanopi-r2s/commit/8dbef0a) | songchenwen | Delete Some VPN apps from FwF | 610 | | [e8fef50](https://github.com/songchenwen/nanopi-r2s/commit/e8fef50) | songchenwen | Not Recommend FwF | 611 | 612 | 613 | #### FriendlyWRT [337ed97..c2699cd](https://github.com/friendlyarm/friendlywrt/compare/337ed97..c2699cd) 614 | 615 | 616 | | Commit | Author | Desc | 617 | | :----- | :------| :--- | 618 | | [c2699cd44b](https://github.com/friendlyarm/friendlywrt/commit/c2699cd44b) | Lawrence-Tang | Re-enable ipv6 | 619 | | [f2c4d64a95](https://github.com/friendlyarm/friendlywrt/commit/f2c4d64a95) | Lawrence-Tang | Revert "set default theme to argon" | 620 | 621 | 622 | 623 | 624 | -------------- 625 | 626 | ## FriendlyWRT-2020-04-11-986d717 627 | 628 | #### Builder [709f14c..986d717](https://github.com/songchenwen/nanopi-r2s/compare/709f14c..986d717) 629 | 630 | 631 | | Commit | Author | Desc | 632 | | :----- | :------| :--- | 633 | | [986d717](https://github.com/songchenwen/nanopi-r2s/commit/986d717) | songchenwen | Add luci-app-serverchan | 634 | | [db6fb00](https://github.com/songchenwen/nanopi-r2s/commit/db6fb00) | songchenwen | Default Configs in Read Me | 635 | | [7a72ee2](https://github.com/songchenwen/nanopi-r2s/commit/7a72ee2) | songchenwen | Remove Docker from FwF | 636 | 637 | 638 | 639 | 640 | -------------- 641 | 642 | ## FriendlyWRT-2020-04-10-709f14c 643 | 644 | #### Builder [676db71..709f14c](https://github.com/songchenwen/nanopi-r2s/compare/676db71..709f14c) 645 | 646 | 647 | | Commit | Author | Desc | 648 | | :----- | :------| :--- | 649 | | [709f14c](https://github.com/songchenwen/nanopi-r2s/commit/709f14c) | songchenwen | Revert "FriendlyWrt Unlock CPU 1.5Ghz" | 650 | | [6765452](https://github.com/songchenwen/nanopi-r2s/commit/6765452) | songchenwen | Add FriendlyWRT with Features | 651 | 652 | 653 | #### FriendlyWRT [1bedd70..337ed97](https://github.com/friendlyarm/friendlywrt/compare/1bedd70..337ed97) 654 | 655 | 656 | | Commit | Author | Desc | 657 | | :----- | :------| :--- | 658 | | [337ed979d3](https://github.com/friendlyarm/friendlywrt/commit/337ed979d3) | Lawrence-Tang | set default theme to argon | 659 | | [a51380eaea](https://github.com/friendlyarm/friendlywrt/commit/a51380eaea) | Lawrence-Tang | update luci | 660 | 661 | 662 | 663 | 664 | -------------- 665 | 666 | ## FriendlyWRT-2020-04-10-676db71 667 | 668 | #### Builder [f176cc1..676db71](https://github.com/songchenwen/nanopi-r2s/compare/f176cc1..676db71) 669 | 670 | 671 | | Commit | Author | Desc | 672 | | :----- | :------| :--- | 673 | | [676db71](https://github.com/songchenwen/nanopi-r2s/commit/676db71) | songchenwen | FriendlyWrt Unlock CPU 1.5Ghz | 674 | | [932d62a](https://github.com/songchenwen/nanopi-r2s/commit/932d62a) | songchenwen | Update README | 675 | | [78a07e4](https://github.com/songchenwen/nanopi-r2s/commit/78a07e4) | songchenwen | Add Some Performance Test | 676 | 677 | 678 | 679 | 680 | -------------- 681 | 682 | ## FriendlyWRT-2020-04-09-f176cc1 683 | 684 | #### Builder [ef49a2a..f176cc1](https://github.com/songchenwen/nanopi-r2s/compare/ef49a2a..f176cc1) 685 | 686 | 687 | | Commit | Author | Desc | 688 | | :----- | :------| :--- | 689 | | [f176cc1](https://github.com/songchenwen/nanopi-r2s/commit/f176cc1) | songchenwen | Add CPU Temperature to NetData | 690 | 691 | 692 | 693 | 694 | -------------- 695 | 696 | ## FriendlyWRT-2020-04-09-ef49a2a 697 | 698 | #### Builder [f2366d2..ef49a2a](https://github.com/songchenwen/nanopi-r2s/compare/f2366d2..ef49a2a) 699 | 700 | 701 | | Commit | Author | Desc | 702 | | :----- | :------| :--- | 703 | | [ef49a2a](https://github.com/songchenwen/nanopi-r2s/commit/ef49a2a) | songchenwen | Add luci-app-wrtbwmon | 704 | | [3aea628](https://github.com/songchenwen/nanopi-r2s/commit/3aea628) | songchenwen | Fix Kernel Patch | 705 | 706 | 707 | 708 | 709 | -------------- 710 | 711 | ## FriendlyWRT-2020-04-09-f2366d2 712 | 713 | #### Builder [433ce5a..f2366d2](https://github.com/songchenwen/nanopi-r2s/compare/433ce5a..f2366d2) 714 | 715 | 716 | | Commit | Author | Desc | 717 | | :----- | :------| :--- | 718 | | [f2366d2](https://github.com/songchenwen/nanopi-r2s/commit/f2366d2) | songchenwen | Reduce Update Frequency | 719 | | [7a54708](https://github.com/songchenwen/nanopi-r2s/commit/7a54708) | songchenwen | Add Version Indicator to FriendlyWRT | 720 | | [8e6d371](https://github.com/songchenwen/nanopi-r2s/commit/8e6d371) | songchenwen | Update FriendlyWRT | 721 | 722 | 723 | 724 | 725 | -------------- 726 | 727 | ## FriendlyWRT-2020-04-08-433ce5a 728 | 729 | #### Builder [d5cb2cd..433ce5a](https://github.com/songchenwen/nanopi-r2s/compare/d5cb2cd..433ce5a) 730 | 731 | 732 | | Commit | Author | Desc | 733 | | :----- | :------| :--- | 734 | | [433ce5a](https://github.com/songchenwen/nanopi-r2s/commit/433ce5a) | songchenwen | Add Clash Country.mmdb to Image | 735 | | [f770492](https://github.com/songchenwen/nanopi-r2s/commit/f770492) | songchenwen | Add LOL | 736 | 737 | 738 | #### Lean [cef6bff..dc875de](https://github.com/coolsnowwolf/lede/compare/cef6bff..dc875de) 739 | 740 | 741 | | Commit | Author | Desc | 742 | | :----- | :------| :--- | 743 | | [dc875de0](https://github.com/coolsnowwolf/lede/commit/dc875de0) | AmadeusGhost | kernel: netdev: add missing config for mlx5 driver (#4228) | 744 | | [b6b408c8](https://github.com/coolsnowwolf/lede/commit/b6b408c8) | lean | Version bump to R20.4.8 | 745 | | [6d92b607](https://github.com/coolsnowwolf/lede/commit/6d92b607) | lean | luci-app-music-remote-center: add place holder | 746 | | [25b01424](https://github.com/coolsnowwolf/lede/commit/25b01424) | lean | workflows: add dependenc host build | 747 | 748 | 749 | #### ScwPackage [35cc95f..49d75c3](https://github.com/songchenwen/openwrt-package/compare/35cc95f..49d75c3) 750 | 751 | 752 | | Commit | Author | Desc | 753 | | :----- | :------| :--- | 754 | | [964834569](https://github.com/songchenwen/openwrt-package/commit/964834569) | ShanStone | Fix chinadns-ng when using default dns (#408) | 755 | 756 | 757 | 758 | 759 | -------------- 760 | 761 | ## FriendlyWRT-2020-04-08-d5cb2cd 762 | 763 | #### Builder [f2031dc..d5cb2cd](https://github.com/songchenwen/nanopi-r2s/compare/f2031dc..d5cb2cd) 764 | 765 | 766 | | Commit | Author | Desc | 767 | | :----- | :------| :--- | 768 | | [d5cb2cd](https://github.com/songchenwen/nanopi-r2s/commit/d5cb2cd) | songchenwen | Add Some Openwrt 5.4 Kernel Patches to Lean | 769 | 770 | 771 | #### Lean [2a1f9e6..cef6bff](https://github.com/coolsnowwolf/lede/compare/2a1f9e6..cef6bff) 772 | 773 | 774 | | Commit | Author | Desc | 775 | | :----- | :------| :--- | 776 | | [cef6bffa](https://github.com/coolsnowwolf/lede/commit/cef6bffa) | ricksuzade-maker | Bump wireguard to 1.0.20200401 (#4217) | 777 | | [a1b538a9](https://github.com/coolsnowwolf/lede/commit/a1b538a9) | lean | ipq40xx: switch to ath10k-ct | 778 | | [f095b225](https://github.com/coolsnowwolf/lede/commit/f095b225) | AmadeusGhost | bcm27xx: rpi4: enable wifi in first boot (#4220) | 779 | | [c3c418cd](https://github.com/coolsnowwolf/lede/commit/c3c418cd) | lean | luci-app-cifs-mount: add SMB/CIFS mount luci | 780 | 781 | 782 | #### LeanPackage [a6f3a70..f35494f](https://github.com/coolsnowwolf/packages/compare/a6f3a70..f35494f) 783 | 784 | 785 | | Commit | Author | Desc | 786 | | :----- | :------| :--- | 787 | | [f35494fd7](https://github.com/coolsnowwolf/packages/commit/f35494fd7) | lean | minidlna: delay boot | 788 | 789 | 790 | 791 | 792 | -------------- 793 | 794 | ## FriendlyWRT-2020-04-07-f2031dc 795 | 796 | #### Builder [67e97af..f2031dc](https://github.com/songchenwen/nanopi-r2s/compare/67e97af..f2031dc) 797 | 798 | 799 | | Commit | Author | Desc | 800 | | :----- | :------| :--- | 801 | | [f2031dc](https://github.com/songchenwen/nanopi-r2s/commit/f2031dc) | songchenwen | Pack Passwall | 802 | | [a3d3f53](https://github.com/songchenwen/nanopi-r2s/commit/a3d3f53) | songchenwen | Upstream Full Cone Nat Change | 803 | 804 | 805 | #### Lean [b622523..2a1f9e6](https://github.com/coolsnowwolf/lede/compare/b622523..2a1f9e6) 806 | 807 | 808 | | Commit | Author | Desc | 809 | | :----- | :------| :--- | 810 | | [2a1f9e6f](https://github.com/coolsnowwolf/lede/commit/2a1f9e6f) | lean | target: add luci-app-music-remote-center | 811 | 812 | 813 | #### LeanPackage [22d1163..a6f3a70](https://github.com/coolsnowwolf/packages/compare/22d1163..a6f3a70) 814 | 815 | 816 | | Commit | Author | Desc | 817 | | :----- | :------| :--- | 818 | | [a6f3a702c](https://github.com/coolsnowwolf/packages/commit/a6f3a702c) | lean | minidlna:add webm/rm/rmvb format support | 819 | | [81b20fd92](https://github.com/coolsnowwolf/packages/commit/81b20fd92) | lean | minidlna: fix depence with ffmpeg | 820 | 821 | 822 | #### ScwPackage [1583d32..35cc95f](https://github.com/songchenwen/openwrt-package/compare/1583d32..35cc95f) 823 | 824 | 825 | | Commit | Author | Desc | 826 | | :----- | :------| :--- | 827 | | [af5a68836](https://github.com/songchenwen/openwrt-package/commit/af5a68836) | xiaorouji | passwall: chinadns-ng use fair mode | 828 | | [f1352e26a](https://github.com/songchenwen/openwrt-package/commit/f1352e26a) | xiaorouji | chinadns-ng: bump 1.0-bate.22 | 829 | 830 | 831 | 832 | 833 | -------------- 834 | 835 | ## FriendlyWRT-2020-04-07-67e97af 836 | 837 | #### Builder [21b1d35..67e97af](https://github.com/songchenwen/nanopi-r2s/compare/21b1d35..67e97af) 838 | 839 | 840 | | Commit | Author | Desc | 841 | | :----- | :------| :--- | 842 | | [67e97af](https://github.com/songchenwen/nanopi-r2s/commit/67e97af) | songchenwen | Add a Test Build with Openwrt Patches for octeontx | 843 | 844 | 845 | #### Lean [7e22d61..b622523](https://github.com/coolsnowwolf/lede/compare/7e22d61..b622523) 846 | 847 | 848 | | Commit | Author | Desc | 849 | | :----- | :------| :--- | 850 | | [b6225235](https://github.com/coolsnowwolf/lede/commit/b6225235) | AmadeusGhost | ramips: improve support for HiWiFi HC5962 (#4195) | 851 | | [e3cfa6d1](https://github.com/coolsnowwolf/lede/commit/e3cfa6d1) | R3pl4c3r | README.md: fix compile dependency error (#4201) | 852 | 853 | 854 | 855 | 856 | -------------- 857 | 858 | ## FriendlyWRT-2020-04-06-21b1d35 859 | 860 | #### Builder [6ca7b53..21b1d35](https://github.com/songchenwen/nanopi-r2s/compare/6ca7b53..21b1d35) 861 | 862 | 863 | | Commit | Author | Desc | 864 | | :----- | :------| :--- | 865 | | [21b1d35](https://github.com/songchenwen/nanopi-r2s/commit/21b1d35) | songchenwen | Clean Unused SRCs Before Building for Disk Space | 866 | | [8b94319](https://github.com/songchenwen/nanopi-r2s/commit/8b94319) | songchenwen | Fix File System Permissions | 867 | | [4261ef8](https://github.com/songchenwen/nanopi-r2s/commit/4261ef8) | 宋辰文 | Add luci-app-nfs | 868 | 869 | 870 | #### Lean [5e9e8d8..7e22d61](https://github.com/coolsnowwolf/lede/compare/5e9e8d8..7e22d61) 871 | 872 | 873 | | Commit | Author | Desc | 874 | | :----- | :------| :--- | 875 | | [7e22d613](https://github.com/coolsnowwolf/lede/commit/7e22d613) | lean | luci-app-music-remote-center: add zh-cn and fix path settings | 876 | | [7b250dee](https://github.com/coolsnowwolf/lede/commit/7b250dee) | lean | luci-app-music-remote-center: DAAP remote control music server for iOS/Android | 877 | | [7930a037](https://github.com/coolsnowwolf/lede/commit/7930a037) | Chuck | default-settings: fix string replace (#4189) | 878 | 879 | 880 | #### ScwPackage [3fa6c01..1583d32](https://github.com/songchenwen/openwrt-package/compare/3fa6c01..1583d32) 881 | 882 | 883 | | Commit | Author | Desc | 884 | | :----- | :------| :--- | 885 | | [950a544aa](https://github.com/songchenwen/openwrt-package/commit/950a544aa) | Lienol | passwall: optimize subscribe | 886 | | [5a47a8a57](https://github.com/songchenwen/openwrt-package/commit/5a47a8a57) | ShanStone | passwall: Fix blacklist by default proxy (#400) | 887 | 888 | 889 | 890 | 891 | -------------- 892 | 893 | ## FriendlyWRT-2020-04-05-6ca7b53 894 | 895 | #### Builder [70a1021..6ca7b53](https://github.com/songchenwen/nanopi-r2s/compare/70a1021..6ca7b53) 896 | 897 | 898 | | Commit | Author | Desc | 899 | | :----- | :------| :--- | 900 | | [6ca7b53](https://github.com/songchenwen/nanopi-r2s/commit/6ca7b53) | songchenwen | Add FriendlyWRT Build | 901 | 902 | 903 | #### Lean [d5dc714..5e9e8d8](https://github.com/coolsnowwolf/lede/compare/d5dc714..5e9e8d8) 904 | 905 | 906 | | Commit | Author | Desc | 907 | | :----- | :------| :--- | 908 | | [5e9e8d85](https://github.com/coolsnowwolf/lede/commit/5e9e8d85) | Aes64X | package:add nfs mount luci (#4171) | 909 | | [08637d82](https://github.com/coolsnowwolf/lede/commit/08637d82) | AmadeusGhost | ar71xx: fix alloc_page_frag issue (#4184) | 910 | | [91be31e2](https://github.com/coolsnowwolf/lede/commit/91be31e2) | CN_SZTL | mac80211: fix target name (#4176) | 911 | 912 | 913 | 914 | 915 | -------------- 916 | -------------------------------------------------------------------------------- /FriendlyWRT/README.md: -------------------------------------------------------------------------------- 1 | # FriendlyWRT 2 | 3 | 以官方固件为基础, 添加 Lean 的包 4 | 5 | [下载地址](https://github.com/songchenwen/nanopi-r2s/releases/download/FriendlyWRT-2020-07-04-935c67b/FriendlyWRT-2020-07-04-935c67b-ROM.zip) 6 | 7 | [改动记录](CHANGELOG.md) 8 | -------------------------------------------------------------------------------- /FriendlyWRT/repo_used_path.env: -------------------------------------------------------------------------------- 1 | Lean=package/lean/luci-app-autoreboot package/lean/luci-app-arpbind package/lean/luci-app-netdata package/lean/luci-app-nfs package/lean/luci-app-vlmcsd package/lean/luci-app-accesscontrol package/lean/luci-app-filetransfer 2 | LeanLuci=applications/luci-app-ddns applications/luci-app-watchcat applications/luci-app-wol modules 3 | LeanPackage=utils/collectd utils/bash utils/watchcat 4 | ScwPackage=lienol/luci-app-passwall lienol/luci-app-ramfree lienol/luci-theme-argon-dark-mod package 5 | OpenWrt=package/libs target/linux/generic target/linux/octeontx/patches-5.4 -------------------------------------------------------------------------------- /FriendlyWRT/status.env: -------------------------------------------------------------------------------- 1 | OpenWrtHash=b123ffd 2 | ServerChanHash=db547c1 3 | BuilderHash=935c67b 4 | FriendlyWRTHash=b2b9dc9 5 | ArgonHash=d4b2541 6 | LeanLuciHash=e5309d2 7 | KernelHash=bfe05f0 8 | AdguardHomeHash=37fdf50 9 | LeanHash=90e48a3 10 | LeanPackageHash=f220509 11 | ScwPackageHash=b3d72c7 12 | -------------------------------------------------------------------------------- /FriendlyWRTwPatches/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## FriendlyWRTwPatches-2020-04-09-433ce5a 2 | 3 | #### Lean [dc875de..ae7a5d7](https://github.com/coolsnowwolf/lede/compare/dc875de..ae7a5d7) 4 | 5 | 6 | | Commit | Author | Desc | 7 | | :----- | :------| :--- | 8 | | [ae7a5d70](https://github.com/coolsnowwolf/lede/commit/ae7a5d70) | dongjuanyong | luci-app-ssr-plus: OpenWrt SNAPSHOT compatibility (#4154) | 9 | | [df49785a](https://github.com/coolsnowwolf/lede/commit/df49785a) | lean | openwrt-ci.yml: update | 10 | | [12b558bb](https://github.com/coolsnowwolf/lede/commit/12b558bb) | lean | amule: dyn linked | 11 | | [7bf824b1](https://github.com/coolsnowwolf/lede/commit/7bf824b1) | lean | qBittorrent: bump to v4.2.3 | 12 | 13 | 14 | 15 | 16 | -------------- 17 | 18 | ## FriendlyWRTwPatches-2020-04-08-433ce5a 19 | 20 | #### Builder [d5cb2cd..433ce5a](https://github.com/songchenwen/nanopi-r2s/compare/d5cb2cd..433ce5a) 21 | 22 | 23 | | Commit | Author | Desc | 24 | | :----- | :------| :--- | 25 | | [433ce5a](https://github.com/songchenwen/nanopi-r2s/commit/433ce5a) | songchenwen | Add Clash Country.mmdb to Image | 26 | | [f770492](https://github.com/songchenwen/nanopi-r2s/commit/f770492) | songchenwen | Add LOL | 27 | 28 | 29 | #### Lean [cef6bff..dc875de](https://github.com/coolsnowwolf/lede/compare/cef6bff..dc875de) 30 | 31 | 32 | | Commit | Author | Desc | 33 | | :----- | :------| :--- | 34 | | [dc875de0](https://github.com/coolsnowwolf/lede/commit/dc875de0) | AmadeusGhost | kernel: netdev: add missing config for mlx5 driver (#4228) | 35 | | [b6b408c8](https://github.com/coolsnowwolf/lede/commit/b6b408c8) | lean | Version bump to R20.4.8 | 36 | | [6d92b607](https://github.com/coolsnowwolf/lede/commit/6d92b607) | lean | luci-app-music-remote-center: add place holder | 37 | | [25b01424](https://github.com/coolsnowwolf/lede/commit/25b01424) | lean | workflows: add dependenc host build | 38 | 39 | 40 | #### ScwPackage [35cc95f..49d75c3](https://github.com/songchenwen/openwrt-package/compare/35cc95f..49d75c3) 41 | 42 | 43 | | Commit | Author | Desc | 44 | | :----- | :------| :--- | 45 | | [964834569](https://github.com/songchenwen/openwrt-package/commit/964834569) | ShanStone | Fix chinadns-ng when using default dns (#408) | 46 | 47 | 48 | 49 | 50 | -------------- 51 | 52 | ## FriendlyWRTwPatches-2020-04-08-d5cb2cd 53 | 54 | #### Builder [f2031dc..d5cb2cd](https://github.com/songchenwen/nanopi-r2s/compare/f2031dc..d5cb2cd) 55 | 56 | 57 | | Commit | Author | Desc | 58 | | :----- | :------| :--- | 59 | | [d5cb2cd](https://github.com/songchenwen/nanopi-r2s/commit/d5cb2cd) | songchenwen | Add Some Openwrt 5.4 Kernel Patches to Lean | 60 | 61 | 62 | #### Lean [2a1f9e6..cef6bff](https://github.com/coolsnowwolf/lede/compare/2a1f9e6..cef6bff) 63 | 64 | 65 | | Commit | Author | Desc | 66 | | :----- | :------| :--- | 67 | | [cef6bffa](https://github.com/coolsnowwolf/lede/commit/cef6bffa) | ricksuzade-maker | Bump wireguard to 1.0.20200401 (#4217) | 68 | | [a1b538a9](https://github.com/coolsnowwolf/lede/commit/a1b538a9) | lean | ipq40xx: switch to ath10k-ct | 69 | | [f095b225](https://github.com/coolsnowwolf/lede/commit/f095b225) | AmadeusGhost | bcm27xx: rpi4: enable wifi in first boot (#4220) | 70 | | [c3c418cd](https://github.com/coolsnowwolf/lede/commit/c3c418cd) | lean | luci-app-cifs-mount: add SMB/CIFS mount luci | 71 | 72 | 73 | #### LeanPackage [a6f3a70..f35494f](https://github.com/coolsnowwolf/packages/compare/a6f3a70..f35494f) 74 | 75 | 76 | | Commit | Author | Desc | 77 | | :----- | :------| :--- | 78 | | [f35494fd7](https://github.com/coolsnowwolf/packages/commit/f35494fd7) | lean | minidlna: delay boot | 79 | 80 | 81 | 82 | 83 | -------------- 84 | 85 | ## FriendlyWRTwPatches-2020-04-07-f2031dc 86 | 87 | #### Builder [67e97af..f2031dc](https://github.com/songchenwen/nanopi-r2s/compare/67e97af..f2031dc) 88 | 89 | 90 | | Commit | Author | Desc | 91 | | :----- | :------| :--- | 92 | | [f2031dc](https://github.com/songchenwen/nanopi-r2s/commit/f2031dc) | songchenwen | Pack Passwall | 93 | | [a3d3f53](https://github.com/songchenwen/nanopi-r2s/commit/a3d3f53) | songchenwen | Upstream Full Cone Nat Change | 94 | 95 | 96 | #### Lean [b622523..2a1f9e6](https://github.com/coolsnowwolf/lede/compare/b622523..2a1f9e6) 97 | 98 | 99 | | Commit | Author | Desc | 100 | | :----- | :------| :--- | 101 | | [2a1f9e6f](https://github.com/coolsnowwolf/lede/commit/2a1f9e6f) | lean | target: add luci-app-music-remote-center | 102 | 103 | 104 | #### LeanPackage [22d1163..a6f3a70](https://github.com/coolsnowwolf/packages/compare/22d1163..a6f3a70) 105 | 106 | 107 | | Commit | Author | Desc | 108 | | :----- | :------| :--- | 109 | | [a6f3a702c](https://github.com/coolsnowwolf/packages/commit/a6f3a702c) | lean | minidlna:add webm/rm/rmvb format support | 110 | | [81b20fd92](https://github.com/coolsnowwolf/packages/commit/81b20fd92) | lean | minidlna: fix depence with ffmpeg | 111 | 112 | 113 | #### ScwPackage [1583d32..35cc95f](https://github.com/songchenwen/openwrt-package/compare/1583d32..35cc95f) 114 | 115 | 116 | | Commit | Author | Desc | 117 | | :----- | :------| :--- | 118 | | [af5a68836](https://github.com/songchenwen/openwrt-package/commit/af5a68836) | xiaorouji | passwall: chinadns-ng use fair mode | 119 | | [f1352e26a](https://github.com/songchenwen/openwrt-package/commit/f1352e26a) | xiaorouji | chinadns-ng: bump 1.0-bate.22 | 120 | 121 | 122 | 123 | 124 | -------------- 125 | 126 | ## FriendlyWRTwPatches-2020-04-06-67e97af 127 | 128 | #### Builder [21b1d35..67e97af](https://github.com/songchenwen/nanopi-r2s/compare/21b1d35..67e97af) 129 | 130 | 131 | | Commit | Author | Desc | 132 | | :----- | :------| :--- | 133 | | [67e97af](https://github.com/songchenwen/nanopi-r2s/commit/67e97af) | songchenwen | Add a Test Build with Openwrt Patches for octeontx | 134 | 135 | 136 | #### Lean [7e22d61..b622523](https://github.com/coolsnowwolf/lede/compare/7e22d61..b622523) 137 | 138 | 139 | | Commit | Author | Desc | 140 | | :----- | :------| :--- | 141 | | [b6225235](https://github.com/coolsnowwolf/lede/commit/b6225235) | AmadeusGhost | ramips: improve support for HiWiFi HC5962 (#4195) | 142 | | [e3cfa6d1](https://github.com/coolsnowwolf/lede/commit/e3cfa6d1) | R3pl4c3r | README.md: fix compile dependency error (#4201) | 143 | 144 | 145 | 146 | 147 | -------------- 148 | -------------------------------------------------------------------------------- /FriendlyWRTwPatches/status.env: -------------------------------------------------------------------------------- 1 | BuilderHash=433ce5a 2 | FriendlyWRTHash=1bedd70 3 | ArgonHash=3e41f5b 4 | LeanLuciHash=cebe120 5 | AdguardHomeHash=37fdf50 6 | LeanHash=ae7a5d7 7 | LeanPackageHash=f35494f 8 | ScwPackageHash=49d75c3 9 | -------------------------------------------------------------------------------- /FriendlyWRTwithFlowOffload/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## FriendlyWRTwithFlowOffload-2020-04-20-9b56dcc 2 | 3 | #### Builder [9a6851a..9b56dcc](https://github.com/songchenwen/nanopi-r2s/compare/9a6851a..9b56dcc) 4 | 5 | 6 | | Commit | Author | Desc | 7 | | :----- | :------| :--- | 8 | | [9b56dcc](https://github.com/songchenwen/nanopi-r2s/commit/9b56dcc) | songchenwen | Add Test Build with FlowOffload | 9 | 10 | 11 | 12 | 13 | -------------- 14 | 15 | 16 | -------------------------------------------------------------------------------- /FriendlyWRTwithFlowOffload/minimal_offload.seed: -------------------------------------------------------------------------------- 1 | CONFIG_AUTOREMOVE=y 2 | CONFIG_BUILD_PATENTED=y 3 | CONFIG_BRCMFMAC_SDIO=y 4 | CONFIG_IMAGEOPT=y 5 | CONFIG_KERNEL_AIO=y 6 | CONFIG_JSON_ADD_IMAGE_INFO=y 7 | CONFIG_KERNEL_ARM_PMU=y 8 | CONFIG_KERNEL_BLK_CGROUP=y 9 | CONFIG_KERNEL_BLK_DEV_THROTTLING=y 10 | CONFIG_KERNEL_BTRFS_FS_POSIX_ACL=y 11 | CONFIG_KERNEL_KALLSYMS=y 12 | CONFIG_KERNEL_PERF_EVENTS=y 13 | CONFIG_KERNEL_CGROUPS=y 14 | CONFIG_KERNEL_CGROUP_CPUACCT=y 15 | CONFIG_KERNEL_CGROUP_DEVICE=y 16 | CONFIG_KERNEL_CGROUP_FREEZER=y 17 | CONFIG_KERNEL_CGROUP_PIDS=y 18 | CONFIG_KERNEL_CGROUP_SCHED=y 19 | CONFIG_KERNEL_MEMCG=y 20 | CONFIG_KERNEL_MEMCG_KMEM=y 21 | CONFIG_KERNEL_MM_OWNER=y 22 | CONFIG_KERNEL_NETPRIO_CGROUP=y 23 | CONFIG_KERNEL_NET_CLS_CGROUP=y 24 | CONFIG_KERNEL_CPUSETS=y 25 | CONFIG_KERNEL_FAIR_GROUP_SCHED=y 26 | CONFIG_KERNEL_FANOTIFY=y 27 | CONFIG_KERNEL_FHANDLE=y 28 | CONFIG_KERNEL_FREEZER=y 29 | CONFIG_KERNEL_RESOURCE_COUNTERS=y 30 | CONFIG_KERNEL_RT_GROUP_SCHED=y 31 | CONFIG_LUCI_LANG_en=y 32 | CONFIG_LUCI_LANG_zh-cn=y 33 | CONFIG_LUCI_LANG_zh-tw=y 34 | CONFIG_PACKAGE_libustream-openssl=y 35 | CONFIG_PACKAGE_ca-bundle=y 36 | CONFIG_PACKAGE_ca-certificates=y 37 | CONFIG_PACKAGE_bash=y 38 | CONFIG_PACKAGE_wget=y 39 | CONFIG_PACKAGE_triggerhappy=y 40 | CONFIG_PACKAGE_uboot-envtools=y 41 | CONFIG_PACKAGE_usb-modeswitch=y 42 | CONFIG_PACKAGE_kmod-mmc=y 43 | CONFIG_PACKAGE_kmod-ikconfig=y 44 | CONFIG_PACKAGE_kmod-tun=y 45 | CONFIG_PACKAGE_kmod-usb-net=y 46 | CONFIG_PACKAGE_kmod-usb-net-rtl8150=y 47 | CONFIG_PACKAGE_kmod-usb-net-rtl8152=y 48 | CONFIG_PACKAGE_iw=y 49 | CONFIG_PACKAGE_iwinfo=y 50 | CONFIG_PACKAGE_hostapd=y 51 | CONFIG_PACKAGE_hostapd-basic=y 52 | CONFIG_PACKAGE_hostapd-utils=y 53 | CONFIG_PACKAGE_wpad=y 54 | CONFIG_PACKAGE_wpad-mini=y 55 | CONFIG_PACKAGE_wpa-supplicant=y 56 | CONFIG_DRIVER_11N_SUPPORT=y 57 | CONFIG_DRIVER_11AC_SUPPORT=y 58 | CONFIG_DRIVER_11W_SUPPORT=y 59 | CONFIG_PACKAGE_kmod-brcmfmac=y 60 | CONFIG_PACKAGE_kmod-cfg80211=y 61 | CONFIG_PACKAGE_ipv6helper=y 62 | CONFIG_PACKAGE_dnsmasq_full_dhcpv6=y 63 | CONFIG_OPENSSL_ENGINE_BUILTIN=y 64 | CONFIG_OPENSSL_ENGINE_BUILTIN_AFALG=y 65 | CONFIG_OPENSSL_OPTIMIZE_SPEED=y 66 | CONFIG_OPENSSL_WITH_DTLS=y 67 | CONFIG_OPENSSL_WITH_EC2M=y 68 | CONFIG_OPENSSL_WITH_NPN=y 69 | # CONFIG_OPENSSL_ENGINE_BUILTIN_DEVCRYPTO is not set 70 | # CONFIG_PACKAGE_kmod-cryptodev is not set 71 | # CONFIG_PACKAGE_libopenssl-devcrypto is not set 72 | CONFIG_LIBSODIUM_MINIMAL=y 73 | CONFIG_PACKAGE_kmod-ipt-offload=y 74 | CONFIG_PACKAGE_kmod-nft-offload=y 75 | CONFIG_PACKAGE_collectd-mod-thermal=y 76 | CONFIG_PACKAGE_collectd-mod-uptime=y 77 | CONFIG_PACKAGE_collectd-mod-wireless=y 78 | CONFIG_PACKAGE_collectd=y 79 | CONFIG_PACKAGE_curl=y 80 | CONFIG_PACKAGE_lrzsz=y 81 | CONFIG_PACKAGE_nano=y 82 | CONFIG_PACKAGE_bash=y 83 | CONFIG_PACKAGE_resolveip=y 84 | CONFIG_PACKAGE_sudo=y 85 | CONFIG_PACKAGE_tcping=y 86 | CONFIG_PACKAGE_autocore=y 87 | CONFIG_PACKAGE_htop=y 88 | CONFIG_PACKAGE_diffutils=y 89 | CONFIG_PACKAGE_vim-fuller=y 90 | CONFIG_PACKAGE_pv=y 91 | CONFIG_PACKAGE_pigz=y 92 | CONFIG_PACKAGE_unzip=y 93 | CONFIG_PACKAGE_ethtool=y 94 | CONFIG_PACKAGE_coreutils-nohup=y 95 | CONFIG_PACKAGE_coreutils-timeout=y 96 | CONFIG_PACKAGE_luci-app-opkg=y 97 | CONFIG_PACKAGE_iptables-mod-extra=y 98 | CONFIG_PACKAGE_kmod-ipt-extra=y 99 | CONFIG_PACKAGE_libltdl=y 100 | CONFIG_PACKAGE_losetup=y 101 | CONFIG_PACKAGE_zstd=y 102 | CONFIG_PACKAGE_brook=y 103 | CONFIG_PACKAGE_zlib=y 104 | CONFIG_PACKAGE_chinadns-ng=y 105 | CONFIG_PACKAGE_haproxy=y 106 | CONFIG_PACKAGE_kcptun-client=y 107 | CONFIG_PACKAGE_luci-app-upnp=y 108 | CONFIG_PACKAGE_luci-app-accesscontrol=y 109 | CONFIG_PACKAGE_luci-app-arpbind=y 110 | CONFIG_PACKAGE_luci-app-autoreboot=y 111 | CONFIG_PACKAGE_luci-app-ddns=y 112 | CONFIG_PACKAGE_ddns-scripts_cloudflare.com-v4=y 113 | CONFIG_PACKAGE_luci-app-filetransfer=y 114 | CONFIG_PACKAGE_luci-app-firewall=y 115 | CONFIG_PACKAGE_luci-app-ramfree=y 116 | CONFIG_PACKAGE_luci-app-netdata=y 117 | CONFIG_PACKAGE_luci-app-vlmcsd=y 118 | CONFIG_PACKAGE_luci-app-wol=y 119 | CONFIG_PACKAGE_luci-app-serverchan=y 120 | CONFIG_PACKAGE_luci-app-fileassistant=y 121 | CONFIG_PACKAGE_luci-app-r2sflasher=y 122 | CONFIG_PACKAGE_luci-app-passwall=y 123 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Brook=y 124 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Shadowsocks=y 125 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_ShadowsocksR_socks=y 126 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Shadowsocks_socks=y 127 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Trojan=y 128 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_kcptun=y 129 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_simple-obfs=y 130 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_v2ray-plugin=y 131 | CONFIG_PACKAGE_v2ray-plugin=y 132 | CONFIG_PACKAGE_v2ray=y 133 | CONFIG_PACKAGE_luci-app-flowoffload=y 134 | # CONFIG_V2RAY_COMPRESS_GOPROXY is not set 135 | # CONFIG_V2RAY_JSON_V2CTL is not set 136 | CONFIG_V2RAY_JSON_INTERNAL=y 137 | # CONFIG_V2RAY_JSON_NONE is not set 138 | CONFIG_V2RAY_EXCLUDE_V2CTL=y 139 | CONFIG_V2RAY_EXCLUDE_ASSETS=y 140 | # CONFIG_V2RAY_COMPRESS_UPX is not set 141 | CONFIG_V2RAY_DISABLE_NONE=y 142 | # CONFIG_V2RAY_DISABLE_CUSTOM is not set 143 | CONFIG_PACKAGE_luci-app-adguardhome=y 144 | CONFIG_PACKAGE_luci-theme-argon=y 145 | CONFIG_PACKAGE_luci-theme-argon-dark-mod=y 146 | # CONFIG_PACKAGE_samba36-server is not set 147 | # CONFIG_PACKAGE_autosamba is not set 148 | # CONFIG_PACKAGE_luci-app-samba is not set 149 | # CONFIG_PACKAGE_wsdd2 is not set 150 | # CONFIG_PACKAGE_luci-app-adbyby-plus is not set 151 | # CONFIG_PACKAGE_luci-app-ipsec-vpnd is not set 152 | # CONFIG_PACKAGE_luci-app-wrtbwmon is not set 153 | # CONFIG_PACKAGE_luci-app-nlbwmon is not set 154 | # CONFIG_PACKAGE_luci-app-ssr-plus is not set 155 | # CONFIG_PACKAGE_luci-app-ssr-plus_INCLUDE_Redsocks2 is not set 156 | # CONFIG_PACKAGE_luci-app-ssr-plus_INCLUDE_ShadowsocksR_Server is not set 157 | # CONFIG_PACKAGE_luci-app-ssr-plus_INCLUDE_Trojan is not set 158 | # CONFIG_PACKAGE_luci-app-ssr-plus_INCLUDE_V2ray is not set 159 | # CONFIG_PACKAGE_luci-app-ssr-plus_INCLUDE_V2ray_plugin is not set 160 | # CONFIG_PACKAGE_luci-app-unblockmusic is not set 161 | # CONFIG_PACKAGE_luci-app-vsftpd is not set 162 | # CONFIG_PACKAGE_luci-app-xlnetacc is not set 163 | # CONFIG_PACKAGE_luci-app-zerotier is not set 164 | # CONFIG_PACKAGE_iptables-mod-ipsec is not set 165 | # CONFIG_PACKAGE_kmod-ipt-ipsec is not set 166 | # CONFIG_PACKAGE_kmod-iptunnel6 is not set 167 | # CONFIG_PACKAGE_kmod-nf-conntrack-netlink is not set 168 | # CONFIG_PACKAGE_libcares is not set 169 | # CONFIG_PACKAGE_libevent2 is not set 170 | # CONFIG_PACKAGE_libgmp is not set 171 | # CONFIG_PACKAGE_libhttp-parser is not set 172 | # CONFIG_PACKAGE_libnatpmp is not set 173 | # CONFIG_PACKAGE_libnet-1.2.x is not set 174 | # CONFIG_PACKAGE_libnghttp2 is not set 175 | # CONFIG_PACKAGE_libpcap is not set 176 | # CONFIG_PACKAGE_libuv is not set 177 | # CONFIG_PACKAGE_kmod-ipsec is not set 178 | # CONFIG_PACKAGE_microsocks is not set 179 | # CONFIG_PACKAGE_nlbwmon is not set 180 | # CONFIG_PACKAGE_node is not set 181 | # CONFIG_PACKAGE_redsocks2 is not set 182 | # CONFIG_PACKAGE_shadowsocksr-libev-server is not set 183 | # CONFIG_PACKAGE_strongswan is not set 184 | # CONFIG_PACKAGE_strongswan-charon is not set 185 | # CONFIG_PACKAGE_strongswan-ipsec is not set 186 | # CONFIG_PACKAGE_strongswan-minimal is not set 187 | # CONFIG_PACKAGE_strongswan-mod-aes is not set 188 | # CONFIG_PACKAGE_strongswan-mod-gmp is not set 189 | # CONFIG_PACKAGE_strongswan-mod-hmac is not set 190 | # CONFIG_PACKAGE_strongswan-mod-kernel-netlink is not set 191 | # CONFIG_PACKAGE_strongswan-mod-nonce is not set 192 | # CONFIG_PACKAGE_strongswan-mod-pubkey is not set 193 | # CONFIG_PACKAGE_strongswan-mod-random is not set 194 | # CONFIG_PACKAGE_strongswan-mod-sha1 is not set 195 | # CONFIG_PACKAGE_strongswan-mod-socket-default is not set 196 | # CONFIG_PACKAGE_strongswan-mod-stroke is not set 197 | # CONFIG_PACKAGE_strongswan-mod-updown is not set 198 | # CONFIG_PACKAGE_strongswan-mod-x509 is not set 199 | # CONFIG_PACKAGE_strongswan-mod-xauth-generic is not set 200 | # CONFIG_PACKAGE_strongswan-mod-xcbc is not set 201 | # CONFIG_PACKAGE_tcpping is not set 202 | # CONFIG_PACKAGE_UnblockNeteaseMusic is not set 203 | # CONFIG_PACKAGE_UnblockNeteaseMusicGo is not set 204 | # CONFIG_PACKAGE_adbyby is not set 205 | # CONFIG_PACKAGE_vsftpd-alt is not set 206 | # CONFIG_PACKAGE_zerotier is not set 207 | # CONFIG_UnblockNeteaseMusic_Go is not set 208 | # CONFIG_UnblockNeteaseMusic_NodeJS is not set 209 | -------------------------------------------------------------------------------- /FriendlyWRTwithFlowOffload/repo_used_path.env: -------------------------------------------------------------------------------- 1 | Lean=package/lean/luci-app-autoreboot package/lean/luci-app-arpbind package/lean/luci-app-netdata package/lean/luci-app-nfs package/lean/luci-app-vlmcsd package/lean/luci-app-accesscontrol package/lean/luci-app-filetransfer 2 | LeanLuci=applications/luci-app-ddns applications/luci-app-watchcat applications/luci-app-wol modules 3 | LeanPackage=utils/collectd utils/bash utils/watchcat 4 | ScwPackage=lienol/luci-app-passwall lienol/luci-app-ramfree lienol/luci-theme-argon-dark-mod package -------------------------------------------------------------------------------- /FriendlyWRTwithFlowOffload/status.env: -------------------------------------------------------------------------------- 1 | ServerChanHash=c15251d 2 | BuilderHash=9b56dcc 3 | FriendlyWRTHash=6025df0 4 | ArgonHash=3e41f5b 5 | LeanLuciHash=cebe120 6 | AdguardHomeHash=37fdf50 7 | LeanHash=c331181 8 | LeanPackageHash=f35494f 9 | ScwPackageHash=6f5d6af 10 | -------------------------------------------------------------------------------- /FwF/README.md: -------------------------------------------------------------------------------- 1 | # FwF 2 | 3 | FriendlyWRT with Features 4 | 5 | 在[FriendlyWRT](../FriendlyWRT)的基础上,添加了更多功能。 6 | 7 | [下载地址](https://github.com/songchenwen/nanopi-r2s/releases/download/FwF-2020-06-30-8affca1/FwF-2020-06-30-8affca1-ROM.zip) 8 | 9 | [改动记录](CHANGELOG.md) 10 | -------------------------------------------------------------------------------- /FwF/repo_used_path.env: -------------------------------------------------------------------------------- 1 | Lean=package/lean 2 | LeanLuci=applications modules 3 | LeanPackage=utils 4 | ScwPackage=lienol package 5 | OpenWrt=package/libs target/linux/generic target/linux/octeontx/patches-5.4 -------------------------------------------------------------------------------- /FwF/status.env: -------------------------------------------------------------------------------- 1 | OpenWrtHash=5667ccb 2 | ServerChanHash=db547c1 3 | BuilderHash=8affca1 4 | FriendlyWRTHash=b2b9dc9 5 | ArgonHash=6bab4a8 6 | LeanLuciHash=de9fdad 7 | KernelHash=bfe05f0 8 | AdguardHomeHash=37fdf50 9 | LeanHash=c0f3364 10 | SSRPHash=b07579f 11 | LeanPackageHash=3a9986e 12 | ScwPackageHash=b3d72c7 13 | -------------------------------------------------------------------------------- /LOL/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## LOL-2020-04-17-9f73416 2 | 3 | #### Builder [94a2747..9f73416](https://github.com/songchenwen/nanopi-r2s/compare/94a2747..9f73416) 4 | 5 | 6 | | Commit | Author | Desc | 7 | | :----- | :------| :--- | 8 | | [9f73416](https://github.com/songchenwen/nanopi-r2s/commit/9f73416) | songchenwen | Update R2S Flasher | 9 | | [2ff8b7e](https://github.com/songchenwen/nanopi-r2s/commit/2ff8b7e) | songchenwen | Add Download URL to luci-app-r2sflasher | 10 | | [d7e657a](https://github.com/songchenwen/nanopi-r2s/commit/d7e657a) | songchenwen | Fix SSRP | 11 | 12 | 13 | 14 | 15 | -------------- 16 | 17 | ## LOL-2020-04-16-94a2747 18 | 19 | #### Builder [2e348ea..94a2747](https://github.com/songchenwen/nanopi-r2s/compare/2e348ea..94a2747) 20 | 21 | 22 | | Commit | Author | Desc | 23 | | :----- | :------| :--- | 24 | | [94a2747](https://github.com/songchenwen/nanopi-r2s/commit/94a2747) | songchenwen | Update r2sflasher Dependency | 25 | 26 | 27 | 28 | 29 | -------------- 30 | 31 | ## LOL-2020-04-15-2e348ea 32 | 33 | #### Builder [06ca030..2e348ea](https://github.com/songchenwen/nanopi-r2s/compare/06ca030..2e348ea) 34 | 35 | 36 | | Commit | Author | Desc | 37 | | :----- | :------| :--- | 38 | | [2e348ea](https://github.com/songchenwen/nanopi-r2s/commit/2e348ea) | songchenwen | Add Separated Read Me File to Avoid Merge Conflict | 39 | 40 | 41 | 42 | 43 | -------------- 44 | 45 | ## LOL-2020-04-15-06ca030 46 | 47 | #### Builder [b7c1390..06ca030](https://github.com/songchenwen/nanopi-r2s/compare/b7c1390..06ca030) 48 | 49 | 50 | | Commit | Author | Desc | 51 | | :----- | :------| :--- | 52 | | [06ca030](https://github.com/songchenwen/nanopi-r2s/commit/06ca030) | songchenwen | Update README | 53 | | [73d70f6](https://github.com/songchenwen/nanopi-r2s/commit/73d70f6) | songchenwen | README about friendlywrt | 54 | | [f666d0b](https://github.com/songchenwen/nanopi-r2s/commit/f666d0b) | songchenwen | Add ETH Tool and Cloudflare DDNS | 55 | | [6921e05](https://github.com/songchenwen/nanopi-r2s/commit/6921e05) | songchenwen | Edit R2S Flasher ROM Page | 56 | | [c4df26f](https://github.com/songchenwen/nanopi-r2s/commit/c4df26f) | songchenwen | luci-app-r2sflasher support img.zip file | 57 | | [929220a](https://github.com/songchenwen/nanopi-r2s/commit/929220a) | songchenwen | fix elfutils | 58 | | [c5c7214](https://github.com/songchenwen/nanopi-r2s/commit/c5c7214) | songchenwen | Try another way to fix elfutils | 59 | | [3a014f1](https://github.com/songchenwen/nanopi-r2s/commit/3a014f1) | songchenwen | Try to fix elfutils | 60 | 61 | 62 | #### FriendlyWRT [5ebce56..6025df0](https://github.com/friendlyarm/friendlywrt/compare/5ebce56..6025df0) 63 | 64 | 65 | | Commit | Author | Desc | 66 | | :----- | :------| :--- | 67 | | [6025df0352](https://github.com/friendlyarm/friendlywrt/commit/6025df0352) | Lawrence-Tang | initial settings for ttyd, samba, watchcat | 68 | | [6ba702543b](https://github.com/friendlyarm/friendlywrt/commit/6ba702543b) | Lawrence-Tang | rk3328: add support for rtl8822bu | 69 | 70 | 71 | 72 | 73 | -------------- 74 | 75 | ## LOL-2020-04-14-b7c1390 76 | 77 | #### Builder [f8b0fae..b7c1390](https://github.com/songchenwen/nanopi-r2s/compare/f8b0fae..b7c1390) 78 | 79 | 80 | | Commit | Author | Desc | 81 | | :----- | :------| :--- | 82 | | [b7c1390](https://github.com/songchenwen/nanopi-r2s/commit/b7c1390) | songchenwen | Remove Gzip Dependency of r2s flasher | 83 | | [7ab12ae](https://github.com/songchenwen/nanopi-r2s/commit/7ab12ae) | songchenwen | add luci-app-r2sflasher | 84 | | [9b5cf06](https://github.com/songchenwen/nanopi-r2s/commit/9b5cf06) | songchenwen | No Bench Mark for FriendlyWRT | 85 | 86 | 87 | #### FriendlyWRT [c2699cd..5ebce56](https://github.com/friendlyarm/friendlywrt/compare/c2699cd..5ebce56) 88 | 89 | 90 | | Commit | Author | Desc | 91 | | :----- | :------| :--- | 92 | | [5ebce5620b](https://github.com/friendlyarm/friendlywrt/commit/5ebce5620b) | Lawrence-Tang | add p7zip | 93 | 94 | 95 | 96 | 97 | -------------- 98 | 99 | ## LOL-2020-04-13-f8b0fae 100 | 101 | #### Builder [cf7d037..f8b0fae](https://github.com/songchenwen/nanopi-r2s/compare/cf7d037..f8b0fae) 102 | 103 | 104 | | Commit | Author | Desc | 105 | | :----- | :------| :--- | 106 | | [f8b0fae](https://github.com/songchenwen/nanopi-r2s/commit/f8b0fae) | songchenwen | add luci-app-filebrowser | 107 | | [d04ccd6](https://github.com/songchenwen/nanopi-r2s/commit/d04ccd6) | songchenwen | Remove nfs add v2ray and wget | 108 | 109 | 110 | 111 | 112 | -------------- 113 | 114 | ## LOL-2020-04-11-cf7d037 115 | 116 | #### Builder [986d717..cf7d037](https://github.com/songchenwen/nanopi-r2s/compare/986d717..cf7d037) 117 | 118 | 119 | | Commit | Author | Desc | 120 | | :----- | :------| :--- | 121 | | [cf7d037](https://github.com/songchenwen/nanopi-r2s/commit/cf7d037) | songchenwen | Add fw_update Script | 122 | | [bf4fc77](https://github.com/songchenwen/nanopi-r2s/commit/bf4fc77) | songchenwen | Fix distfeeds | 123 | | [8dbef0a](https://github.com/songchenwen/nanopi-r2s/commit/8dbef0a) | songchenwen | Delete Some VPN apps from FwF | 124 | | [e8fef50](https://github.com/songchenwen/nanopi-r2s/commit/e8fef50) | songchenwen | Not Recommend FwF | 125 | 126 | 127 | #### FriendlyWRT [337ed97..c2699cd](https://github.com/friendlyarm/friendlywrt/compare/337ed97..c2699cd) 128 | 129 | 130 | | Commit | Author | Desc | 131 | | :----- | :------| :--- | 132 | | [c2699cd44b](https://github.com/friendlyarm/friendlywrt/commit/c2699cd44b) | Lawrence-Tang | Re-enable ipv6 | 133 | | [f2c4d64a95](https://github.com/friendlyarm/friendlywrt/commit/f2c4d64a95) | Lawrence-Tang | Revert "set default theme to argon" | 134 | 135 | 136 | 137 | 138 | -------------- 139 | 140 | ## LOL-2020-04-11-986d717 141 | 142 | #### Builder [3aea628..986d717](https://github.com/songchenwen/nanopi-r2s/compare/3aea628..986d717) 143 | 144 | 145 | | Commit | Author | Desc | 146 | | :----- | :------| :--- | 147 | | [986d717](https://github.com/songchenwen/nanopi-r2s/commit/986d717) | songchenwen | Add luci-app-serverchan | 148 | | [db6fb00](https://github.com/songchenwen/nanopi-r2s/commit/db6fb00) | songchenwen | Default Configs in Read Me | 149 | | [7a72ee2](https://github.com/songchenwen/nanopi-r2s/commit/7a72ee2) | songchenwen | Remove Docker from FwF | 150 | | [709f14c](https://github.com/songchenwen/nanopi-r2s/commit/709f14c) | songchenwen | Revert "FriendlyWrt Unlock CPU 1.5Ghz" | 151 | | [6765452](https://github.com/songchenwen/nanopi-r2s/commit/6765452) | songchenwen | Add FriendlyWRT with Features | 152 | | [676db71](https://github.com/songchenwen/nanopi-r2s/commit/676db71) | songchenwen | FriendlyWrt Unlock CPU 1.5Ghz | 153 | | [932d62a](https://github.com/songchenwen/nanopi-r2s/commit/932d62a) | songchenwen | Update README | 154 | | [78a07e4](https://github.com/songchenwen/nanopi-r2s/commit/78a07e4) | songchenwen | Add Some Performance Test | 155 | | [f176cc1](https://github.com/songchenwen/nanopi-r2s/commit/f176cc1) | songchenwen | Add CPU Temperature to NetData | 156 | | [ef49a2a](https://github.com/songchenwen/nanopi-r2s/commit/ef49a2a) | songchenwen | Add luci-app-wrtbwmon | 157 | 158 | 159 | #### FriendlyWRT [1bedd70..337ed97](https://github.com/friendlyarm/friendlywrt/compare/1bedd70..337ed97) 160 | 161 | 162 | | Commit | Author | Desc | 163 | | :----- | :------| :--- | 164 | | [337ed979d3](https://github.com/friendlyarm/friendlywrt/commit/337ed979d3) | Lawrence-Tang | set default theme to argon | 165 | | [a51380eaea](https://github.com/friendlyarm/friendlywrt/commit/a51380eaea) | Lawrence-Tang | update luci | 166 | 167 | 168 | 169 | 170 | -------------- 171 | 172 | ## LOL-2020-04-09-3aea628 173 | 174 | #### Builder [433ce5a..3aea628](https://github.com/songchenwen/nanopi-r2s/compare/433ce5a..3aea628) 175 | 176 | 177 | | Commit | Author | Desc | 178 | | :----- | :------| :--- | 179 | | [3aea628](https://github.com/songchenwen/nanopi-r2s/commit/3aea628) | songchenwen | Fix Kernel Patch | 180 | | [f2366d2](https://github.com/songchenwen/nanopi-r2s/commit/f2366d2) | songchenwen | Reduce Update Frequency | 181 | | [7a54708](https://github.com/songchenwen/nanopi-r2s/commit/7a54708) | songchenwen | Add Version Indicator to FriendlyWRT | 182 | | [8e6d371](https://github.com/songchenwen/nanopi-r2s/commit/8e6d371) | songchenwen | Update FriendlyWRT | 183 | 184 | 185 | 186 | 187 | -------------- 188 | 189 | ## LOL-2020-04-09-433ce5a 190 | 191 | #### Builder [f770492..433ce5a](https://github.com/songchenwen/nanopi-r2s/compare/f770492..433ce5a) 192 | 193 | 194 | | Commit | Author | Desc | 195 | | :----- | :------| :--- | 196 | | [433ce5a](https://github.com/songchenwen/nanopi-r2s/commit/433ce5a) | songchenwen | Add Clash Country.mmdb to Image | 197 | 198 | 199 | 200 | 201 | -------------- 202 | 203 | ## LOL-2020-04-08-f770492 204 | 205 | #### Builder [67e97af..f770492](https://github.com/songchenwen/nanopi-r2s/compare/67e97af..f770492) 206 | 207 | 208 | | Commit | Author | Desc | 209 | | :----- | :------| :--- | 210 | | [f770492](https://github.com/songchenwen/nanopi-r2s/commit/f770492) | songchenwen | Add LOL | 211 | | [d5cb2cd](https://github.com/songchenwen/nanopi-r2s/commit/d5cb2cd) | songchenwen | Add Some Openwrt 5.4 Kernel Patches to Lean | 212 | | [f2031dc](https://github.com/songchenwen/nanopi-r2s/commit/f2031dc) | songchenwen | Pack Passwall | 213 | | [a3d3f53](https://github.com/songchenwen/nanopi-r2s/commit/a3d3f53) | songchenwen | Upstream Full Cone Nat Change | 214 | 215 | 216 | #### Lean [b622523..d37042d](https://github.com/coolsnowwolf/lede/compare/b622523..d37042d) 217 | 218 | 219 | 220 | 221 | #### ScwPackage [1583d32..49d75c3](https://github.com/songchenwen/openwrt-package/compare/1583d32..49d75c3) 222 | 223 | 224 | | Commit | Author | Desc | 225 | | :----- | :------| :--- | 226 | | [964834569](https://github.com/songchenwen/openwrt-package/commit/964834569) | ShanStone | Fix chinadns-ng when using default dns (#408) | 227 | | [af5a68836](https://github.com/songchenwen/openwrt-package/commit/af5a68836) | xiaorouji | passwall: chinadns-ng use fair mode | 228 | | [f1352e26a](https://github.com/songchenwen/openwrt-package/commit/f1352e26a) | xiaorouji | chinadns-ng: bump 1.0-bate.22 | 229 | 230 | 231 | 232 | 233 | -------------- 234 | -------------------------------------------------------------------------------- /LOL/README.md: -------------------------------------------------------------------------------- 1 | # LOL 2 | 3 | 以 [Lienol on Lean](https://github.com/Lienol/openwrt/tree/dev-lean-lede) 为基础, 增加 FriendlyWRT 对 OpenWRT 的改动 4 | 5 | [下载地址](https://github.com/songchenwen/nanopi-r2s/releases/download/LOL-2020-04-17-9f73416/LOL-2020-04-17-9f73416-ROM.zip) 6 | 7 | [改动记录](CHANGELOG.md) 8 | -------------------------------------------------------------------------------- /LOL/rebase_on_lienol.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cd friendlywrt-rk3328 3 | find device/ -name distfeeds.conf -delete 4 | cd friendlywrt 5 | git config --global user.email "action@github.com" && git config --global user.name "GitHub Action" 6 | git remote add upstream https://github.com/Lienol/openwrt.git && git fetch upstream 7 | git checkout upstream/dev-lean-lede -b tmp 8 | ../../set_repo_hash.sh Lienol 9 | git mv README.md README && git commit -m 'undo rename readme for rebasing' 10 | git checkout origin/master-v19.07.1 11 | git rebase adc1a9a3676b8d7be1b48b5aed185a94d8e42728^ --onto tmp -X ours 12 | echo "" 13 | git status 14 | echo "" 15 | git checkout upstream/dev-lean-lede -- feeds.conf.default 16 | git checkout upstream/dev-lean-lede -- package/kernel/mac80211/files/lib/netifd/mac80211.sh 17 | echo "" 18 | git status 19 | echo "" 20 | echo "feeds.conf.default" 21 | cat feeds.conf.default 22 | -------------------------------------------------------------------------------- /LOL/repo_used_path.env: -------------------------------------------------------------------------------- 1 | LeanLuci=applications/luci-app-ddns applications/luci-app-watchcat applications/luci-app-wol modules 2 | LeanPackage=utils/collectd utils/bash utils/watchcat 3 | ScwPackage=lienol/luci-app-passwall lienol/luci-app-ramfree lienol/luci-theme-argon-dark-mod package -------------------------------------------------------------------------------- /LOL/status.env: -------------------------------------------------------------------------------- 1 | ServerChanHash=5ae8cd2 2 | BuilderHash=9f73416 3 | LienolHash=b9e21ca 4 | FriendlyWRTHash=6025df0 5 | ArgonHash=3e41f5b 6 | AdguardHomeHash=37fdf50 7 | ScwPackageHash=6f5d6af 8 | -------------------------------------------------------------------------------- /Lean/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## Lean-2020-04-17-9f73416 2 | 3 | #### Builder [94a2747..9f73416](https://github.com/songchenwen/nanopi-r2s/compare/94a2747..9f73416) 4 | 5 | 6 | | Commit | Author | Desc | 7 | | :----- | :------| :--- | 8 | | [9f73416](https://github.com/songchenwen/nanopi-r2s/commit/9f73416) | songchenwen | Update R2S Flasher | 9 | | [2ff8b7e](https://github.com/songchenwen/nanopi-r2s/commit/2ff8b7e) | songchenwen | Add Download URL to luci-app-r2sflasher | 10 | | [d7e657a](https://github.com/songchenwen/nanopi-r2s/commit/d7e657a) | songchenwen | Fix SSRP | 11 | 12 | 13 | 14 | 15 | -------------- 16 | 17 | ## Lean-2020-04-16-94a2747 18 | 19 | #### Builder [2e348ea..94a2747](https://github.com/songchenwen/nanopi-r2s/compare/2e348ea..94a2747) 20 | 21 | 22 | | Commit | Author | Desc | 23 | | :----- | :------| :--- | 24 | | [94a2747](https://github.com/songchenwen/nanopi-r2s/commit/94a2747) | songchenwen | Update r2sflasher Dependency | 25 | 26 | 27 | 28 | 29 | -------------- 30 | 31 | ## Lean-2020-04-15-2e348ea 32 | 33 | #### Builder [b7c1390..2e348ea](https://github.com/songchenwen/nanopi-r2s/compare/b7c1390..2e348ea) 34 | 35 | 36 | | Commit | Author | Desc | 37 | | :----- | :------| :--- | 38 | | [2e348ea](https://github.com/songchenwen/nanopi-r2s/commit/2e348ea) | songchenwen | Add Separated Read Me File to Avoid Merge Conflict | 39 | | [06ca030](https://github.com/songchenwen/nanopi-r2s/commit/06ca030) | songchenwen | Update README | 40 | | [73d70f6](https://github.com/songchenwen/nanopi-r2s/commit/73d70f6) | songchenwen | README about friendlywrt | 41 | | [f666d0b](https://github.com/songchenwen/nanopi-r2s/commit/f666d0b) | songchenwen | Add ETH Tool and Cloudflare DDNS | 42 | | [6921e05](https://github.com/songchenwen/nanopi-r2s/commit/6921e05) | songchenwen | Edit R2S Flasher ROM Page | 43 | | [c4df26f](https://github.com/songchenwen/nanopi-r2s/commit/c4df26f) | songchenwen | luci-app-r2sflasher support img.zip file | 44 | | [929220a](https://github.com/songchenwen/nanopi-r2s/commit/929220a) | songchenwen | fix elfutils | 45 | | [c5c7214](https://github.com/songchenwen/nanopi-r2s/commit/c5c7214) | songchenwen | Try another way to fix elfutils | 46 | | [3a014f1](https://github.com/songchenwen/nanopi-r2s/commit/3a014f1) | songchenwen | Try to fix elfutils | 47 | 48 | 49 | #### FriendlyWRT [5ebce56..6025df0](https://github.com/friendlyarm/friendlywrt/compare/5ebce56..6025df0) 50 | 51 | 52 | | Commit | Author | Desc | 53 | | :----- | :------| :--- | 54 | | [6025df0352](https://github.com/friendlyarm/friendlywrt/commit/6025df0352) | Lawrence-Tang | initial settings for ttyd, samba, watchcat | 55 | | [6ba702543b](https://github.com/friendlyarm/friendlywrt/commit/6ba702543b) | Lawrence-Tang | rk3328: add support for rtl8822bu | 56 | 57 | 58 | 59 | 60 | -------------- 61 | 62 | ## Lean-2020-04-14-b7c1390 63 | 64 | #### Builder [f8b0fae..b7c1390](https://github.com/songchenwen/nanopi-r2s/compare/f8b0fae..b7c1390) 65 | 66 | 67 | | Commit | Author | Desc | 68 | | :----- | :------| :--- | 69 | | [b7c1390](https://github.com/songchenwen/nanopi-r2s/commit/b7c1390) | songchenwen | Remove Gzip Dependency of r2s flasher | 70 | | [7ab12ae](https://github.com/songchenwen/nanopi-r2s/commit/7ab12ae) | songchenwen | add luci-app-r2sflasher | 71 | | [9b5cf06](https://github.com/songchenwen/nanopi-r2s/commit/9b5cf06) | songchenwen | No Bench Mark for FriendlyWRT | 72 | 73 | 74 | #### FriendlyWRT [c2699cd..5ebce56](https://github.com/friendlyarm/friendlywrt/compare/c2699cd..5ebce56) 75 | 76 | 77 | | Commit | Author | Desc | 78 | | :----- | :------| :--- | 79 | | [5ebce5620b](https://github.com/friendlyarm/friendlywrt/commit/5ebce5620b) | Lawrence-Tang | add p7zip | 80 | 81 | 82 | 83 | 84 | -------------- 85 | 86 | ## Lean-2020-04-13-f8b0fae 87 | 88 | #### Builder [cf7d037..f8b0fae](https://github.com/songchenwen/nanopi-r2s/compare/cf7d037..f8b0fae) 89 | 90 | 91 | | Commit | Author | Desc | 92 | | :----- | :------| :--- | 93 | | [f8b0fae](https://github.com/songchenwen/nanopi-r2s/commit/f8b0fae) | songchenwen | add luci-app-filebrowser | 94 | | [d04ccd6](https://github.com/songchenwen/nanopi-r2s/commit/d04ccd6) | songchenwen | Remove nfs add v2ray and wget | 95 | 96 | 97 | 98 | 99 | -------------- 100 | 101 | ## Lean-2020-04-11-cf7d037 102 | 103 | #### Builder [986d717..cf7d037](https://github.com/songchenwen/nanopi-r2s/compare/986d717..cf7d037) 104 | 105 | 106 | | Commit | Author | Desc | 107 | | :----- | :------| :--- | 108 | | [cf7d037](https://github.com/songchenwen/nanopi-r2s/commit/cf7d037) | songchenwen | Add fw_update Script | 109 | | [bf4fc77](https://github.com/songchenwen/nanopi-r2s/commit/bf4fc77) | songchenwen | Fix distfeeds | 110 | | [8dbef0a](https://github.com/songchenwen/nanopi-r2s/commit/8dbef0a) | songchenwen | Delete Some VPN apps from FwF | 111 | | [e8fef50](https://github.com/songchenwen/nanopi-r2s/commit/e8fef50) | songchenwen | Not Recommend FwF | 112 | 113 | 114 | #### FriendlyWRT [337ed97..c2699cd](https://github.com/friendlyarm/friendlywrt/compare/337ed97..c2699cd) 115 | 116 | 117 | | Commit | Author | Desc | 118 | | :----- | :------| :--- | 119 | | [c2699cd44b](https://github.com/friendlyarm/friendlywrt/commit/c2699cd44b) | Lawrence-Tang | Re-enable ipv6 | 120 | | [f2c4d64a95](https://github.com/friendlyarm/friendlywrt/commit/f2c4d64a95) | Lawrence-Tang | Revert "set default theme to argon" | 121 | 122 | 123 | 124 | 125 | -------------- 126 | 127 | ## Lean-2020-04-11-986d717 128 | 129 | #### Builder [3aea628..986d717](https://github.com/songchenwen/nanopi-r2s/compare/3aea628..986d717) 130 | 131 | 132 | | Commit | Author | Desc | 133 | | :----- | :------| :--- | 134 | | [986d717](https://github.com/songchenwen/nanopi-r2s/commit/986d717) | songchenwen | Add luci-app-serverchan | 135 | | [db6fb00](https://github.com/songchenwen/nanopi-r2s/commit/db6fb00) | songchenwen | Default Configs in Read Me | 136 | | [7a72ee2](https://github.com/songchenwen/nanopi-r2s/commit/7a72ee2) | songchenwen | Remove Docker from FwF | 137 | | [709f14c](https://github.com/songchenwen/nanopi-r2s/commit/709f14c) | songchenwen | Revert "FriendlyWrt Unlock CPU 1.5Ghz" | 138 | | [6765452](https://github.com/songchenwen/nanopi-r2s/commit/6765452) | songchenwen | Add FriendlyWRT with Features | 139 | | [676db71](https://github.com/songchenwen/nanopi-r2s/commit/676db71) | songchenwen | FriendlyWrt Unlock CPU 1.5Ghz | 140 | | [932d62a](https://github.com/songchenwen/nanopi-r2s/commit/932d62a) | songchenwen | Update README | 141 | | [78a07e4](https://github.com/songchenwen/nanopi-r2s/commit/78a07e4) | songchenwen | Add Some Performance Test | 142 | | [f176cc1](https://github.com/songchenwen/nanopi-r2s/commit/f176cc1) | songchenwen | Add CPU Temperature to NetData | 143 | | [ef49a2a](https://github.com/songchenwen/nanopi-r2s/commit/ef49a2a) | songchenwen | Add luci-app-wrtbwmon | 144 | 145 | 146 | #### FriendlyWRT [1bedd70..337ed97](https://github.com/friendlyarm/friendlywrt/compare/1bedd70..337ed97) 147 | 148 | 149 | | Commit | Author | Desc | 150 | | :----- | :------| :--- | 151 | | [337ed979d3](https://github.com/friendlyarm/friendlywrt/commit/337ed979d3) | Lawrence-Tang | set default theme to argon | 152 | | [a51380eaea](https://github.com/friendlyarm/friendlywrt/commit/a51380eaea) | Lawrence-Tang | update luci | 153 | 154 | 155 | 156 | 157 | -------------- 158 | 159 | ## Lean-2020-04-09-3aea628 160 | 161 | #### Builder [433ce5a..3aea628](https://github.com/songchenwen/nanopi-r2s/compare/433ce5a..3aea628) 162 | 163 | 164 | | Commit | Author | Desc | 165 | | :----- | :------| :--- | 166 | | [3aea628](https://github.com/songchenwen/nanopi-r2s/commit/3aea628) | songchenwen | Fix Kernel Patch | 167 | | [f2366d2](https://github.com/songchenwen/nanopi-r2s/commit/f2366d2) | songchenwen | Reduce Update Frequency | 168 | | [7a54708](https://github.com/songchenwen/nanopi-r2s/commit/7a54708) | songchenwen | Add Version Indicator to FriendlyWRT | 169 | | [8e6d371](https://github.com/songchenwen/nanopi-r2s/commit/8e6d371) | songchenwen | Update FriendlyWRT | 170 | 171 | 172 | 173 | 174 | -------------- 175 | 176 | ## Lean-2020-04-09-433ce5a 177 | 178 | #### Builder [d5cb2cd..433ce5a](https://github.com/songchenwen/nanopi-r2s/compare/d5cb2cd..433ce5a) 179 | 180 | 181 | | Commit | Author | Desc | 182 | | :----- | :------| :--- | 183 | | [433ce5a](https://github.com/songchenwen/nanopi-r2s/commit/433ce5a) | songchenwen | Add Clash Country.mmdb to Image | 184 | | [f770492](https://github.com/songchenwen/nanopi-r2s/commit/f770492) | songchenwen | Add LOL | 185 | 186 | 187 | #### Lean [cef6bff..ae7a5d7](https://github.com/coolsnowwolf/lede/compare/cef6bff..ae7a5d7) 188 | 189 | 190 | | Commit | Author | Desc | 191 | | :----- | :------| :--- | 192 | | [ae7a5d70](https://github.com/coolsnowwolf/lede/commit/ae7a5d70) | dongjuanyong | luci-app-ssr-plus: OpenWrt SNAPSHOT compatibility (#4154) | 193 | | [df49785a](https://github.com/coolsnowwolf/lede/commit/df49785a) | lean | openwrt-ci.yml: update | 194 | | [12b558bb](https://github.com/coolsnowwolf/lede/commit/12b558bb) | lean | amule: dyn linked | 195 | | [7bf824b1](https://github.com/coolsnowwolf/lede/commit/7bf824b1) | lean | qBittorrent: bump to v4.2.3 | 196 | | [dc875de0](https://github.com/coolsnowwolf/lede/commit/dc875de0) | AmadeusGhost | kernel: netdev: add missing config for mlx5 driver (#4228) | 197 | | [b6b408c8](https://github.com/coolsnowwolf/lede/commit/b6b408c8) | lean | Version bump to R20.4.8 | 198 | | [6d92b607](https://github.com/coolsnowwolf/lede/commit/6d92b607) | lean | luci-app-music-remote-center: add place holder | 199 | | [25b01424](https://github.com/coolsnowwolf/lede/commit/25b01424) | lean | workflows: add dependenc host build | 200 | 201 | 202 | #### ScwPackage [35cc95f..49d75c3](https://github.com/songchenwen/openwrt-package/compare/35cc95f..49d75c3) 203 | 204 | 205 | | Commit | Author | Desc | 206 | | :----- | :------| :--- | 207 | | [964834569](https://github.com/songchenwen/openwrt-package/commit/964834569) | ShanStone | Fix chinadns-ng when using default dns (#408) | 208 | 209 | 210 | 211 | 212 | -------------- 213 | 214 | ## Lean-2020-04-08-d5cb2cd 215 | 216 | #### Lean [2a1f9e6..cef6bff](https://github.com/coolsnowwolf/lede/compare/2a1f9e6..cef6bff) 217 | 218 | 219 | | Commit | Author | Desc | 220 | | :----- | :------| :--- | 221 | | [cef6bffa](https://github.com/coolsnowwolf/lede/commit/cef6bffa) | ricksuzade-maker | Bump wireguard to 1.0.20200401 (#4217) | 222 | | [a1b538a9](https://github.com/coolsnowwolf/lede/commit/a1b538a9) | lean | ipq40xx: switch to ath10k-ct | 223 | | [f095b225](https://github.com/coolsnowwolf/lede/commit/f095b225) | AmadeusGhost | bcm27xx: rpi4: enable wifi in first boot (#4220) | 224 | | [c3c418cd](https://github.com/coolsnowwolf/lede/commit/c3c418cd) | lean | luci-app-cifs-mount: add SMB/CIFS mount luci | 225 | 226 | 227 | 228 | 229 | -------------- 230 | 231 | ## Lean-2020-04-07-d5cb2cd 232 | 233 | #### Builder [67e97af..d5cb2cd](https://github.com/songchenwen/nanopi-r2s/compare/67e97af..d5cb2cd) 234 | 235 | 236 | | Commit | Author | Desc | 237 | | :----- | :------| :--- | 238 | | [d5cb2cd](https://github.com/songchenwen/nanopi-r2s/commit/d5cb2cd) | songchenwen | Add Some Openwrt 5.4 Kernel Patches to Lean | 239 | | [f2031dc](https://github.com/songchenwen/nanopi-r2s/commit/f2031dc) | songchenwen | Pack Passwall | 240 | | [a3d3f53](https://github.com/songchenwen/nanopi-r2s/commit/a3d3f53) | songchenwen | Upstream Full Cone Nat Change | 241 | 242 | 243 | #### Lean [b622523..2a1f9e6](https://github.com/coolsnowwolf/lede/compare/b622523..2a1f9e6) 244 | 245 | 246 | | Commit | Author | Desc | 247 | | :----- | :------| :--- | 248 | | [2a1f9e6f](https://github.com/coolsnowwolf/lede/commit/2a1f9e6f) | lean | target: add luci-app-music-remote-center | 249 | 250 | 251 | #### ScwPackage [1583d32..35cc95f](https://github.com/songchenwen/openwrt-package/compare/1583d32..35cc95f) 252 | 253 | 254 | | Commit | Author | Desc | 255 | | :----- | :------| :--- | 256 | | [af5a68836](https://github.com/songchenwen/openwrt-package/commit/af5a68836) | xiaorouji | passwall: chinadns-ng use fair mode | 257 | | [f1352e26a](https://github.com/songchenwen/openwrt-package/commit/f1352e26a) | xiaorouji | chinadns-ng: bump 1.0-bate.22 | 258 | 259 | 260 | 261 | 262 | -------------- 263 | 264 | ## Lean-2020-04-07-67e97af 265 | 266 | #### Builder [21b1d35..67e97af](https://github.com/songchenwen/nanopi-r2s/compare/21b1d35..67e97af) 267 | 268 | 269 | | Commit | Author | Desc | 270 | | :----- | :------| :--- | 271 | | [67e97af](https://github.com/songchenwen/nanopi-r2s/commit/67e97af) | songchenwen | Add a Test Build with Openwrt Patches for octeontx | 272 | 273 | 274 | #### Lean [7e22d61..b622523](https://github.com/coolsnowwolf/lede/compare/7e22d61..b622523) 275 | 276 | 277 | | Commit | Author | Desc | 278 | | :----- | :------| :--- | 279 | | [b6225235](https://github.com/coolsnowwolf/lede/commit/b6225235) | AmadeusGhost | ramips: improve support for HiWiFi HC5962 (#4195) | 280 | | [e3cfa6d1](https://github.com/coolsnowwolf/lede/commit/e3cfa6d1) | R3pl4c3r | README.md: fix compile dependency error (#4201) | 281 | 282 | 283 | 284 | 285 | -------------- 286 | 287 | ## Lean-2020-04-06-21b1d35 288 | 289 | #### Builder [8b94319..21b1d35](https://github.com/songchenwen/nanopi-r2s/compare/8b94319..21b1d35) 290 | 291 | 292 | | Commit | Author | Desc | 293 | | :----- | :------| :--- | 294 | | [21b1d35](https://github.com/songchenwen/nanopi-r2s/commit/21b1d35) | songchenwen | Clean Unused SRCs Before Building for Disk Space | 295 | 296 | 297 | #### Lean [5e9e8d8..7e22d61](https://github.com/coolsnowwolf/lede/compare/5e9e8d8..7e22d61) 298 | 299 | 300 | | Commit | Author | Desc | 301 | | :----- | :------| :--- | 302 | | [7e22d613](https://github.com/coolsnowwolf/lede/commit/7e22d613) | lean | luci-app-music-remote-center: add zh-cn and fix path settings | 303 | | [7b250dee](https://github.com/coolsnowwolf/lede/commit/7b250dee) | lean | luci-app-music-remote-center: DAAP remote control music server for iOS/Android | 304 | | [7930a037](https://github.com/coolsnowwolf/lede/commit/7930a037) | Chuck | default-settings: fix string replace (#4189) | 305 | 306 | 307 | 308 | 309 | -------------- 310 | 311 | ## Lean-2020-04-06-8b94319 312 | 313 | #### Builder [6ca7b53..8b94319](https://github.com/songchenwen/nanopi-r2s/compare/6ca7b53..8b94319) 314 | 315 | 316 | | Commit | Author | Desc | 317 | | :----- | :------| :--- | 318 | | [8b94319](https://github.com/songchenwen/nanopi-r2s/commit/8b94319) | songchenwen | Fix File System Permissions | 319 | | [4261ef8](https://github.com/songchenwen/nanopi-r2s/commit/4261ef8) | 宋辰文 | Add luci-app-nfs | 320 | 321 | 322 | #### ScwPackage [3fa6c01..1583d32](https://github.com/songchenwen/openwrt-package/compare/3fa6c01..1583d32) 323 | 324 | 325 | | Commit | Author | Desc | 326 | | :----- | :------| :--- | 327 | | [950a544](https://github.com/songchenwen/openwrt-package/commit/950a544) | Lienol | passwall: optimize subscribe | 328 | | [5a47a8a](https://github.com/songchenwen/openwrt-package/commit/5a47a8a) | ShanStone | passwall: Fix blacklist by default proxy (#400) | 329 | 330 | 331 | 332 | 333 | -------------- 334 | 335 | ## Lean-2020-04-06-6ca7b53 336 | 337 | #### Builder [70a1021..6ca7b53](https://github.com/songchenwen/nanopi-r2s/compare/70a1021..6ca7b53) 338 | 339 | 340 | | Commit | Author | Desc | 341 | | :----- | :------| :--- | 342 | | [6ca7b53](https://github.com/songchenwen/nanopi-r2s/commit/6ca7b53) | songchenwen | Add FriendlyWRT Build | 343 | 344 | 345 | #### Lean [d5dc714..5e9e8d8](https://github.com/coolsnowwolf/lede/compare/d5dc714..5e9e8d8) 346 | 347 | 348 | | Commit | Author | Desc | 349 | | :----- | :------| :--- | 350 | | [5e9e8d85](https://github.com/coolsnowwolf/lede/commit/5e9e8d85) | Aes64X | package:add nfs mount luci (#4171) | 351 | | [08637d82](https://github.com/coolsnowwolf/lede/commit/08637d82) | AmadeusGhost | ar71xx: fix alloc_page_frag issue (#4184) | 352 | | [91be31e2](https://github.com/coolsnowwolf/lede/commit/91be31e2) | CN_SZTL | mac80211: fix target name (#4176) | 353 | 354 | 355 | 356 | 357 | -------------- 358 | 359 | ## R2S-Lean-2020-04-04-70a1021 360 | 361 | #### Builder [8eacdd5..70a1021](https://github.com/songchenwen/nanopi-r2s/compare/8eacdd5..70a1021) 362 | 363 | 364 | | Commit | Author | Desc | 365 | | :----- | :------| :--- | 366 | | [70a1021](https://github.com/songchenwen/nanopi-r2s/commit/70a1021) | songchenwen | More Detailed Config Seed | 367 | 368 | 369 | #### Lean [d0922b9..d5dc714](https://github.com/coolsnowwolf/lede/compare/d0922b9..d5dc714) 370 | 371 | 372 | | Commit | Author | Desc | 373 | | :----- | :------| :--- | 374 | | [d5dc714e](https://github.com/coolsnowwolf/lede/commit/d5dc714e) | NivalXer | mwlwifi: Update the 88W8964's firmware to 9.3.2.12 and fix backports version detection (#4168) | 375 | | [b344bfb5](https://github.com/coolsnowwolf/lede/commit/b344bfb5) | AmadeusGhost | ath10k-ct: bump to 5.4 (#4165) | 376 | | [7d597c53](https://github.com/coolsnowwolf/lede/commit/7d597c53) | AmadeusGhost | mac80211: switch to upstream owl-loader driver (#4164) | 377 | 378 | 379 | 380 | 381 | -------------- 382 | 383 | ## R2S-Lean-2020-04-04-8eacdd5 384 | 385 | #### Lean [78bec3e..d0922b9](https://github.com/coolsnowwolf/lede/compare/78bec3e..d0922b9) 386 | 387 | 388 | | Commit | Author | Desc | 389 | | :----- | :------| :--- | 390 | | [d0922b93](https://github.com/coolsnowwolf/lede/commit/d0922b93) | lean | luci-app-ssr-plus: display log when enable socks5 server only | 391 | | [8faac300](https://github.com/coolsnowwolf/lede/commit/8faac300) | lean | mac80211: Update to version 5.4.27 | 392 | | [17ce0abd](https://github.com/coolsnowwolf/lede/commit/17ce0abd) | lean | kernel: add module for Mellanox mlx Network 10/40Gbps Driver | 393 | 394 | 395 | 396 | 397 | -------------- 398 | 399 | ## R2S-Lean-2020-04-03-8eacdd5 400 | 401 | #### Builder [740fb83..8eacdd5](https://github.com/songchenwen/nanopi-r2s/compare/740fb83..8eacdd5) 402 | 403 | 404 | | Commit | Author | Desc | 405 | | :----- | :------| :--- | 406 | | [8eacdd5](https://github.com/songchenwen/nanopi-r2s/commit/8eacdd5) | songchenwen | Follow Upstream | 407 | 408 | 409 | #### ScwPackage [ce98935..3fa6c01](https://github.com/songchenwen/openwrt-package/compare/ce98935..3fa6c01) 410 | 411 | 412 | | Commit | Author | Desc | 413 | | :----- | :------| :--- | 414 | | [e3f3880](https://github.com/songchenwen/openwrt-package/commit/e3f3880) | ShanStone | optimize passwall script & update chinadns-ng (#394) | 415 | 416 | 417 | 418 | 419 | -------------- 420 | 421 | ## R2S-Lean-2020-04-03-740fb83 422 | 423 | #### Lean [9a65c3e..78bec3e](https://github.com/coolsnowwolf/lede/compare/9a65c3e..78bec3e) 424 | 425 | 426 | | Commit | Author | Desc | 427 | | :----- | :------| :--- | 428 | | [78bec3e9](https://github.com/coolsnowwolf/lede/commit/78bec3e9) | CN_SZTL | openssl: bump to 1.1.1f (#4153) | 429 | 430 | 431 | #### ScwPackage [66e52f1..ce98935](https://github.com/songchenwen/openwrt-package/compare/66e52f1..ce98935) 432 | 433 | 434 | | Commit | Author | Desc | 435 | | :----- | :------| :--- | 436 | | [8676c5a5c](https://github.com/songchenwen/openwrt-package/commit/8676c5a5c) | Lienol | luci-app-timecontrol: update makefile | 437 | | [4f4599c5a](https://github.com/songchenwen/openwrt-package/commit/4f4599c5a) | Lienol | verysync: revert v1.3.1 | 438 | | [ed7c39dc3](https://github.com/songchenwen/openwrt-package/commit/ed7c39dc3) | Lienol | chinadns-ng: bump to latest version | 439 | | [f28a53eef](https://github.com/songchenwen/openwrt-package/commit/f28a53eef) | Lienol | luci-app-timecontrol: add new package | 440 | | [89b0afb7c](https://github.com/songchenwen/openwrt-package/commit/89b0afb7c) | Lienol | luci-app-timewol: add etherwake depends by default | 441 | | [0d9606089](https://github.com/songchenwen/openwrt-package/commit/0d9606089) | Lienol | remove mia package | 442 | | [02d20542e](https://github.com/songchenwen/openwrt-package/commit/02d20542e) | Lienol | ipsec: fix when flowoffload on | 443 | | [3c35b15dc](https://github.com/songchenwen/openwrt-package/commit/3c35b15dc) | Lienol | Update README.md | 444 | 445 | 446 | 447 | 448 | -------------- 449 | 450 | ## R2S-Lean-2020-04-02-740fb83 451 | 452 | #### Builder [d760b63..740fb83](https://github.com/songchenwen/nanopi-r2s/compare/d760b63..740fb83) 453 | 454 | 455 | | Commit | Author | Desc | 456 | | :----- | :------| :--- | 457 | | [740fb83](https://github.com/songchenwen/nanopi-r2s/commit/740fb83) | songchenwen | Remove xlnetacc | 458 | 459 | 460 | #### Lean [f8bd6e0..9a65c3e](https://github.com/coolsnowwolf/lede/compare/f8bd6e0..9a65c3e) 461 | 462 | 463 | | Commit | Author | Desc | 464 | | :----- | :------| :--- | 465 | | [9a65c3ef](https://github.com/coolsnowwolf/lede/commit/9a65c3ef) | AmadeusGhost | treewide: revert use new procd sysupgrade variable (#4139) | 466 | | [e56bd418](https://github.com/coolsnowwolf/lede/commit/e56bd418) | mjyhj | luci-app-diskman: bump to 0.2.7 (#4144) | 467 | 468 | 469 | #### ScwPackage [f3dffb7..66e52f1](https://github.com/songchenwen/openwrt-package/compare/f3dffb7..66e52f1) 470 | 471 | 472 | | Commit | Author | Desc | 473 | | :----- | :------| :--- | 474 | | [58ea9a57c](https://github.com/songchenwen/openwrt-package/commit/58ea9a57c) | Lienol | Update README.md | 475 | 476 | 477 | 478 | 479 | -------------- 480 | 481 | ## R2S-Lean-2020-04-01-d760b63 482 | 483 | #### Builder [330d4b0..d760b63](https://github.com/songchenwen/nanopi-r2s/compare/330d4b0..d760b63) 484 | 485 | 486 | | Commit | Author | Desc | 487 | | :----- | :------| :--- | 488 | | [d760b63](https://github.com/songchenwen/nanopi-r2s/commit/d760b63) | songchenwen | Change Log for No Master Branch | 489 | 490 | 491 | #### Argon [03697cf..3e41f5b](https://github.com/jerrykuku/luci-theme-argon/compare/03697cf..3e41f5b) 492 | 493 | 494 | | Commit | Author | Desc | 495 | | :----- | :------| :--- | 496 | | [3e41f5b](https://github.com/jerrykuku/luci-theme-argon/commit/3e41f5b) | jerrykuku | fix display error | 497 | | [c37f44b](https://github.com/jerrykuku/luci-theme-argon/commit/c37f44b) | jerrykuku | Update README_ZH.md | 498 | | [f4f88cb](https://github.com/jerrykuku/luci-theme-argon/commit/f4f88cb) | jerrykuku | fix side scroll bar color | 499 | | [ea29300](https://github.com/jerrykuku/luci-theme-argon/commit/ea29300) | jerrykuku | Add dark mode | 500 | 501 | 502 | #### Lean [427e7ec..f8bd6e0](https://github.com/coolsnowwolf/lede/compare/427e7ec..f8bd6e0) 503 | 504 | 505 | | Commit | Author | Desc | 506 | | :----- | :------| :--- | 507 | | [f8bd6e09](https://github.com/coolsnowwolf/lede/commit/f8bd6e09) | CN_SZTL | openssl: revert EOF detection change in 1.1.1 (#4127) | 508 | | [64db0fb9](https://github.com/coolsnowwolf/lede/commit/64db0fb9) | Mattraks | luci-app-cpufreq:Add translation (#4130) | 509 | 510 | 511 | 512 | 513 | -------------- 514 | 515 | ## R2S-Lean-2020-03-31-330d4b0 516 | 517 | #### Builder [01ef2c1..330d4b0](https://github.com/songchenwen/nanopi-r2s/compare/01ef2c1..330d4b0) 518 | 519 | 520 | | Commit | Author | Desc | 521 | | :----- | :------| :--- | 522 | | 330d4b0 | songchenwen | Add a Change Log | 523 | 524 | 525 | #### Lean [311a78e..427e7ec](https://github.com/coolsnowwolf/lede/compare/311a78e..427e7ec) 526 | 527 | 528 | | Commit | Author | Desc | 529 | | :----- | :------| :--- | 530 | | 427e7ec5 | lean | luci-app-airplay2: open to all target | 531 | | 32964d4b | lean | luci-app-airplay2: open to all target | 532 | | 3a86ef8c | AmadeusGhost | mac80211: brcm: backport remaining 5.6 kernel patches (#4070) | 533 | | 1188a9ff | Mattraks | luci-app-ssr-plus:Fix update.lua log output and file checking (#4085) | 534 | | aad03293 | lean | x86: switch and optimize 4.19 kernel | 535 | | 34f33cfc | lean | luci-app-airplay2: add audio sample rate setting | 536 | | c6f47f30 | lean | luci-app-airplay2: add audio buffer length setting | 537 | | 51fc01f8 | lean | luci-app-airplay2: add airplay2 for x86 | 538 | | 347ee6ae | lean | luci-app-ssr-plus: add x64 default | 539 | | bea38362 | lean | x86: adjust some kernel module for k4.9 | 540 | | 295e835f | lean | ajust some default package setting for x86 32bit | 541 | | c71b177f | lean | UnblockNeteaseMusicGo: bump to v0.2.0 to fix x86 32bit running | 542 | 543 | 544 | #### ScwPackage [30aa0cc..f3dffb7](https://github.com/songchenwen/openwrt-package/compare/30aa0cc..f3dffb7) 545 | 546 | 547 | | Commit | Author | Desc | 548 | | :----- | :------| :--- | 549 | | 3e23acfff | songchenwen | Github Workflow to Auto Merge Lienol's Packages | 550 | | 6144406b6 | Lienol | ipsec: optimize script | 551 | | fafc9a5ff | songchenwen | Add Clash Config File to Auto Backup | 552 | | 00ae5ca02 | songchenwen | Initial Clash Support for Passwall | 553 | 554 | 555 | 556 | 557 | -------------- 558 | -------------------------------------------------------------------------------- /Lean/README.md: -------------------------------------------------------------------------------- 1 | # Lean 2 | 3 | 以 Lean 为基础, 增加 FriendlyWRT 对 OpenWRT 的改动 4 | 5 | [下载地址](https://github.com/songchenwen/nanopi-r2s/releases/download/Lean-2020-04-17-9f73416/Lean-2020-04-17-9f73416-ROM.zip) 6 | 7 | [改动记录](CHANGELOG.md) 8 | -------------------------------------------------------------------------------- /Lean/enable_autocore.diff: -------------------------------------------------------------------------------- 1 | diff --git a/package/lean/autocore/Makefile b/package/lean/autocore/Makefile 2 | index 5a3ea11..1f52537 100644 3 | --- a/package/lean/autocore/Makefile 4 | +++ b/package/lean/autocore/Makefile 5 | @@ -17,7 +17,7 @@ include $(INCLUDE_DIR)/package.mk 6 | define Package/autocore 7 | TITLE:=x86/x64 auto core loadbalance script. 8 | MAINTAINER:=Lean 9 | - DEPENDS:=@TARGET_x86 +bc +lm-sensors +ethtool 10 | + DEPENDS:=+bc +lm-sensors +ethtool 11 | endef 12 | 13 | define Package/autocore/description 14 | diff --git a/package/lean/autocore/files/autocore b/package/lean/autocore/files/autocore 15 | index 55cd519..06d202c 100755 16 | --- a/package/lean/autocore/files/autocore 17 | +++ b/package/lean/autocore/files/autocore 18 | @@ -33,7 +33,7 @@ start() 19 | g=${a}${b}${c}${d}${e}${f} 20 | 21 | mkdir -p /tmp/sysinfo 22 | - echo $g > /tmp/sysinfo/model 23 | + #echo $g > /tmp/sysinfo/model 24 | 25 | a=$(ip address | grep ^[0-9] | awk -F: '{print $2}' | sed "s/ //g" | grep '^[e]' | grep -v "@" | grep -v "\.") 26 | b=$(echo "$a" | wc -l) 27 | @@ -44,7 +44,7 @@ start() 28 | ethtool -K $c tx-checksum-ip-generic on >/dev/null 2>&1 || ( 29 | ethtool -K $c tx-checksum-ipv4 on >/dev/null 2>&1 30 | ethtool -K $c tx-checksum-ipv6 on >/dev/null 2>&1) 31 | - ethtool -K $c tx-scatter-gather on >/dev/null 2>&1 32 | + #ethtool -K $c tx-scatter-gather on >/dev/null 2>&1 33 | ethtool -K $c gso on >/dev/null 2>&1 34 | ethtool -K $c tso on >/dev/null 2>&1 35 | ethtool -K $c ufo on >/dev/null 2>&1 36 | diff --git a/package/lean/autocore/files/index.htm b/package/lean/autocore/files/index.htm 37 | index 22d1a55..0198c38 100644 38 | --- a/package/lean/autocore/files/index.htm 39 | +++ b/package/lean/autocore/files/index.htm 40 | @@ -720,6 +720,7 @@ 41 | <%:Firmware Version%> 42 | <%=pcdata(ver.distname)%> <%=pcdata(ver.distversion)%> / 43 | <%=pcdata(ver.luciname)%> (<%=pcdata(ver.luciversion)%>) 44 | + built by DYC 45 | 46 | <%:Kernel Version%><%=unameinfo.release or "?"%> 47 | <%:Local Time%>- 48 | diff --git a/package/lean/autocore/files/sbin/cpuinfo b/package/lean/autocore/files/sbin/cpuinfo 49 | index 19ea5fb..60e7acd 100755 50 | --- a/package/lean/autocore/files/sbin/cpuinfo 51 | +++ b/package/lean/autocore/files/sbin/cpuinfo 52 | @@ -2,7 +2,7 @@ 53 | 54 | info() 55 | { 56 | - MHz=`grep 'MHz' /proc/cpuinfo | cut -c11- |sed -n '1p'` 57 | + MHz=`echo "$(cat /sys/devices/system/cpu/cpu[04]/cpufreq/cpuinfo_cur_freq)/1000" | bc` 58 | #获取CPU工作频率 59 | 60 | sensors >/dev/null 61 | @@ -12,7 +12,7 @@ info() 62 | #获取CPU核心1温度 63 | 64 | else 65 | - a="" 66 | + a=`echo "scale=2; $(cat /sys/class/thermal/thermal_zone0/temp)/1000" | bc`° 67 | fi 68 | } 69 | 70 | -------------------------------------------------------------------------------- /Lean/lean_patches.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cd friendlywrt-rk3328/friendlywrt 3 | git apply ../../Lean/enable_autocore.diff 4 | 5 | git diff -- package/lean/autocore/Makefile 6 | 7 | sed -i '/uci commit luci/i\uci set luci.main.mediaurlbase="/luci-static/argon"' package/lean/default-settings/files/zzz-default-settings 8 | sed -i '/exit/i\chown -R root:root /usr/share/netdata/web' package/lean/default-settings/files/zzz-default-settings 9 | sed -i '/exit/i\find /etc/rc.d/ -name *docker* -delete' package/lean/default-settings/files/zzz-default-settings 10 | sed -i 's/option fullcone\t1/option fullcone\t0/' package/network/config/firewall/files/firewall.config 11 | 12 | echo "" 13 | echo "package/lean/default-settings/files/zzz-default-settings" 14 | cat package/lean/default-settings/files/zzz-default-settings 15 | 16 | echo "" 17 | echo "package/network/config/firewall/files/firewall.config" 18 | cat package/network/config/firewall/files/firewall.config 19 | 20 | mv ../../scripts/check_wan4.sh package/base-files/files/usr/bin && sed -i '/exit/i\/bin/sh /usr/bin/check_wan4.sh &' package/base-files/files/etc/rc.local 21 | 22 | echo "" 23 | echo "package/base-files/files/etc/rc.local" 24 | cat package/base-files/files/etc/rc.local 25 | 26 | sed -i "s/65536/65535/" package/kernel/linux/files/sysctl-nf-conntrack.conf 27 | -------------------------------------------------------------------------------- /Lean/patch_kernel_5.4.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cd friendlywrt-rk3328 3 | cd kernel/ 4 | git apply ../../add_fullconenat.diff 5 | wget https://github.com/armbian/build/raw/master/patch/kernel/rockchip64-dev/RK3328-enable-1512mhz-opp.patch 6 | git apply RK3328-enable-1512mhz-opp.patch 7 | cd ../ 8 | git clone https://github.com/openwrt/openwrt && cd openwrt/ 9 | #git checkout 4e0c54bc5bc8381e031af5147b66b4dadeecc626 10 | rm -f target/linux/generic/pending-5.4/184-USB-serial-option-add-Wistron-Neweb-D19Q1.patch 11 | rm -f target/linux/generic/pending-5.4/403-mtd-hook-mtdsplit-to-Kbuild.patch 12 | rm -f target/linux/generic/hack-5.4/700-swconfig_switch_drivers.patch 13 | ./scripts/patch-kernel.sh ../kernel target/linux/generic/backport-5.4 14 | ./scripts/patch-kernel.sh ../kernel target/linux/generic/pending-5.4 15 | ./scripts/patch-kernel.sh ../kernel target/linux/generic/hack-5.4 16 | cd ../ 17 | wget https://github.com/torvalds/linux/raw/master/scripts/kconfig/merge_config.sh && chmod +x merge_config.sh 18 | grep -i '_NETFILTER_\|FLOW' ../Lean/.config.override > .config.override 19 | ./merge_config.sh -m .config.override kernel/arch/arm64/configs/nanopi-r2_linux_defconfig && mv .config kernel/arch/arm64/configs/nanopi-r2_linux_defconfig 20 | -------------------------------------------------------------------------------- /Lean/rebase_on_lean.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cd friendlywrt-rk3328 3 | find device/ -name distfeeds.conf -delete 4 | cd friendlywrt 5 | git config --global user.email "action@github.com" && git config --global user.name "GitHub Action" 6 | ../../set_repo_hash.sh Lean https://github.com/coolsnowwolf/lede.git 7 | git remote add upstream https://github.com/coolsnowwolf/lede.git && git fetch upstream 8 | git rebase adc1a9a3676b8d7be1b48b5aed185a94d8e42728^ --onto upstream/master -X ours 9 | echo "" 10 | git status 11 | echo "" 12 | git checkout upstream/master -- feeds.conf.default 13 | git checkout upstream/master -- package/kernel/mac80211/files/lib/netifd/mac80211.sh 14 | echo "" 15 | git status 16 | echo "" 17 | echo "feeds.conf.default" 18 | cat feeds.conf.default 19 | -------------------------------------------------------------------------------- /Lean/repo_used_path.env: -------------------------------------------------------------------------------- 1 | LeanLuci=applications/luci-app-ddns applications/luci-app-watchcat applications/luci-app-wol modules 2 | LeanPackage=utils/collectd utils/bash utils/watchcat 3 | ScwPackage=lienol/luci-app-passwall lienol/luci-app-ramfree lienol/luci-theme-argon-dark-mod package -------------------------------------------------------------------------------- /Lean/status.env: -------------------------------------------------------------------------------- 1 | ServerChanHash=5ae8cd2 2 | BuilderHash=9f73416 3 | FriendlyWRTHash=6025df0 4 | ArgonHash=3e41f5b 5 | AdguardHomeHash=37fdf50 6 | LeanHash=6b142ba 7 | ScwPackageHash=6f5d6af 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Nanopi R2S 固件自动编译 2 | 3 | [![friendlywrt](https://github.com/songchenwen/nanopi-r2s/workflows/friendlywrt/badge.svg)](https://github.com/songchenwen/nanopi-r2s/actions?query=workflow%3Afriendlywrt) 4 | [![FwF](https://github.com/songchenwen/nanopi-r2s/workflows/FwF/badge.svg)](https://github.com/songchenwen/nanopi-r2s/actions?query=workflow%3AFwF) 5 | 6 | ~~编译了两种固件,分别是基于 Lean 的和基于官方固件的。~~ 7 | 8 | FriendlyWRT 和 FwF 是基于官方固件的版本,主要求稳,没有解锁 CPU 主频, ~~也没添加 Flow Offload,~~ 实测性能够用,温度还低,推荐作为家庭主路由拿来长期使用。 9 | 10 | 点击下方固件名字,可找到对应版本固件的最新下载链接。图形化刷机工具 [luci-app-r2sflasher](luci-app-r2sflasher) 的 ipk 安装包也在下载到的 zip 里。 11 | 12 | | 固件名字 | 改动记录 | 简介 | 13 | | :------ | :----- | :--- | 14 | | [FriendlyWRT](FriendlyWRT) | [改动记录](FriendlyWRT/CHANGELOG.md) | 以官方固件为基础, 添加 Lean 的包 | 15 | | [FwF](FwF) | [改动记录](FwF/CHANGELOG.md) | FriendlyWRT with Features, 比上面的固件含有更多功能 | 16 | 17 | 默认 LAN 口 IP `192.168.2.1` 默认密码 `password` 18 | 19 | 4月14日之后的版本加入了 [luci-app-r2sflasher](luci-app-r2sflasher), 可以图形化刷机了。 20 | 21 | 4月23日之后,有了[专为 NanoPi R2S 准备的软件源](https://songchenwen.com/nanopi-r2s-opkg-feeds/packages)。缺少的包可以自行从源里安装了。 22 | 23 | 4月30日之后,开始使用 [Chuck 的 Kernel](https://github.com/fanck0605/friendlywrt-kernel),可以开启 Flow Offload 和 FullCone NAT,并且 firewall 也不崩溃了。 24 | 25 | Fork 自 [klever1988](https://github.com/klever1988/nanopi-openwrt) 和 [soffchen](https://github.com/soffchen/NanoPi-R2S) 26 | 27 | 主要整合了 [Passwall](https://github.com/songchenwen/openwrt-package) 和 AdguardHome 28 | 29 | 其中 [Passwall](https://github.com/songchenwen/openwrt-package) 是修改版本,支持 Clash。Passwall 比 OpenClash 的好处是,OpenClash 所有流量都需要经过 Clash 转发,有性能损耗。[Passwall](https://github.com/songchenwen/openwrt-package) 可以设置规则只转发部分流量。 30 | 31 | WAN 口 DHCP 时,NAT 性能和温度 ⬇️ 32 | 33 | ![DHCP NAT](images/r2s_dhcp_nat.png) 34 | 35 | WAN 口 PPPOE 时,NAT 性能和温度 ⬇️ 36 | 37 | ![PPPOE NAT](images/r2s_pppoe_nat.png) 38 | 39 | Fast.com 测速 ⬇️ 40 | 41 | ![fast.com](images/r2s_fastcom.png) 42 | 43 | Fast.com 测速 WAN 口 DHCP 时 CPU 占用和温度 ( WAN 口 PPPOE 的话,CPU 占用增加 20% 左右 ) ⬇️ 44 | 45 | ![fast.com](images/r2s_fastcom_nat.png) 46 | 47 | -------------------------------------------------------------------------------- /add_fullconenat.diff: -------------------------------------------------------------------------------- 1 | diff --git a/arch/arm64/configs/nanopi-r2_linux_defconfig b/arch/arm64/configs/nanopi-r2_linux_defconfig 2 | index 240a9bf57..9f8f37ca7 100644 3 | --- a/arch/arm64/configs/nanopi-r2_linux_defconfig 4 | +++ b/arch/arm64/configs/nanopi-r2_linux_defconfig 5 | @@ -1665,3 +1665,4 @@ CONFIG_SCHEDSTATS=y 6 | CONFIG_DEBUG_SPINLOCK=y 7 | CONFIG_FUNCTION_TRACER=y 8 | CONFIG_BLK_DEV_IO_TRACE=y 9 | +CONFIG_IP_NF_TARGET_FULLCONENAT=y 10 | diff --git a/net/ipv4/netfilter/Kconfig b/net/ipv4/netfilter/Kconfig 11 | index f17b40211..99f691a67 100644 12 | --- a/net/ipv4/netfilter/Kconfig 13 | +++ b/net/ipv4/netfilter/Kconfig 14 | @@ -239,6 +239,15 @@ config IP_NF_TARGET_NETMAP 15 | (e.g. when running oldconfig). It selects 16 | CONFIG_NETFILTER_XT_TARGET_NETMAP. 17 | 18 | +config IP_NF_TARGET_FULLCONENAT 19 | + tristate "FULLCONENAT target support" 20 | + depends on NETFILTER_ADVANCED 21 | + select NETFILTER_XT_TARGET_FULLCONENAT 22 | + ---help--- 23 | + This is a backwards-compat option for the user's convenience 24 | + (e.g. when running oldconfig). It selects 25 | + CONFIG_NETFILTER_XT_TARGET_FULLCONENAT. 26 | + 27 | config IP_NF_TARGET_REDIRECT 28 | tristate "REDIRECT target support" 29 | depends on NETFILTER_ADVANCED 30 | diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig 31 | index 91efae88e..17f5c748a 100644 32 | --- a/net/netfilter/Kconfig 33 | +++ b/net/netfilter/Kconfig 34 | @@ -956,6 +956,14 @@ config NETFILTER_XT_TARGET_NETMAP 35 | 36 | To compile it as a module, choose M here. If unsure, say N. 37 | 38 | +config NETFILTER_XT_TARGET_FULLCONENAT 39 | + tristate '"FULLCONENAT" target support' 40 | + depends on NF_NAT 41 | + ---help--- 42 | + Full Cone NAT 43 | + 44 | + To compile it as a module, choose M here. If unsure, say N. 45 | + 46 | config NETFILTER_XT_TARGET_NFLOG 47 | tristate '"NFLOG" target support' 48 | default m if NETFILTER_ADVANCED=n 49 | diff --git a/net/netfilter/Makefile b/net/netfilter/Makefile 50 | index 4fc075b61..2b588d5a5 100644 51 | --- a/net/netfilter/Makefile 52 | +++ b/net/netfilter/Makefile 53 | @@ -209,3 +209,6 @@ obj-$(CONFIG_IP_SET) += ipset/ 54 | 55 | # IPVS 56 | obj-$(CONFIG_IP_VS) += ipvs/ 57 | + 58 | +# Full cone NAT 59 | +obj-$(CONFIG_NETFILTER_XT_TARGET_FULLCONENAT) += xt_FULLCONENAT.o 60 | diff --git a/net/netfilter/xt_FULLCONENAT.c b/net/netfilter/xt_FULLCONENAT.c 61 | new file mode 100644 62 | index 000000000..8555b54e2 63 | --- /dev/null 64 | +++ b/net/netfilter/xt_FULLCONENAT.c 65 | @@ -0,0 +1,733 @@ 66 | +/* 67 | + * Copyright (c) 2018 Chion Tang 68 | + * 69 | + * This program is free software; you can redistribute it and/or modify 70 | + * it under the terms of the GNU General Public License version 2 as 71 | + * published by the Free Software Foundation. 72 | + */ 73 | + 74 | +#include 75 | +#include 76 | +#include 77 | +#include 78 | +#include 79 | +#include 80 | +#include 81 | +#include 82 | +#include 83 | +#ifdef CONFIG_NF_CONNTRACK_CHAIN_EVENTS 84 | +#include 85 | +#endif 86 | +#include 87 | +#include 88 | +#include 89 | +#include 90 | +#include 91 | +#include 92 | +#include 93 | +#include 94 | +#include 95 | + 96 | +#define HASH_2(x, y) ((x + y) / 2 * (x + y + 1) + y) 97 | + 98 | +#define HASHTABLE_BUCKET_BITS 10 99 | + 100 | +#ifndef NF_NAT_RANGE_PROTO_RANDOM_FULLY 101 | +#define NF_NAT_RANGE_PROTO_RANDOM_FULLY (1 << 4) 102 | +#endif 103 | + 104 | +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0) 105 | + 106 | +static inline int nf_ct_netns_get(struct net *net, u8 nfproto) { return 0; } 107 | + 108 | +static inline void nf_ct_netns_put(struct net *net, u8 nfproto) {} 109 | + 110 | +static inline struct net_device *xt_in(const struct xt_action_param *par) { 111 | + return par->in; 112 | +} 113 | + 114 | +static inline struct net_device *xt_out(const struct xt_action_param *par) { 115 | + return par->out; 116 | +} 117 | + 118 | +static inline unsigned int xt_hooknum(const struct xt_action_param *par) { 119 | + return par->hooknum; 120 | +} 121 | + 122 | +#endif 123 | + 124 | +struct nat_mapping_original_tuple { 125 | + struct nf_conntrack_tuple tuple; 126 | + 127 | + struct list_head node; 128 | +}; 129 | + 130 | +struct nat_mapping { 131 | + uint16_t port; /* external UDP port */ 132 | + int ifindex; /* external interface index*/ 133 | + 134 | + __be32 int_addr; /* internal source ip address */ 135 | + uint16_t int_port; /* internal source port */ 136 | + 137 | + int refer_count; /* how many references linked to this mapping 138 | + * aka. length of original_tuple_list */ 139 | + 140 | + struct list_head original_tuple_list; 141 | + 142 | + struct hlist_node node_by_ext_port; 143 | + struct hlist_node node_by_int_src; 144 | + 145 | +}; 146 | + 147 | +struct tuple_list { 148 | + struct nf_conntrack_tuple tuple_original; 149 | + struct nf_conntrack_tuple tuple_reply; 150 | + struct list_head list; 151 | +}; 152 | + 153 | +#ifdef CONFIG_NF_CONNTRACK_CHAIN_EVENTS 154 | +struct notifier_block ct_event_notifier; 155 | +#else 156 | +struct nf_ct_event_notifier ct_event_notifier; 157 | +#endif 158 | +int tg_refer_count = 0; 159 | +int ct_event_notifier_registered = 0; 160 | + 161 | +static DEFINE_MUTEX(nf_ct_net_event_lock); 162 | + 163 | +static DEFINE_HASHTABLE(mapping_table_by_ext_port, HASHTABLE_BUCKET_BITS); 164 | +static DEFINE_HASHTABLE(mapping_table_by_int_src, HASHTABLE_BUCKET_BITS); 165 | + 166 | +static DEFINE_SPINLOCK(fullconenat_lock); 167 | + 168 | +static LIST_HEAD(dying_tuple_list); 169 | +static DEFINE_SPINLOCK(dying_tuple_list_lock); 170 | +static void gc_worker(struct work_struct *work); 171 | +static struct workqueue_struct *wq __read_mostly = NULL; 172 | +static DECLARE_DELAYED_WORK(gc_worker_wk, gc_worker); 173 | + 174 | +static char tuple_tmp_string[512]; 175 | +/* non-atomic: can only be called serially within lock zones. */ 176 | +static char* nf_ct_stringify_tuple(const struct nf_conntrack_tuple *t) { 177 | + snprintf(tuple_tmp_string, sizeof(tuple_tmp_string), "%pI4:%hu -> %pI4:%hu", 178 | + &t->src.u3.ip, be16_to_cpu(t->src.u.all), 179 | + &t->dst.u3.ip, be16_to_cpu(t->dst.u.all)); 180 | + return tuple_tmp_string; 181 | +} 182 | + 183 | +static struct nat_mapping* allocate_mapping(const __be32 int_addr, const uint16_t int_port, const uint16_t port, const int ifindex) { 184 | + struct nat_mapping *p_new; 185 | + u32 hash_src; 186 | + 187 | + p_new = kmalloc(sizeof(struct nat_mapping), GFP_ATOMIC); 188 | + if (p_new == NULL) { 189 | + pr_debug("xt_FULLCONENAT: ERROR: kmalloc() for new nat_mapping failed.\n"); 190 | + return NULL; 191 | + } 192 | + p_new->port = port; 193 | + p_new->int_addr = int_addr; 194 | + p_new->int_port = int_port; 195 | + p_new->ifindex = ifindex; 196 | + p_new->refer_count = 0; 197 | + (p_new->original_tuple_list).next = &(p_new->original_tuple_list); 198 | + (p_new->original_tuple_list).prev = &(p_new->original_tuple_list); 199 | + 200 | + hash_src = HASH_2(int_addr, (u32)int_port); 201 | + 202 | + hash_add(mapping_table_by_ext_port, &p_new->node_by_ext_port, port); 203 | + hash_add(mapping_table_by_int_src, &p_new->node_by_int_src, hash_src); 204 | + 205 | + pr_debug("xt_FULLCONENAT: new mapping allocated for %pI4:%d ==> %d\n", 206 | + &p_new->int_addr, p_new->int_port, p_new->port); 207 | + 208 | + return p_new; 209 | +} 210 | + 211 | +static void add_original_tuple_to_mapping(struct nat_mapping *mapping, const struct nf_conntrack_tuple* original_tuple) { 212 | + struct nat_mapping_original_tuple *item = kmalloc(sizeof(struct nat_mapping_original_tuple), GFP_ATOMIC); 213 | + if (item == NULL) { 214 | + pr_debug("xt_FULLCONENAT: ERROR: kmalloc() for nat_mapping_original_tuple failed.\n"); 215 | + return; 216 | + } 217 | + memcpy(&item->tuple, original_tuple, sizeof(struct nf_conntrack_tuple)); 218 | + list_add(&item->node, &mapping->original_tuple_list); 219 | + (mapping->refer_count)++; 220 | +} 221 | + 222 | +static struct nat_mapping* get_mapping_by_ext_port(const uint16_t port, const int ifindex) { 223 | + struct nat_mapping *p_current; 224 | + 225 | + hash_for_each_possible(mapping_table_by_ext_port, p_current, node_by_ext_port, port) { 226 | + if (p_current->port == port && p_current->ifindex == ifindex) { 227 | + return p_current; 228 | + } 229 | + } 230 | + 231 | + return NULL; 232 | +} 233 | + 234 | +static struct nat_mapping* get_mapping_by_int_src(const __be32 src_ip, const uint16_t src_port) { 235 | + struct nat_mapping *p_current; 236 | + u32 hash_src = HASH_2(src_ip, (u32)src_port); 237 | + 238 | + hash_for_each_possible(mapping_table_by_int_src, p_current, node_by_int_src, hash_src) { 239 | + if (p_current->int_addr == src_ip && p_current->int_port == src_port) { 240 | + return p_current; 241 | + } 242 | + } 243 | + 244 | + return NULL; 245 | +} 246 | + 247 | +static void kill_mapping(struct nat_mapping *mapping) { 248 | + struct list_head *iter, *tmp; 249 | + struct nat_mapping_original_tuple *original_tuple_item; 250 | + 251 | + if (mapping == NULL) { 252 | + return; 253 | + } 254 | + 255 | + list_for_each_safe(iter, tmp, &mapping->original_tuple_list) { 256 | + original_tuple_item = list_entry(iter, struct nat_mapping_original_tuple, node); 257 | + list_del(&original_tuple_item->node); 258 | + kfree(original_tuple_item); 259 | + } 260 | + 261 | + hash_del(&mapping->node_by_ext_port); 262 | + hash_del(&mapping->node_by_int_src); 263 | + kfree(mapping); 264 | +} 265 | + 266 | +static void destroy_mappings(void) { 267 | + struct nat_mapping *p_current; 268 | + struct hlist_node *tmp; 269 | + int i; 270 | + 271 | + spin_lock_bh(&fullconenat_lock); 272 | + 273 | + hash_for_each_safe(mapping_table_by_ext_port, i, tmp, p_current, node_by_ext_port) { 274 | + kill_mapping(p_current); 275 | + } 276 | + 277 | + spin_unlock_bh(&fullconenat_lock); 278 | +} 279 | + 280 | +/* check if a mapping is valid. 281 | + * possibly delete and free an invalid mapping. 282 | + * the mapping should not be used anymore after check_mapping() returns 0. */ 283 | +static int check_mapping(struct nat_mapping* mapping, struct net *net, const struct nf_conntrack_zone *zone) { 284 | + struct list_head *iter, *tmp; 285 | + struct nat_mapping_original_tuple *original_tuple_item; 286 | + struct nf_conntrack_tuple_hash *tuple_hash; 287 | + struct nf_conn *ct; 288 | + 289 | + if (mapping == NULL) { 290 | + return 0; 291 | + } 292 | + 293 | + if (mapping->port == 0 || mapping->int_addr == 0 || mapping->int_port == 0 || mapping->ifindex == -1) { 294 | + return 0; 295 | + } 296 | + 297 | + /* for dying/unconfirmed conntrack tuples, an IPCT_DESTROY event may NOT be fired. 298 | + * so we manually kill one of those tuples once we acquire one. */ 299 | + 300 | + list_for_each_safe(iter, tmp, &mapping->original_tuple_list) { 301 | + original_tuple_item = list_entry(iter, struct nat_mapping_original_tuple, node); 302 | + 303 | + tuple_hash = nf_conntrack_find_get(net, zone, &original_tuple_item->tuple); 304 | + 305 | + if (tuple_hash == NULL) { 306 | + pr_debug("xt_FULLCONENAT: check_mapping(): tuple %s dying/unconfirmed. free this tuple.\n", nf_ct_stringify_tuple(&original_tuple_item->tuple)); 307 | + 308 | + list_del(&original_tuple_item->node); 309 | + kfree(original_tuple_item); 310 | + (mapping->refer_count)--; 311 | + } else { 312 | + ct = nf_ct_tuplehash_to_ctrack(tuple_hash); 313 | + if (ct != NULL) 314 | + nf_ct_put(ct); 315 | + } 316 | + 317 | + } 318 | + 319 | + /* kill the mapping if need */ 320 | + pr_debug("xt_FULLCONENAT: check_mapping() refer_count for mapping at ext_port %d is now %d\n", mapping->port, mapping->refer_count); 321 | + if (mapping->refer_count <= 0) { 322 | + pr_debug("xt_FULLCONENAT: check_mapping(): kill dying/unconfirmed mapping at ext port %d\n", mapping->port); 323 | + kill_mapping(mapping); 324 | + return 0; 325 | + } else { 326 | + return 1; 327 | + } 328 | +} 329 | + 330 | +static void handle_dying_tuples(void) { 331 | + struct list_head *iter, *tmp, *iter_2, *tmp_2; 332 | + struct tuple_list *item; 333 | + struct nf_conntrack_tuple *ct_tuple; 334 | + struct nat_mapping *mapping; 335 | + __be32 ip; 336 | + uint16_t port; 337 | + struct nat_mapping_original_tuple *original_tuple_item; 338 | + 339 | + spin_lock_bh(&fullconenat_lock); 340 | + spin_lock_bh(&dying_tuple_list_lock); 341 | + 342 | + list_for_each_safe(iter, tmp, &dying_tuple_list) { 343 | + item = list_entry(iter, struct tuple_list, list); 344 | + 345 | + /* we dont know the conntrack direction for now so we try in both ways. */ 346 | + ct_tuple = &(item->tuple_original); 347 | + ip = (ct_tuple->src).u3.ip; 348 | + port = be16_to_cpu((ct_tuple->src).u.udp.port); 349 | + mapping = get_mapping_by_int_src(ip, port); 350 | + if (mapping == NULL) { 351 | + ct_tuple = &(item->tuple_reply); 352 | + ip = (ct_tuple->src).u3.ip; 353 | + port = be16_to_cpu((ct_tuple->src).u.udp.port); 354 | + mapping = get_mapping_by_int_src(ip, port); 355 | + if (mapping != NULL) { 356 | + pr_debug("xt_FULLCONENAT: handle_dying_tuples(): INBOUND dying conntrack at ext port %d\n", mapping->port); 357 | + } 358 | + } else { 359 | + pr_debug("xt_FULLCONENAT: handle_dying_tuples(): OUTBOUND dying conntrack at ext port %d\n", mapping->port); 360 | + } 361 | + 362 | + if (mapping == NULL) { 363 | + goto next; 364 | + } 365 | + 366 | + /* look for the corresponding out-dated tuple and free it */ 367 | + list_for_each_safe(iter_2, tmp_2, &mapping->original_tuple_list) { 368 | + original_tuple_item = list_entry(iter_2, struct nat_mapping_original_tuple, node); 369 | + 370 | + if (nf_ct_tuple_equal(&original_tuple_item->tuple, &(item->tuple_original))) { 371 | + pr_debug("xt_FULLCONENAT: handle_dying_tuples(): tuple %s expired. free this tuple.\n", 372 | + nf_ct_stringify_tuple(&original_tuple_item->tuple)); 373 | + list_del(&original_tuple_item->node); 374 | + kfree(original_tuple_item); 375 | + (mapping->refer_count)--; 376 | + } 377 | + } 378 | + 379 | + /* then kill the mapping if needed*/ 380 | + pr_debug("xt_FULLCONENAT: handle_dying_tuples(): refer_count for mapping at ext_port %d is now %d\n", mapping->port, mapping->refer_count); 381 | + if (mapping->refer_count <= 0) { 382 | + pr_debug("xt_FULLCONENAT: handle_dying_tuples(): kill expired mapping at ext port %d\n", mapping->port); 383 | + kill_mapping(mapping); 384 | + } 385 | + 386 | +next: 387 | + list_del(&item->list); 388 | + kfree(item); 389 | + } 390 | + 391 | + spin_unlock_bh(&dying_tuple_list_lock); 392 | + spin_unlock_bh(&fullconenat_lock); 393 | +} 394 | + 395 | +static void gc_worker(struct work_struct *work) { 396 | + handle_dying_tuples(); 397 | +} 398 | + 399 | +/* conntrack destroy event callback function */ 400 | +#ifdef CONFIG_NF_CONNTRACK_CHAIN_EVENTS 401 | +static int ct_event_cb(struct notifier_block *this, unsigned long events, void *ptr) { 402 | + struct nf_ct_event *item = ptr; 403 | +#else 404 | +static int ct_event_cb(unsigned int events, struct nf_ct_event *item) { 405 | +#endif 406 | + struct nf_conn *ct; 407 | + struct nf_conntrack_tuple *ct_tuple_reply, *ct_tuple_original; 408 | + uint8_t protonum; 409 | + struct tuple_list *dying_tuple_item; 410 | + 411 | + ct = item->ct; 412 | + /* we handle only conntrack destroy events */ 413 | + if (ct == NULL || !(events & (1 << IPCT_DESTROY))) { 414 | + return 0; 415 | + } 416 | + 417 | + ct_tuple_original = &(ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple); 418 | + 419 | + ct_tuple_reply = &(ct->tuplehash[IP_CT_DIR_REPLY].tuple); 420 | + 421 | + protonum = (ct_tuple_original->dst).protonum; 422 | + if (protonum != IPPROTO_UDP) { 423 | + return 0; 424 | + } 425 | + 426 | + dying_tuple_item = kmalloc(sizeof(struct tuple_list), GFP_ATOMIC); 427 | + 428 | + if (dying_tuple_item == NULL) { 429 | + pr_debug("xt_FULLCONENAT: warning: ct_event_cb(): kmalloc failed.\n"); 430 | + return 0; 431 | + } 432 | + 433 | + memcpy(&(dying_tuple_item->tuple_original), ct_tuple_original, sizeof(struct nf_conntrack_tuple)); 434 | + memcpy(&(dying_tuple_item->tuple_reply), ct_tuple_reply, sizeof(struct nf_conntrack_tuple)); 435 | + 436 | + spin_lock_bh(&dying_tuple_list_lock); 437 | + 438 | + list_add(&(dying_tuple_item->list), &dying_tuple_list); 439 | + 440 | + spin_unlock_bh(&dying_tuple_list_lock); 441 | + 442 | + if (wq != NULL) 443 | + queue_delayed_work(wq, &gc_worker_wk, msecs_to_jiffies(100)); 444 | + 445 | + return 0; 446 | +} 447 | + 448 | +static __be32 get_device_ip(const struct net_device* dev) { 449 | + struct in_device* in_dev; 450 | + struct in_ifaddr* if_info; 451 | + __be32 result; 452 | + 453 | + if (dev == NULL) { 454 | + return 0; 455 | + } 456 | + 457 | + rcu_read_lock(); 458 | + in_dev = dev->ip_ptr; 459 | + if (in_dev == NULL) { 460 | + rcu_read_unlock(); 461 | + return 0; 462 | + } 463 | + if_info = in_dev->ifa_list; 464 | + if (if_info) { 465 | + result = if_info->ifa_local; 466 | + rcu_read_unlock(); 467 | + return result; 468 | + } else { 469 | + rcu_read_unlock(); 470 | + return 0; 471 | + } 472 | +} 473 | + 474 | +static uint16_t find_appropriate_port(struct net *net, const struct nf_conntrack_zone *zone, const uint16_t original_port, const int ifindex, const struct nf_nat_ipv4_range *range) { 475 | + uint16_t min, start, selected, range_size, i; 476 | + struct nat_mapping* mapping = NULL; 477 | + 478 | + if (range->flags & NF_NAT_RANGE_PROTO_SPECIFIED) { 479 | + min = be16_to_cpu((range->min).udp.port); 480 | + range_size = be16_to_cpu((range->max).udp.port) - min + 1; 481 | + } else { 482 | + /* minimum port is 1024. same behavior as default linux NAT. */ 483 | + min = 1024; 484 | + range_size = 65535 - min + 1; 485 | + } 486 | + 487 | + if ((range->flags & NF_NAT_RANGE_PROTO_RANDOM) 488 | + || (range->flags & NF_NAT_RANGE_PROTO_RANDOM_FULLY)) { 489 | + /* for now we do the same thing for both --random and --random-fully */ 490 | + 491 | + /* select a random starting point */ 492 | + start = (uint16_t)(prandom_u32() % (u32)range_size); 493 | + } else { 494 | + 495 | + if ((original_port >= min && original_port <= min + range_size - 1) 496 | + || !(range->flags & NF_NAT_RANGE_PROTO_SPECIFIED)) { 497 | + /* 1. try to preserve the port if it's available */ 498 | + mapping = get_mapping_by_ext_port(original_port, ifindex); 499 | + if (mapping == NULL || !(check_mapping(mapping, net, zone))) { 500 | + return original_port; 501 | + } 502 | + } 503 | + 504 | + /* otherwise, we start from zero */ 505 | + start = 0; 506 | + } 507 | + 508 | + for (i = 0; i < range_size; i++) { 509 | + /* 2. try to find an available port */ 510 | + selected = min + ((start + i) % range_size); 511 | + mapping = get_mapping_by_ext_port(selected, ifindex); 512 | + if (mapping == NULL || !(check_mapping(mapping, net, zone))) { 513 | + return selected; 514 | + } 515 | + } 516 | + 517 | + /* 3. at least we tried. override a previous mapping. */ 518 | + selected = min + start; 519 | + mapping = get_mapping_by_ext_port(selected, ifindex); 520 | + kill_mapping(mapping); 521 | + 522 | + return selected; 523 | +} 524 | + 525 | +static unsigned int fullconenat_tg(struct sk_buff *skb, const struct xt_action_param *par) 526 | +{ 527 | + const struct nf_nat_ipv4_multi_range_compat *mr; 528 | + const struct nf_nat_ipv4_range *range; 529 | + 530 | + const struct nf_conntrack_zone *zone; 531 | + struct net *net; 532 | + struct nf_conn *ct; 533 | + enum ip_conntrack_info ctinfo; 534 | + struct nf_conntrack_tuple *ct_tuple, *ct_tuple_origin; 535 | + 536 | + struct net_device *net_dev; 537 | + 538 | + struct nat_mapping *mapping, *src_mapping; 539 | + unsigned int ret; 540 | +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 18, 0) 541 | + struct nf_nat_range2 newrange; 542 | +#else 543 | + struct nf_nat_range newrange; 544 | +#endif 545 | + 546 | + __be32 new_ip, ip; 547 | + uint16_t port, original_port, want_port; 548 | + uint8_t protonum; 549 | + int ifindex; 550 | + 551 | + ip = 0; 552 | + original_port = 0; 553 | + src_mapping = NULL; 554 | + 555 | + mr = par->targinfo; 556 | + range = &mr->range[0]; 557 | + 558 | + mapping = NULL; 559 | + ret = XT_CONTINUE; 560 | + 561 | + ct = nf_ct_get(skb, &ctinfo); 562 | + net = nf_ct_net(ct); 563 | + zone = nf_ct_zone(ct); 564 | + 565 | + memset(&newrange.min_addr, 0, sizeof(newrange.min_addr)); 566 | + memset(&newrange.max_addr, 0, sizeof(newrange.max_addr)); 567 | + newrange.flags = mr->range[0].flags | NF_NAT_RANGE_MAP_IPS; 568 | + newrange.min_proto = mr->range[0].min; 569 | + newrange.max_proto = mr->range[0].max; 570 | + 571 | + if (xt_hooknum(par) == NF_INET_PRE_ROUTING) { 572 | + /* inbound packets */ 573 | + ifindex = xt_in(par)->ifindex; 574 | + 575 | + ct_tuple_origin = &(ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple); 576 | + 577 | + protonum = (ct_tuple_origin->dst).protonum; 578 | + if (protonum != IPPROTO_UDP) { 579 | + return ret; 580 | + } 581 | + ip = (ct_tuple_origin->dst).u3.ip; 582 | + port = be16_to_cpu((ct_tuple_origin->dst).u.udp.port); 583 | + 584 | + /* get the corresponding ifindex by the dst_ip (aka. external ip of this host), 585 | + * in case the packet needs to be forwarded from another inbound interface. */ 586 | + net_dev = ip_dev_find(net, ip); 587 | + if (net_dev != NULL) { 588 | + ifindex = net_dev->ifindex; 589 | + dev_put(net_dev); 590 | + } 591 | + 592 | + spin_lock_bh(&fullconenat_lock); 593 | + 594 | + /* find an active mapping based on the inbound port */ 595 | + mapping = get_mapping_by_ext_port(port, ifindex); 596 | + if (mapping == NULL) { 597 | + spin_unlock_bh(&fullconenat_lock); 598 | + return ret; 599 | + } 600 | + if (check_mapping(mapping, net, zone)) { 601 | + newrange.flags = NF_NAT_RANGE_MAP_IPS | NF_NAT_RANGE_PROTO_SPECIFIED; 602 | + newrange.min_addr.ip = mapping->int_addr; 603 | + newrange.max_addr.ip = mapping->int_addr; 604 | + newrange.min_proto.udp.port = cpu_to_be16(mapping->int_port); 605 | + newrange.max_proto = newrange.min_proto; 606 | + 607 | + pr_debug("xt_FULLCONENAT: %s ==> %pI4:%d\n", nf_ct_stringify_tuple(ct_tuple_origin), &mapping->int_addr, mapping->int_port); 608 | + 609 | + ret = nf_nat_setup_info(ct, &newrange, HOOK2MANIP(xt_hooknum(par))); 610 | + 611 | + if (ret == NF_ACCEPT) { 612 | + add_original_tuple_to_mapping(mapping, ct_tuple_origin); 613 | + pr_debug("xt_FULLCONENAT: fullconenat_tg(): INBOUND: refer_count for mapping at ext_port %d is now %d\n", mapping->port, mapping->refer_count); 614 | + } 615 | + } 616 | + spin_unlock_bh(&fullconenat_lock); 617 | + return ret; 618 | + 619 | + 620 | + } else if (xt_hooknum(par) == NF_INET_POST_ROUTING) { 621 | + /* outbound packets */ 622 | + ifindex = xt_out(par)->ifindex; 623 | + 624 | + ct_tuple_origin = &(ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple); 625 | + protonum = (ct_tuple_origin->dst).protonum; 626 | + 627 | + spin_lock_bh(&fullconenat_lock); 628 | + 629 | + if (protonum == IPPROTO_UDP) { 630 | + ip = (ct_tuple_origin->src).u3.ip; 631 | + original_port = be16_to_cpu((ct_tuple_origin->src).u.udp.port); 632 | + 633 | + src_mapping = get_mapping_by_int_src(ip, original_port); 634 | + if (src_mapping != NULL && check_mapping(src_mapping, net, zone)) { 635 | + 636 | + /* outbound nat: if a previously established mapping is active, 637 | + * we will reuse that mapping. */ 638 | + 639 | + newrange.flags = NF_NAT_RANGE_MAP_IPS | NF_NAT_RANGE_PROTO_SPECIFIED; 640 | + newrange.min_proto.udp.port = cpu_to_be16(src_mapping->port); 641 | + newrange.max_proto = newrange.min_proto; 642 | + 643 | + } else { 644 | + 645 | + /* if not, we find a new external port to map to. 646 | + * the SNAT may fail so we should re-check the mapped port later. */ 647 | + want_port = find_appropriate_port(net, zone, original_port, ifindex, range); 648 | + 649 | + newrange.flags = NF_NAT_RANGE_MAP_IPS | NF_NAT_RANGE_PROTO_SPECIFIED; 650 | + newrange.min_proto.udp.port = cpu_to_be16(want_port); 651 | + newrange.max_proto = newrange.min_proto; 652 | + 653 | + src_mapping = NULL; 654 | + 655 | + } 656 | + } 657 | + 658 | + if(mr->range[0].flags & NF_NAT_RANGE_MAP_IPS) { 659 | + newrange.min_addr.ip = mr->range[0].min_ip; 660 | + newrange.max_addr.ip = mr->range[0].max_ip; 661 | + } else { 662 | + new_ip = get_device_ip(skb->dev); 663 | + newrange.min_addr.ip = new_ip; 664 | + newrange.max_addr.ip = new_ip; 665 | + } 666 | + 667 | + /* do SNAT now */ 668 | + ret = nf_nat_setup_info(ct, &newrange, HOOK2MANIP(xt_hooknum(par))); 669 | + 670 | + if (protonum != IPPROTO_UDP || ret != NF_ACCEPT) { 671 | + /* for non-UDP packets and failed SNAT, bailout */ 672 | + spin_unlock_bh(&fullconenat_lock); 673 | + return ret; 674 | + } 675 | + 676 | + /* the reply tuple contains the mapped port. */ 677 | + ct_tuple = &(ct->tuplehash[IP_CT_DIR_REPLY].tuple); 678 | + /* this is the resulted mapped port. */ 679 | + port = be16_to_cpu((ct_tuple->dst).u.udp.port); 680 | + 681 | + pr_debug("xt_FULLCONENAT: %s ==> %d\n", nf_ct_stringify_tuple(ct_tuple_origin), port); 682 | + 683 | + /* save the mapping information into our mapping table */ 684 | + mapping = src_mapping; 685 | + if (mapping == NULL || !check_mapping(mapping, net, zone)) { 686 | + mapping = allocate_mapping(ip, original_port, port, ifindex); 687 | + } 688 | + if (mapping != NULL) { 689 | + add_original_tuple_to_mapping(mapping, ct_tuple_origin); 690 | + pr_debug("xt_FULLCONENAT: fullconenat_tg(): OUTBOUND: refer_count for mapping at ext_port %d is now %d\n", mapping->port, mapping->refer_count); 691 | + } 692 | + 693 | + spin_unlock_bh(&fullconenat_lock); 694 | + return ret; 695 | + } 696 | + 697 | + return ret; 698 | +} 699 | + 700 | +static int fullconenat_tg_check(const struct xt_tgchk_param *par) 701 | +{ 702 | + mutex_lock(&nf_ct_net_event_lock); 703 | + 704 | + tg_refer_count++; 705 | + 706 | + pr_debug("xt_FULLCONENAT: fullconenat_tg_check(): tg_refer_count is now %d\n", tg_refer_count); 707 | + 708 | + if (tg_refer_count == 1) { 709 | + nf_ct_netns_get(par->net, par->family); 710 | +#ifdef CONFIG_NF_CONNTRACK_CHAIN_EVENTS 711 | + ct_event_notifier.notifier_call = ct_event_cb; 712 | +#else 713 | + ct_event_notifier.fcn = ct_event_cb; 714 | +#endif 715 | + 716 | + if (nf_conntrack_register_notifier(par->net, &ct_event_notifier) == 0) { 717 | + ct_event_notifier_registered = 1; 718 | + pr_debug("xt_FULLCONENAT: fullconenat_tg_check(): ct_event_notifier registered\n"); 719 | + } else { 720 | + printk("xt_FULLCONENAT: warning: failed to register a conntrack notifier. Disable active GC for mappings.\n"); 721 | + } 722 | + 723 | + } 724 | + 725 | + mutex_unlock(&nf_ct_net_event_lock); 726 | + 727 | + return 0; 728 | +} 729 | + 730 | +static void fullconenat_tg_destroy(const struct xt_tgdtor_param *par) 731 | +{ 732 | + mutex_lock(&nf_ct_net_event_lock); 733 | + 734 | + tg_refer_count--; 735 | + 736 | + pr_debug("xt_FULLCONENAT: fullconenat_tg_destroy(): tg_refer_count is now %d\n", tg_refer_count); 737 | + 738 | + if (tg_refer_count == 0) { 739 | + if (ct_event_notifier_registered) { 740 | + nf_conntrack_unregister_notifier(par->net, &ct_event_notifier); 741 | + ct_event_notifier_registered = 0; 742 | + 743 | + pr_debug("xt_FULLCONENAT: fullconenat_tg_destroy(): ct_event_notifier unregistered\n"); 744 | + 745 | + } 746 | + nf_ct_netns_put(par->net, par->family); 747 | + } 748 | + 749 | + mutex_unlock(&nf_ct_net_event_lock); 750 | +} 751 | + 752 | +static struct xt_target tg_reg[] __read_mostly = { 753 | + { 754 | + .name = "FULLCONENAT", 755 | + .family = NFPROTO_IPV4, 756 | + .revision = 0, 757 | + .target = fullconenat_tg, 758 | + .targetsize = sizeof(struct nf_nat_ipv4_multi_range_compat), 759 | + .table = "nat", 760 | + .hooks = (1 << NF_INET_PRE_ROUTING) | 761 | + (1 << NF_INET_POST_ROUTING), 762 | + .checkentry = fullconenat_tg_check, 763 | + .destroy = fullconenat_tg_destroy, 764 | + .me = THIS_MODULE, 765 | + }, 766 | +}; 767 | + 768 | +static int __init fullconenat_tg_init(void) 769 | +{ 770 | + wq = create_singlethread_workqueue("xt_FULLCONENAT"); 771 | + if (wq == NULL) { 772 | + printk("xt_FULLCONENAT: warning: failed to create workqueue\n"); 773 | + } 774 | + 775 | + return xt_register_targets(tg_reg, ARRAY_SIZE(tg_reg)); 776 | +} 777 | + 778 | +static void fullconenat_tg_exit(void) 779 | +{ 780 | + xt_unregister_targets(tg_reg, ARRAY_SIZE(tg_reg)); 781 | + 782 | + if (wq) { 783 | + cancel_delayed_work_sync(&gc_worker_wk); 784 | + flush_workqueue(wq); 785 | + destroy_workqueue(wq); 786 | + } 787 | + 788 | + handle_dying_tuples(); 789 | + destroy_mappings(); 790 | +} 791 | + 792 | +module_init(fullconenat_tg_init); 793 | +module_exit(fullconenat_tg_exit); 794 | + 795 | +MODULE_LICENSE("GPL"); 796 | +MODULE_DESCRIPTION("Xtables: implementation of RFC3489 full cone NAT"); 797 | +MODULE_AUTHOR("Chion Tang "); 798 | +MODULE_ALIAS("ipt_FULLCONENAT"); 799 | -------------------------------------------------------------------------------- /add_packages_to_lean.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cd friendlywrt-rk3328/friendlywrt 3 | cd package/lean/ 4 | rm -rf luci-theme-argon 5 | pwd 6 | git clone -b 18.06 https://github.com/jerrykuku/luci-theme-argon.git 7 | cd luci-theme-argon 8 | ../../../../../set_repo_hash.sh Argon 9 | cd ../.. 10 | 11 | pwd 12 | git clone https://github.com/rufengsuixing/luci-app-adguardhome.git 13 | cd luci-app-adguardhome 14 | ../../../../set_repo_hash.sh AdguardHome 15 | cd .. 16 | 17 | pwd 18 | git clone https://github.com/tty228/luci-app-serverchan.git 19 | cd luci-app-serverchan 20 | ../../../../set_repo_hash.sh ServerChan 21 | cd ../.. 22 | 23 | pwd 24 | echo "src-git scw https://github.com/songchenwen/openwrt-package" >> feeds.conf.default 25 | ../../set_repo_hash.sh ScwPackage https://github.com/songchenwen/openwrt-package.git 26 | 27 | echo "" 28 | echo "feeds.conf.default" 29 | cat feeds.conf.default 30 | 31 | cp -r ../../luci-app-r2sflasher package/ 32 | -------------------------------------------------------------------------------- /changelog.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | VARIANTNAME=$1 3 | StatusFile=$VARIANTNAME/status.env 4 | NewStatusFile=$VARIANTNAME/newstatus.env 5 | RepoUsedPathFile=$VARIANTNAME/repo_used_path.env 6 | URLFile=name_and_urls.env 7 | ChangeLogFile=$VARIANTNAME/CHANGELOG.md 8 | BuildTag="$VARIANTNAME-$(date +%Y-%m-%d)-$BuilderHash" 9 | env | grep "Hash" > $NewStatusFile 10 | ChangeLog="" 11 | while read l; do 12 | IFS='=' 13 | read -ra Parts <<< "$l" 14 | name=${Parts[0]/Hash/} 15 | hash=${Parts[1]} 16 | hash=$(echo $hash | cut -c -7) 17 | url="" 18 | if [ -f "$URLFile" ]; then 19 | urlLine=$(grep $URLFile -e ${name}URL) 20 | url=$(echo "${urlLine/${name}URL=/}") 21 | fi 22 | 23 | oldLine="" 24 | if [ -f "$StatusFile" ]; then 25 | oldLine=$(grep $StatusFile -e ${name}Hash) 26 | fi 27 | 28 | logPathLine="" 29 | if [ -f "$RepoUsedPathFile" ]; then 30 | logPathLine=$(grep $RepoUsedPathFile -e ${name}) 31 | fi 32 | 33 | title="" 34 | body="" 35 | if [ "$oldLine" == "" ]; then 36 | title="${name} [$hash]($url/commit/$hash)" 37 | else 38 | read -ra Parts <<< "$oldLine" 39 | oldHash=${Parts[1]} 40 | oldHash=$(echo $oldHash | cut -c -7) 41 | if ! [ "$oldHash" == "$hash" ]; then 42 | logPath="" 43 | if ! [ "$logPathLine" == "" ]; then 44 | read -ra Parts <<< "$logPathLine" 45 | logPath=${Parts[1]} 46 | echo "only log repo $name for $logPath" 47 | fi 48 | 49 | title="${name} [${oldHash}..$hash]($url/compare/$oldHash..$hash)" 50 | branch=master 51 | if [ "$name" == "Argon" ]; then 52 | branch="18.06" 53 | fi 54 | if [ "$name" == "FriendlyWRT" ]; then 55 | branch="master-v19.07.1" 56 | fi 57 | if [ "$name" == "Kernel" ]; then 58 | branch="nanopi-r2-v5.4.y" 59 | fi 60 | 61 | mkdir -p .temprepo 62 | cd .temprepo 63 | git init 64 | git remote add $name ${url}.git 65 | git fetch $name 66 | body=" 67 | | Commit | Author | Desc | 68 | | :----- | :------| :--- | 69 | " 70 | echo "Generating Change Log for ${name}/${branch} ${oldHash}..${hash} -- ${logPath}" 71 | table=$(git log --no-merges --invert-grep --author="action@github.com" --pretty=format:"| [%h](${url}/commit/%h) | %an | %s |" ${oldHash}..${hash} ${name}/${branch} -- ${logPath}) 72 | if [ "$table" == "" ]; then 73 | body="" 74 | title="" 75 | else 76 | body="$body$table" 77 | fi 78 | cd .. 79 | fi 80 | fi 81 | if ! [ "$title" == "" ]; then 82 | ChangeLog="${ChangeLog}#### $title 83 | 84 | $body 85 | 86 | 87 | " 88 | fi 89 | done <$NewStatusFile 90 | 91 | echo "$ChangeLog" 92 | 93 | ChangeLogEscaped="${ChangeLog//'%'/'%25'}" 94 | ChangeLogEscaped="${ChangeLogEscaped//$'\n'/'%0A'}" 95 | ChangeLogEscaped="${ChangeLogEscaped//$'\r'/'%0D'}" 96 | echo "::set-output name=changelog::$ChangeLogEscaped" 97 | echo "::set-output name=buildtag::$BuildTag" 98 | if [ "$ChangeLog" == "" ]; then 99 | echo "No Change Happened, We Should Not Build." 100 | exit 0 101 | fi 102 | 103 | ChangeLogFull="## $BuildTag 104 | 105 | $ChangeLog 106 | 107 | -------------- 108 | " 109 | touch $ChangeLogFile 110 | printf '%s\n%s\n' "$ChangeLogFull" "$(cat $ChangeLogFile)" >$ChangeLogFile 111 | rm $StatusFile 112 | mv $NewStatusFile $StatusFile 113 | 114 | sed -i -E "s/(releases\/download\/)${VARIANTNAME}-[0-9]{4}-[0-9]{2}-[0-9]{2}-[0-9a-f]+\/${VARIANTNAME}-[0-9]{4}-[0-9]{2}-[0-9]{2}-[0-9a-f]+-ROM.zip/\1${BuildTag}\/${BuildTag}-ROM.zip/" ${VARIANTNAME}/README.md 115 | 116 | git add $StatusFile 117 | git add $ChangeLogFile 118 | git add ${VARIANTNAME}/README.md 119 | git commit -m "ChangeLog for $BuildTag" 120 | # git push 121 | -------------------------------------------------------------------------------- /features.seed: -------------------------------------------------------------------------------- 1 | CONFIG_AUTOREMOVE=y 2 | CONFIG_BUILD_PATENTED=y 3 | CONFIG_BRCMFMAC_SDIO=y 4 | CONFIG_IMAGEOPT=y 5 | CONFIG_KERNEL_AIO=y 6 | CONFIG_JSON_ADD_IMAGE_INFO=y 7 | CONFIG_KERNEL_ARM_PMU=y 8 | CONFIG_KERNEL_BLK_CGROUP=y 9 | CONFIG_KERNEL_BLK_DEV_THROTTLING=y 10 | CONFIG_KERNEL_BTRFS_FS_POSIX_ACL=y 11 | CONFIG_KERNEL_KALLSYMS=y 12 | CONFIG_KERNEL_PERF_EVENTS=y 13 | CONFIG_KERNEL_CGROUPS=y 14 | CONFIG_KERNEL_CGROUP_CPUACCT=y 15 | CONFIG_KERNEL_CGROUP_DEVICE=y 16 | CONFIG_KERNEL_CGROUP_FREEZER=y 17 | CONFIG_KERNEL_CGROUP_PIDS=y 18 | CONFIG_KERNEL_CGROUP_SCHED=y 19 | CONFIG_KERNEL_MEMCG=y 20 | CONFIG_KERNEL_MEMCG_KMEM=y 21 | CONFIG_KERNEL_MM_OWNER=y 22 | CONFIG_KERNEL_NETPRIO_CGROUP=y 23 | CONFIG_KERNEL_NET_CLS_CGROUP=y 24 | CONFIG_KERNEL_CPUSETS=y 25 | CONFIG_KERNEL_FAIR_GROUP_SCHED=y 26 | CONFIG_KERNEL_FANOTIFY=y 27 | CONFIG_KERNEL_FHANDLE=y 28 | CONFIG_KERNEL_FREEZER=y 29 | CONFIG_KERNEL_RESOURCE_COUNTERS=y 30 | CONFIG_KERNEL_RT_GROUP_SCHED=y 31 | CONFIG_LUCI_LANG_en=y 32 | CONFIG_LUCI_LANG_zh-cn=y 33 | CONFIG_LUCI_LANG_zh-tw=y 34 | CONFIG_PACKAGE_libustream-openssl=y 35 | CONFIG_PACKAGE_ca-bundle=y 36 | CONFIG_PACKAGE_ca-certificates=y 37 | CONFIG_PACKAGE_bash=y 38 | CONFIG_PACKAGE_wget=y 39 | CONFIG_PACKAGE_triggerhappy=y 40 | CONFIG_PACKAGE_uboot-envtools=y 41 | CONFIG_PACKAGE_usb-modeswitch=y 42 | CONFIG_PACKAGE_kmod-mmc=y 43 | CONFIG_PACKAGE_kmod-ikconfig=y 44 | CONFIG_PACKAGE_kmod-tun=y 45 | CONFIG_PACKAGE_kmod-usb-net=y 46 | CONFIG_PACKAGE_kmod-usb-net-rtl8150=y 47 | CONFIG_PACKAGE_kmod-usb-net-rtl8152=y 48 | CONFIG_PACKAGE_iw=y 49 | CONFIG_PACKAGE_iwinfo=y 50 | CONFIG_PACKAGE_hostapd=y 51 | CONFIG_PACKAGE_hostapd-basic=y 52 | CONFIG_PACKAGE_hostapd-utils=y 53 | CONFIG_PACKAGE_wpad=y 54 | CONFIG_PACKAGE_wpad-mini=y 55 | CONFIG_PACKAGE_wpa-supplicant=y 56 | CONFIG_DRIVER_11N_SUPPORT=y 57 | CONFIG_DRIVER_11AC_SUPPORT=y 58 | CONFIG_DRIVER_11W_SUPPORT=y 59 | CONFIG_PACKAGE_kmod-brcmfmac=y 60 | CONFIG_PACKAGE_kmod-cfg80211=y 61 | CONFIG_PACKAGE_ipv6helper=y 62 | CONFIG_PACKAGE_dnsmasq_full_dhcpv6=y 63 | CONFIG_OPENSSL_ENGINE_BUILTIN=y 64 | CONFIG_OPENSSL_ENGINE_BUILTIN_AFALG=y 65 | CONFIG_OPENSSL_OPTIMIZE_SPEED=y 66 | CONFIG_OPENSSL_WITH_DTLS=y 67 | CONFIG_OPENSSL_WITH_EC2M=y 68 | CONFIG_OPENSSL_WITH_NPN=y 69 | # CONFIG_OPENSSL_ENGINE_BUILTIN_DEVCRYPTO is not set 70 | # CONFIG_PACKAGE_kmod-cryptodev is not set 71 | # CONFIG_PACKAGE_libopenssl-devcrypto is not set 72 | CONFIG_LIBSODIUM_MINIMAL=y 73 | CONFIG_PACKAGE_collectd-mod-thermal=y 74 | CONFIG_PACKAGE_collectd-mod-uptime=y 75 | CONFIG_PACKAGE_collectd-mod-wireless=y 76 | CONFIG_PACKAGE_collectd=y 77 | CONFIG_PACKAGE_curl=y 78 | CONFIG_PACKAGE_lrzsz=y 79 | CONFIG_PACKAGE_nano=y 80 | CONFIG_PACKAGE_bash=y 81 | CONFIG_PACKAGE_resolveip=y 82 | CONFIG_PACKAGE_sudo=y 83 | CONFIG_PACKAGE_tcping=y 84 | CONFIG_PACKAGE_autocore=y 85 | CONFIG_PACKAGE_htop=y 86 | CONFIG_PACKAGE_diffutils=y 87 | CONFIG_PACKAGE_vim-fuller=y 88 | CONFIG_PACKAGE_pv=y 89 | CONFIG_PACKAGE_pigz=y 90 | CONFIG_PACKAGE_unzip=y 91 | CONFIG_PACKAGE_ethtool=y 92 | CONFIG_PACKAGE_coreutils-nohup=y 93 | CONFIG_PACKAGE_coreutils-timeout=y 94 | CONFIG_PACKAGE_luci-app-opkg=y 95 | CONFIG_PACKAGE_iptables-mod-extra=y 96 | CONFIG_PACKAGE_kmod-ipt-extra=y 97 | CONFIG_PACKAGE_libltdl=y 98 | CONFIG_PACKAGE_losetup=y 99 | CONFIG_PACKAGE_zstd=y 100 | CONFIG_PACKAGE_brook=y 101 | CONFIG_PACKAGE_zlib=y 102 | CONFIG_PACKAGE_chinadns-ng=y 103 | CONFIG_PACKAGE_haproxy=y 104 | CONFIG_PACKAGE_kcptun-client=y 105 | CONFIG_PACKAGE_luci-app-upnp=y 106 | CONFIG_PACKAGE_luci-app-accesscontrol=y 107 | CONFIG_PACKAGE_luci-app-arpbind=y 108 | CONFIG_PACKAGE_luci-app-autoreboot=y 109 | CONFIG_PACKAGE_luci-app-ddns=y 110 | CONFIG_PACKAGE_ddns-scripts_cloudflare.com-v4=y 111 | CONFIG_PACKAGE_luci-app-filetransfer=y 112 | CONFIG_PACKAGE_luci-app-firewall=y 113 | CONFIG_PACKAGE_luci-app-ramfree=y 114 | CONFIG_PACKAGE_luci-app-netdata=y 115 | CONFIG_PACKAGE_luci-app-vlmcsd=y 116 | CONFIG_PACKAGE_luci-app-wol=y 117 | CONFIG_PACKAGE_luci-app-wrtbwmon=y 118 | CONFIG_PACKAGE_luci-app-serverchan=y 119 | CONFIG_PACKAGE_luci-app-fileassistant=y 120 | CONFIG_PACKAGE_luci-app-r2sflasher=y 121 | CONFIG_PACKAGE_luci-app-passwall=y 122 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Brook=y 123 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Shadowsocks=y 124 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_ShadowsocksR_socks=y 125 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Shadowsocks_socks=y 126 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Trojan=y 127 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_kcptun=y 128 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_simple-obfs=y 129 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_v2ray-plugin=y 130 | CONFIG_PACKAGE_luci-app-ssr-plus=y 131 | CONFIG_PACKAGE_luci-app-ssr-plus_INCLUDE_Kcptun=y 132 | CONFIG_PACKAGE_luci-app-ssr-plus_INCLUDE_Redsocks2=y 133 | CONFIG_PACKAGE_luci-app-ssr-plus_INCLUDE_ShadowsocksR_Server=y 134 | CONFIG_PACKAGE_luci-app-ssr-plus_INCLUDE_Trojan=y 135 | CONFIG_PACKAGE_luci-app-ssr-plus_INCLUDE_V2ray=y 136 | CONFIG_PACKAGE_luci-app-ssr-plus_INCLUDE_V2ray_plugin=y 137 | CONFIG_PACKAGE_v2ray-plugin=y 138 | CONFIG_PACKAGE_v2ray=y 139 | # CONFIG_V2RAY_COMPRESS_GOPROXY is not set 140 | # CONFIG_V2RAY_JSON_V2CTL is not set 141 | CONFIG_V2RAY_JSON_INTERNAL=y 142 | # CONFIG_V2RAY_JSON_NONE is not set 143 | CONFIG_V2RAY_EXCLUDE_V2CTL=y 144 | CONFIG_V2RAY_EXCLUDE_ASSETS=y 145 | # CONFIG_V2RAY_COMPRESS_UPX is not set 146 | CONFIG_V2RAY_DISABLE_NONE=y 147 | # CONFIG_V2RAY_DISABLE_CUSTOM is not set 148 | CONFIG_PACKAGE_luci-app-adguardhome=y 149 | CONFIG_PACKAGE_luci-theme-argon=y 150 | CONFIG_PACKAGE_luci-theme-argon-dark-mod=y 151 | # CONFIG_PACKAGE_kmod-iptunnel6 is not set 152 | # CONFIG_PACKAGE_kmod-nf-conntrack-netlink is not set 153 | # CONFIG_PACKAGE_libcares is not set 154 | # CONFIG_PACKAGE_libevent2 is not set 155 | # CONFIG_PACKAGE_libgmp is not set 156 | # CONFIG_PACKAGE_libhttp-parser is not set 157 | # CONFIG_PACKAGE_libnatpmp is not set 158 | # CONFIG_PACKAGE_libnet-1.2.x is not set 159 | # CONFIG_PACKAGE_libnghttp2 is not set 160 | # CONFIG_PACKAGE_libpcap is not set 161 | # CONFIG_PACKAGE_libuv is not set 162 | # CONFIG_PACKAGE_microsocks is not set 163 | # CONFIG_PACKAGE_vsftpd-alt is not set 164 | CONFIG_PACKAGE_luci-app-adbyby-plus=y 165 | CONFIG_PACKAGE_luci-app-aria2=y 166 | CONFIG_PACKAGE_ddns-scripts_aliyun=y 167 | CONFIG_PACKAGE_ddns-scripts_cloudflare.com-v4=y 168 | CONFIG_PACKAGE_luci-app-frpc=y 169 | CONFIG_PACKAGE_luci-app-samba=y 170 | CONFIG_PACKAGE_autosamba=y 171 | CONFIG_PACKAGE_wsdd2=y 172 | CONFIG_PACKAGE_luci-app-unblockmusic=y 173 | CONFIG_UnblockNeteaseMusic_Go=y 174 | CONFIG_UnblockNeteaseMusic_NodeJS=y 175 | CONFIG_PACKAGE_luci-app-zerotier=y 176 | CONFIG_PACKAGE_luci-app-wireguard=y 177 | # CONFIG_PACKAGE_luci-app-ipsec-vpnd is not set 178 | # CONFIG_PACKAGE_iptables-mod-ipsec is not set 179 | # CONFIG_PACKAGE_kmod-ipt-ipsec is not set 180 | # CONFIG_PACKAGE_kmod-ipsec is not set 181 | # CONFIG_PACKAGE_strongswan is not set 182 | # CONFIG_PACKAGE_strongswan-charon is not set 183 | # CONFIG_PACKAGE_strongswan-ipsec is not set 184 | # CONFIG_PACKAGE_strongswan-minimal is not set 185 | # CONFIG_PACKAGE_strongswan-mod-aes is not set 186 | # CONFIG_PACKAGE_strongswan-mod-gmp is not set 187 | # CONFIG_PACKAGE_strongswan-mod-hmac is not set 188 | # CONFIG_PACKAGE_strongswan-mod-kernel-netlink is not set 189 | # CONFIG_PACKAGE_strongswan-mod-nonce is not set 190 | # CONFIG_PACKAGE_strongswan-mod-pubkey is not set 191 | # CONFIG_PACKAGE_strongswan-mod-random is not set 192 | # CONFIG_PACKAGE_strongswan-mod-sha1 is not set 193 | # CONFIG_PACKAGE_strongswan-mod-socket-default is not set 194 | # CONFIG_PACKAGE_strongswan-mod-stroke is not set 195 | # CONFIG_PACKAGE_strongswan-mod-updown is not set 196 | # CONFIG_PACKAGE_strongswan-mod-x509 is not set 197 | # CONFIG_PACKAGE_strongswan-mod-xauth-generic is not set 198 | # CONFIG_PACKAGE_strongswan-mod-xcbc is not 199 | 200 | CONFIG_PACKAGE_kmod-ipt-offload=y 201 | CONFIG_PACKAGE_luci-app-flowoffload=y 202 | CONFIG_PACKAGE_kmod-ipt-fullconenat=y 203 | CONFIG_PACKAGE_iptables-mod-fullconenat=y 204 | -------------------------------------------------------------------------------- /friendlywrt_source.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | mkdir friendlywrt-rk3328 3 | cd friendlywrt-rk3328 4 | repo init -u https://github.com/friendlyarm/friendlywrt_manifests -b master-v19.07.1 -m rk3328.xml --repo-url=https://github.com/friendlyarm/repo --no-clone-bundle --depth=1 5 | repo sync -c --no-tags --no-clone-bundle -j8 6 | cd friendlywrt/ && git fetch --unshallow 7 | ../../set_repo_hash.sh FriendlyWRT 8 | -------------------------------------------------------------------------------- /images/r2s_dhcp_nat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/songchenwen/nanopi-r2s/6928abdc5b55107a80b327ce08bf61d6846910ed/images/r2s_dhcp_nat.png -------------------------------------------------------------------------------- /images/r2s_fastcom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/songchenwen/nanopi-r2s/6928abdc5b55107a80b327ce08bf61d6846910ed/images/r2s_fastcom.png -------------------------------------------------------------------------------- /images/r2s_fastcom_nat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/songchenwen/nanopi-r2s/6928abdc5b55107a80b327ce08bf61d6846910ed/images/r2s_fastcom_nat.png -------------------------------------------------------------------------------- /images/r2s_pppoe_nat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/songchenwen/nanopi-r2s/6928abdc5b55107a80b327ce08bf61d6846910ed/images/r2s_pppoe_nat.png -------------------------------------------------------------------------------- /init_env.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo rm -rf /etc/apt/sources.list.d 3 | sudo apt-get update 4 | sudo apt-get -y --no-install-recommends install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs gcc-multilib g++-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler jq 5 | curl https://raw.githubusercontent.com/friendlyarm/build-env-on-ubuntu-bionic/master/install.sh | sed '/#/d' | sed 's/\\//g' | sed 's/exit 0//g' | sed 's/sudo apt -y install//g' | sed 's/sudo apt-get -y install//g' | sed 's/:i386//g' | xargs sudo apt-get -y --no-install-recommends install 6 | sudo rm -rf /usr/share/dotnet /usr/local/lib/android/sdk 7 | sudo docker image prune -a -f 8 | 9 | git clone https://github.com/friendlyarm/repo 10 | sudo cp repo/repo /usr/bin/ 11 | -------------------------------------------------------------------------------- /luci-app-r2sflasher/Makefile: -------------------------------------------------------------------------------- 1 | include $(TOPDIR)/rules.mk 2 | 3 | PKG_NAME:=luci-app-r2sflasher 4 | PKG_VERSION:=1.0 5 | PKG_RELEASE:=4 6 | PKG_DATE:=20200416 7 | 8 | include $(INCLUDE_DIR)/package.mk 9 | 10 | define Package/$(PKG_NAME) 11 | CATEGORY:=LuCI 12 | SUBMENU:=3. Applications 13 | TITLE:=LuCI Application to Flash NanoPi R2S ROM 14 | PKGARCH:=all 15 | DEPENDS:=+bash +gzip +tar +unzip +pv +losetup +zstd +luci-base +luci-lib-nixio 16 | endef 17 | 18 | define Build/Prepare 19 | endef 20 | 21 | define Build/Configure 22 | endef 23 | 24 | define Build/Compile 25 | endef 26 | 27 | define Package/$(PKG_NAME)/install 28 | $(INSTALL_DIR) $(1)/usr/bin 29 | cp ./root/usr/bin/rom_flash $(1)/usr/bin/rom_flash 30 | 31 | $(INSTALL_DIR) $(1)/usr/lib/lua/luci 32 | cp -pR ./luasrc/* $(1)/usr/lib/lua/luci/ 33 | 34 | $(INSTALL_DIR) $(1)/usr/lib/lua/luci/i18n 35 | po2lmo ./po/zh-cn/r2sflasher.po $(1)/usr/lib/lua/luci/i18n/r2sflasher.zh-cn.lmo 36 | endef 37 | 38 | define Package/$(PKG_NAME)/postinst 39 | #!/bin/sh 40 | chmod a+x $${IPKG_INSTROOT}/usr/bin/rom_flash >/dev/null 2>&1 41 | exit 0 42 | endef 43 | 44 | $(eval $(call BuildPackage,$(PKG_NAME))) -------------------------------------------------------------------------------- /luci-app-r2sflasher/README.md: -------------------------------------------------------------------------------- 1 | # NanoPi R2S 图形化刷机工具 2 | 3 | ![r2sflasher](images/luci-app-r2sflasher.png) 4 | 5 | 支持上传常用压缩格式的固件包图形化刷机。 6 | 7 | 从[这里下载](../FriendlyWRT)的 zip 包中会含有 ipk 安装文件,可以用 luci 界面的文件传输安装,或在 ssh 中执行安装命令 `opkg install luci-app-r2sflasher*.ipk --force-depends` 8 | -------------------------------------------------------------------------------- /luci-app-r2sflasher/images/luci-app-r2sflasher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/songchenwen/nanopi-r2s/6928abdc5b55107a80b327ce08bf61d6846910ed/luci-app-r2sflasher/images/luci-app-r2sflasher.png -------------------------------------------------------------------------------- /luci-app-r2sflasher/luasrc/controller/r2sflasher.lua: -------------------------------------------------------------------------------- 1 | -- Copyright 2020 scw 2 | module("luci.controller.r2sflasher", package.seeall) 3 | 4 | function index() 5 | entry({"admin", "system", "r2sflasher"}, form("r2sflasher/flash"), _("R2S Flasher"), 79) 6 | entry({"admin", "system", "r2sflasher", "log"}, form("r2sflasher/log")) 7 | entry({"admin", "system", "r2sflasher", "get_log"}, call("get_log")).leaf = true 8 | end 9 | 10 | function get_log() 11 | luci.http.write(luci.sys.exec( 12 | "[ -f '/tmp/r2sflasher.log' ] && cat /tmp/r2sflasher.log")) 13 | end 14 | -------------------------------------------------------------------------------- /luci-app-r2sflasher/luasrc/model/cbi/r2sflasher/flash.lua: -------------------------------------------------------------------------------- 1 | local http = luci.http 2 | local dsp = require 'luci.dispatcher' 3 | 4 | romform = SimpleForm("romflash", translate("Flash ROM"), nil) 5 | romform.reset = false 6 | romform.submit = false 7 | 8 | section = romform:section(SimpleSection, "", translate("Choose Your NanoPi R2S ROM zip File to Flash")) 9 | fu = section:option(FileUpload, "") 10 | fu.template = "r2sflasher/rom" 11 | um = section:option(DummyValue, "", nil) 12 | 13 | local dir, fd 14 | dir = "/tmp/r2sflasher/" 15 | nixio.fs.mkdir(dir) 16 | http.setfilehandler( 17 | function(meta, chunk, eof) 18 | if not fd then 19 | if not meta then return end 20 | 21 | if meta and chunk then fd = nixio.open(dir .. meta.file, "w") end 22 | 23 | if not fd then 24 | um.value = translate("Create upload file error.") 25 | return 26 | end 27 | end 28 | if chunk and fd then 29 | fd:write(chunk) 30 | end 31 | if eof and fd then 32 | fd:close() 33 | fd = nil 34 | local keep_config = luci.http.formvalue("keep_config") 35 | cmd = "/usr/bin/rom_flash " .. dir .. meta.file 36 | if keep_config == nil then 37 | cmd = cmd .. " nobackup" 38 | end 39 | luci.sys.call(cmd .. " &> /tmp/r2sflasher.log &") 40 | http.redirect(dsp.build_url("/admin/system/r2sflasher/log")) 41 | end 42 | end 43 | ) 44 | 45 | if luci.http.formvalue("flash") then 46 | local f = luci.http.formvalue("romfile") 47 | if #f <= 0 then 48 | um.value = translate("No Specify ROM File.") 49 | end 50 | end 51 | 52 | if luci.sys.call("pidof rom_flash > /dev/null") == 0 then 53 | http.redirect(dsp.build_url("/admin/system/r2sflasher/log")) 54 | return 55 | else 56 | return romform 57 | end 58 | -------------------------------------------------------------------------------- /luci-app-r2sflasher/luasrc/model/cbi/r2sflasher/log.lua: -------------------------------------------------------------------------------- 1 | log = SimpleForm("log") 2 | log.reset = false 3 | log.submit = false 4 | log:append(Template("r2sflasher/log")) 5 | return log -------------------------------------------------------------------------------- /luci-app-r2sflasher/luasrc/view/r2sflasher/log.htm: -------------------------------------------------------------------------------- 1 | <% 2 | local dsp = require "luci.dispatcher" 3 | -%> 4 | 5 | 30 |
31 | 32 |
33 | -------------------------------------------------------------------------------- /luci-app-r2sflasher/luasrc/view/r2sflasher/rom.htm: -------------------------------------------------------------------------------- 1 | <%+cbi/valueheader%> 2 | 3 | 4 |
<%:compatibility unchecked%>
5 | <%+cbi/valuefooter%> 6 | 7 | <%+cbi/valueheader%> 8 | 9 | 10 | 11 | <%+cbi/valuefooter%> 12 | 13 | <%+cbi/valueheader%> 14 |
by scw roms
15 | <%+cbi/valuefooter%> -------------------------------------------------------------------------------- /luci-app-r2sflasher/po/zh-cn/r2sflasher.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "Content-Type: text/plain; charset=UTF-8" 3 | 4 | msgid "R2S Flasher" 5 | msgstr "R2S 刷机" 6 | 7 | msgid "Flash ROM" 8 | msgstr "刷写 ROM" 9 | 10 | msgid "Choose Your NanoPi R2S ROM zip File to Flash" 11 | msgstr "选择 NanoPi R2S ROM zip 压缩文件" 12 | 13 | msgid "No Specify ROM File." 14 | msgstr "找不到 ROM 文件" 15 | 16 | msgid "Keep Configs" 17 | msgstr "保留设置" 18 | 19 | msgid "compatibility unchecked" 20 | msgstr "需自行确认设置兼容性" 21 | 22 | msgid "Choose File" 23 | msgstr "选择 ROM 文件" 24 | 25 | msgid "Flash" 26 | msgstr "刷写" 27 | -------------------------------------------------------------------------------- /luci-app-r2sflasher/root/usr/bin/rom_flash: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | sScriptName="$(basename $0)" 4 | 5 | if [ $(pidof ${sScriptName}| wc -w) -gt 2 ]; then 6 | pids=$(pidof ${sScriptName}) 7 | echo "其他任务正在执行刷机 ${pids}" 8 | exit 1 9 | fi 10 | 11 | needed_binaries=(unzip gunzip pv losetup tar zstdmt zstdcat) 12 | 13 | need_warn="" 14 | for i in "${needed_binaries[@]}"; do 15 | w_b=$(which $i) 16 | if [ "$w_b" == "" ]; then 17 | need_warn="${need_warn} $i" 18 | fi 19 | done 20 | if ! [ "$need_warn" == "" ]; then 21 | echo "无法刷机, 需要这些可执行文件 $need_warn" 22 | exit 1 23 | fi 24 | 25 | workingdir=/root/r2sflasher/ 26 | 27 | rm -rf $workingdir 28 | mkdir -p $workingdir 29 | 30 | cd $workingdir 31 | 32 | inputfile=$1 33 | nobackup=$2 34 | lomntpoint=/mnt/img 35 | backupfile=$workingdir/backup.tar.gz 36 | 37 | if [ "$inputfile" == "" ];then 38 | echo "需要传入 ROM zip 文件" 39 | exit 1 40 | fi 41 | 42 | if [ -f "$inputfile" ]; then 43 | echo "固件上传成功" 44 | else 45 | echo "固件上传失败" 46 | cd /root 47 | rm -rf $workingdir 48 | exit 1 49 | fi 50 | 51 | inputfileext=${inputfile##*.} 52 | 53 | gzfile="" 54 | 55 | if [ "$inputfileext" == "gz" ]; then 56 | gzfile="$inputfile" 57 | fi 58 | 59 | if [ "$inputfileext" == "zip" ]; then 60 | gzfile=$(unzip -Z -1 "$inputfile" | grep "sd.img.gz$") 61 | imgfile=$(unzip -Z -1 "$inputfile" | grep ".img$") 62 | 63 | if [ "$gzfile" == "" ] && [ "$imgfile" == "" ]; then 64 | echo "没发现 sd.img.gz 结尾的固件包" 65 | cd /root 66 | rm -rf $workingdir 67 | exit 1 68 | fi 69 | 70 | if ! [ "$gzfile" == "" ]; then 71 | unzip "$inputfile" "$gzfile" 72 | imgfile="" 73 | else 74 | if ! [ "$imgfile" == "" ]; then 75 | unzip "$inputfile" "$imgfile" 76 | fi 77 | fi 78 | 79 | rm $inputfile 80 | 81 | if [ -f "$gzfile" ] || [ -f "$imgfile" ]; then 82 | echo "zip 固件已解压至 ${gzfile}${imgfile}" 83 | else 84 | echo "zip 固件解压失败" 85 | cd /root 86 | rm -rf $workingdir 87 | exit 1 88 | fi 89 | fi 90 | 91 | if [ "$gzfile" == "" ] && [ "$imgfile" == "" ]; then 92 | echo "不是有效的 ROM 文件" 93 | cd /root 94 | rm $inputfile 95 | rm -rf $workingdir 96 | exit 1 97 | fi 98 | 99 | if ! [ "$gzfile" == "" ]; then 100 | echo "开始解压 gz 文件......" 101 | imgfile="rom.img" 102 | pv -f -F "%e %p" -i 1 "$gzfile" | gunzip -dc > "$imgfile" 103 | if [ -f "$imgfile" ]; then 104 | echo "gz 固件已解压至 $imgfile" 105 | rm $gzfile 106 | else 107 | echo "gz 固件解压失败" 108 | rm $gzfile 109 | cd /root 110 | rm -rf $workingdir 111 | exit 1 112 | fi 113 | fi 114 | 115 | lodev=$(losetup -f) 116 | echo "使用设备 $lodev 测试 ROM 文件" 117 | 118 | mkdir -p "$lomntpoint" 119 | losetup -P $lodev "$imgfile" 120 | mount ${lodev}p1 "$lomntpoint" 121 | if [ $? -ne 0 ]; then 122 | echo "img 文件挂载失败" 123 | losetup -d $lodev 124 | cd /root 125 | rm -rf $workingdir 126 | exit 1 127 | fi 128 | 129 | cd "$lomntpoint" 130 | imgbindir=$(ls | grep "bin") 131 | if [ "$imgbindir" == "" ]; then 132 | echo "img 文件错误" 133 | cd /root 134 | umount "$lomntpoint" 135 | losetup -d $lodev 136 | rm -rf $workingdir 137 | exit 1 138 | fi 139 | 140 | if [ "$2" == "nobackup" ]; then 141 | echo "不备份设置" 142 | else 143 | echo "开始备份设置" 144 | rm -f "$backupfile" 145 | sysupgrade -b "$backupfile" 146 | if ! [ -f "$backupfile" ]; then 147 | echo "生成备份文件失败" 148 | cd /root 149 | umount "$lomntpoint" 150 | losetup -d $lodev 151 | rm -rf $workingdir 152 | exit 1 153 | fi 154 | echo "开始写入备份到镜像文件" 155 | tar zxf "$backupfile" 156 | echo "备份文件已写入, 移除挂载" 157 | rm "$backupfile" 158 | fi 159 | 160 | cd /tmp 161 | umount "$lomntpoint" 162 | losetup -d $lodev 163 | 164 | zstfile="/tmp/$imgfile.zst" 165 | echo "开始压缩镜像至 $zstfile" 166 | rm -f $zstfile 167 | zstdmt "${workingdir}${imgfile}" -o "$zstfile" 168 | rm -rf $workingdir 169 | 170 | if [ -f "$zstfile" ]; then 171 | echo 1 > /proc/sys/kernel/sysrq 172 | echo "卸载 SD 卡" 173 | echo u > /proc/sysrq-trigger || umount / 174 | 175 | rotestfile="/rotest.txt" 176 | # here we rm it first 177 | rm -f "$rotestfile" 178 | touch "$rotestfile" 179 | if [ $? -eq 0 ]; then 180 | rm "$rotestfile" 181 | echo "卸载 SD 卡失败, 请重启后再继续使用" 182 | exit 1 183 | fi 184 | 185 | echo "开始刷机, 请不要断电或关机, 如果刷机失败请取出 SD 卡用电脑重新写入 ROM" 186 | pv -f -F "刷机中, 请不要断电或关机 %e %p" -i 1 "$zstfile" | zstdcat | dd of=/dev/mmcblk0 conv=fsync 187 | echo "刷机完毕, 正在重启, 请稍候..." 188 | sleep 5 189 | echo o > /proc/sysrq-trigger 190 | else 191 | echo "压缩出错" 192 | exit 1 193 | fi 194 | -------------------------------------------------------------------------------- /minimal_config.seed: -------------------------------------------------------------------------------- 1 | CONFIG_AUTOREMOVE=y 2 | CONFIG_BUILD_PATENTED=y 3 | CONFIG_BRCMFMAC_SDIO=y 4 | CONFIG_IMAGEOPT=y 5 | CONFIG_KERNEL_AIO=y 6 | CONFIG_JSON_ADD_IMAGE_INFO=y 7 | CONFIG_KERNEL_ARM_PMU=y 8 | CONFIG_KERNEL_BLK_CGROUP=y 9 | CONFIG_KERNEL_BLK_DEV_THROTTLING=y 10 | CONFIG_KERNEL_BTRFS_FS_POSIX_ACL=y 11 | CONFIG_KERNEL_KALLSYMS=y 12 | CONFIG_KERNEL_PERF_EVENTS=y 13 | CONFIG_KERNEL_CGROUPS=y 14 | CONFIG_KERNEL_CGROUP_CPUACCT=y 15 | CONFIG_KERNEL_CGROUP_DEVICE=y 16 | CONFIG_KERNEL_CGROUP_FREEZER=y 17 | CONFIG_KERNEL_CGROUP_PIDS=y 18 | CONFIG_KERNEL_CGROUP_SCHED=y 19 | CONFIG_KERNEL_MEMCG=y 20 | CONFIG_KERNEL_MEMCG_KMEM=y 21 | CONFIG_KERNEL_MM_OWNER=y 22 | CONFIG_KERNEL_NETPRIO_CGROUP=y 23 | CONFIG_KERNEL_NET_CLS_CGROUP=y 24 | CONFIG_KERNEL_CPUSETS=y 25 | CONFIG_KERNEL_FAIR_GROUP_SCHED=y 26 | CONFIG_KERNEL_FANOTIFY=y 27 | CONFIG_KERNEL_FHANDLE=y 28 | CONFIG_KERNEL_FREEZER=y 29 | CONFIG_KERNEL_RESOURCE_COUNTERS=y 30 | CONFIG_KERNEL_RT_GROUP_SCHED=y 31 | CONFIG_LUCI_LANG_en=y 32 | CONFIG_LUCI_LANG_zh-cn=y 33 | CONFIG_LUCI_LANG_zh-tw=y 34 | CONFIG_PACKAGE_libustream-openssl=y 35 | CONFIG_PACKAGE_ca-bundle=y 36 | CONFIG_PACKAGE_ca-certificates=y 37 | CONFIG_PACKAGE_bash=y 38 | CONFIG_PACKAGE_wget=y 39 | CONFIG_PACKAGE_triggerhappy=y 40 | CONFIG_PACKAGE_uboot-envtools=y 41 | CONFIG_PACKAGE_usb-modeswitch=y 42 | CONFIG_PACKAGE_kmod-mmc=y 43 | CONFIG_PACKAGE_kmod-ikconfig=y 44 | CONFIG_PACKAGE_kmod-tun=y 45 | CONFIG_PACKAGE_kmod-usb-net=y 46 | CONFIG_PACKAGE_kmod-usb-net-rtl8150=y 47 | CONFIG_PACKAGE_kmod-usb-net-rtl8152=y 48 | CONFIG_PACKAGE_iw=y 49 | CONFIG_PACKAGE_iwinfo=y 50 | CONFIG_PACKAGE_hostapd=y 51 | CONFIG_PACKAGE_hostapd-basic=y 52 | CONFIG_PACKAGE_hostapd-utils=y 53 | CONFIG_PACKAGE_wpad=y 54 | CONFIG_PACKAGE_wpad-mini=y 55 | CONFIG_PACKAGE_wpa-supplicant=y 56 | CONFIG_DRIVER_11N_SUPPORT=y 57 | CONFIG_DRIVER_11AC_SUPPORT=y 58 | CONFIG_DRIVER_11W_SUPPORT=y 59 | CONFIG_PACKAGE_kmod-brcmfmac=y 60 | CONFIG_PACKAGE_kmod-cfg80211=y 61 | CONFIG_PACKAGE_ipv6helper=y 62 | CONFIG_PACKAGE_dnsmasq_full_dhcpv6=y 63 | CONFIG_OPENSSL_ENGINE_BUILTIN=y 64 | CONFIG_OPENSSL_ENGINE_BUILTIN_AFALG=y 65 | CONFIG_OPENSSL_OPTIMIZE_SPEED=y 66 | CONFIG_OPENSSL_WITH_DTLS=y 67 | CONFIG_OPENSSL_WITH_EC2M=y 68 | CONFIG_OPENSSL_WITH_NPN=y 69 | # CONFIG_OPENSSL_ENGINE_BUILTIN_DEVCRYPTO is not set 70 | # CONFIG_PACKAGE_kmod-cryptodev is not set 71 | # CONFIG_PACKAGE_libopenssl-devcrypto is not set 72 | CONFIG_LIBSODIUM_MINIMAL=y 73 | CONFIG_PACKAGE_collectd-mod-thermal=y 74 | CONFIG_PACKAGE_collectd-mod-uptime=y 75 | CONFIG_PACKAGE_collectd-mod-wireless=y 76 | CONFIG_PACKAGE_collectd=y 77 | CONFIG_PACKAGE_curl=y 78 | CONFIG_PACKAGE_lrzsz=y 79 | CONFIG_PACKAGE_nano=y 80 | CONFIG_PACKAGE_bash=y 81 | CONFIG_PACKAGE_resolveip=y 82 | CONFIG_PACKAGE_sudo=y 83 | CONFIG_PACKAGE_tcping=y 84 | CONFIG_PACKAGE_autocore=y 85 | CONFIG_PACKAGE_htop=y 86 | CONFIG_PACKAGE_diffutils=y 87 | CONFIG_PACKAGE_vim-fuller=y 88 | CONFIG_PACKAGE_pv=y 89 | CONFIG_PACKAGE_pigz=y 90 | CONFIG_PACKAGE_unzip=y 91 | CONFIG_PACKAGE_ethtool=y 92 | CONFIG_PACKAGE_coreutils-nohup=y 93 | CONFIG_PACKAGE_coreutils-timeout=y 94 | CONFIG_PACKAGE_luci-app-opkg=y 95 | CONFIG_PACKAGE_iptables-mod-extra=y 96 | CONFIG_PACKAGE_kmod-ipt-extra=y 97 | CONFIG_PACKAGE_libltdl=y 98 | CONFIG_PACKAGE_losetup=y 99 | CONFIG_PACKAGE_zstd=y 100 | CONFIG_PACKAGE_brook=y 101 | CONFIG_PACKAGE_zlib=y 102 | CONFIG_PACKAGE_chinadns-ng=y 103 | CONFIG_PACKAGE_haproxy=y 104 | CONFIG_PACKAGE_kcptun-client=y 105 | CONFIG_PACKAGE_luci-app-upnp=y 106 | CONFIG_PACKAGE_luci-app-accesscontrol=y 107 | CONFIG_PACKAGE_luci-app-arpbind=y 108 | CONFIG_PACKAGE_luci-app-autoreboot=y 109 | CONFIG_PACKAGE_luci-app-ddns=y 110 | CONFIG_PACKAGE_ddns-scripts_cloudflare.com-v4=y 111 | CONFIG_PACKAGE_luci-app-filetransfer=y 112 | CONFIG_PACKAGE_luci-app-firewall=y 113 | CONFIG_PACKAGE_luci-app-ramfree=y 114 | CONFIG_PACKAGE_luci-app-netdata=y 115 | CONFIG_PACKAGE_luci-app-vlmcsd=y 116 | CONFIG_PACKAGE_luci-app-wol=y 117 | CONFIG_PACKAGE_luci-app-wrtbwmon=y 118 | CONFIG_PACKAGE_luci-app-serverchan=y 119 | CONFIG_PACKAGE_luci-app-fileassistant=y 120 | CONFIG_PACKAGE_luci-app-r2sflasher=y 121 | CONFIG_PACKAGE_luci-app-passwall=y 122 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Brook=y 123 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Shadowsocks=y 124 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_ShadowsocksR_socks=y 125 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Shadowsocks_socks=y 126 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Trojan=y 127 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_kcptun=y 128 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_simple-obfs=y 129 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_v2ray-plugin=y 130 | CONFIG_PACKAGE_v2ray-plugin=y 131 | CONFIG_PACKAGE_v2ray=y 132 | CONFIG_PACKAGE_luci-app-zerotier=y 133 | # CONFIG_V2RAY_COMPRESS_GOPROXY is not set 134 | # CONFIG_V2RAY_JSON_V2CTL is not set 135 | CONFIG_V2RAY_JSON_INTERNAL=y 136 | # CONFIG_V2RAY_JSON_NONE is not set 137 | CONFIG_V2RAY_EXCLUDE_V2CTL=y 138 | CONFIG_V2RAY_EXCLUDE_ASSETS=y 139 | # CONFIG_V2RAY_COMPRESS_UPX is not set 140 | CONFIG_V2RAY_DISABLE_NONE=y 141 | # CONFIG_V2RAY_DISABLE_CUSTOM is not set 142 | CONFIG_PACKAGE_luci-app-adguardhome=y 143 | CONFIG_PACKAGE_luci-theme-argon=y 144 | CONFIG_PACKAGE_luci-theme-argon-dark-mod=y 145 | # CONFIG_PACKAGE_samba36-server is not set 146 | # CONFIG_PACKAGE_autosamba is not set 147 | # CONFIG_PACKAGE_luci-app-samba is not set 148 | # CONFIG_PACKAGE_wsdd2 is not set 149 | # CONFIG_PACKAGE_luci-app-adbyby-plus is not set 150 | # CONFIG_PACKAGE_luci-app-ipsec-vpnd is not set 151 | # CONFIG_PACKAGE_luci-app-nlbwmon is not set 152 | # CONFIG_PACKAGE_luci-app-ssr-plus is not set 153 | # CONFIG_PACKAGE_luci-app-ssr-plus_INCLUDE_Redsocks2 is not set 154 | # CONFIG_PACKAGE_luci-app-ssr-plus_INCLUDE_ShadowsocksR_Server is not set 155 | # CONFIG_PACKAGE_luci-app-ssr-plus_INCLUDE_Trojan is not set 156 | # CONFIG_PACKAGE_luci-app-ssr-plus_INCLUDE_V2ray is not set 157 | # CONFIG_PACKAGE_luci-app-ssr-plus_INCLUDE_V2ray_plugin is not set 158 | # CONFIG_PACKAGE_luci-app-unblockmusic is not set 159 | # CONFIG_PACKAGE_luci-app-vsftpd is not set 160 | # CONFIG_PACKAGE_luci-app-xlnetacc is not set 161 | # CONFIG_PACKAGE_iptables-mod-ipsec is not set 162 | # CONFIG_PACKAGE_kmod-ipt-ipsec is not set 163 | # CONFIG_PACKAGE_kmod-iptunnel6 is not set 164 | # CONFIG_PACKAGE_kmod-nf-conntrack-netlink is not set 165 | # CONFIG_PACKAGE_libcares is not set 166 | # CONFIG_PACKAGE_libevent2 is not set 167 | # CONFIG_PACKAGE_libgmp is not set 168 | # CONFIG_PACKAGE_libhttp-parser is not set 169 | # CONFIG_PACKAGE_libnatpmp is not set 170 | # CONFIG_PACKAGE_libnet-1.2.x is not set 171 | # CONFIG_PACKAGE_libnghttp2 is not set 172 | # CONFIG_PACKAGE_libpcap is not set 173 | # CONFIG_PACKAGE_libuv is not set 174 | # CONFIG_PACKAGE_kmod-ipsec is not set 175 | # CONFIG_PACKAGE_microsocks is not set 176 | # CONFIG_PACKAGE_nlbwmon is not set 177 | # CONFIG_PACKAGE_node is not set 178 | # CONFIG_PACKAGE_redsocks2 is not set 179 | # CONFIG_PACKAGE_shadowsocksr-libev-server is not set 180 | # CONFIG_PACKAGE_strongswan is not set 181 | # CONFIG_PACKAGE_strongswan-charon is not set 182 | # CONFIG_PACKAGE_strongswan-ipsec is not set 183 | # CONFIG_PACKAGE_strongswan-minimal is not set 184 | # CONFIG_PACKAGE_strongswan-mod-aes is not set 185 | # CONFIG_PACKAGE_strongswan-mod-gmp is not set 186 | # CONFIG_PACKAGE_strongswan-mod-hmac is not set 187 | # CONFIG_PACKAGE_strongswan-mod-kernel-netlink is not set 188 | # CONFIG_PACKAGE_strongswan-mod-nonce is not set 189 | # CONFIG_PACKAGE_strongswan-mod-pubkey is not set 190 | # CONFIG_PACKAGE_strongswan-mod-random is not set 191 | # CONFIG_PACKAGE_strongswan-mod-sha1 is not set 192 | # CONFIG_PACKAGE_strongswan-mod-socket-default is not set 193 | # CONFIG_PACKAGE_strongswan-mod-stroke is not set 194 | # CONFIG_PACKAGE_strongswan-mod-updown is not set 195 | # CONFIG_PACKAGE_strongswan-mod-x509 is not set 196 | # CONFIG_PACKAGE_strongswan-mod-xauth-generic is not set 197 | # CONFIG_PACKAGE_strongswan-mod-xcbc is not set 198 | # CONFIG_PACKAGE_tcpping is not set 199 | # CONFIG_PACKAGE_UnblockNeteaseMusic is not set 200 | # CONFIG_PACKAGE_UnblockNeteaseMusicGo is not set 201 | # CONFIG_PACKAGE_adbyby is not set 202 | # CONFIG_PACKAGE_vsftpd-alt is not set 203 | # CONFIG_UnblockNeteaseMusic_Go is not set 204 | # CONFIG_UnblockNeteaseMusic_NodeJS is not set 205 | 206 | CONFIG_PACKAGE_kmod-ipt-offload=y 207 | CONFIG_PACKAGE_luci-app-flowoffload=y 208 | CONFIG_PACKAGE_kmod-ipt-fullconenat=y 209 | CONFIG_PACKAGE_iptables-mod-fullconenat=y 210 | -------------------------------------------------------------------------------- /name_and_urls.env: -------------------------------------------------------------------------------- 1 | BuilderURL=https://github.com/songchenwen/nanopi-r2s 2 | ArgonURL=https://github.com/jerrykuku/luci-theme-argon 3 | AdguardHomeURL=https://github.com/rufengsuixing/luci-app-adguardhome 4 | ScwPackageURL=https://github.com/songchenwen/openwrt-package 5 | LeanURL=https://github.com/coolsnowwolf/lede 6 | LeanLuciURL=https://github.com/coolsnowwolf/luci 7 | LeanPackageURL=https://github.com/coolsnowwolf/packages 8 | FriendlyWRTURL=https://github.com/friendlyarm/friendlywrt 9 | LienolURL=https://github.com/Lienol/openwrt 10 | ServerChanURL=https://github.com/tty228/luci-app-serverchan 11 | OpenWrt=https://github.com/openwrt/openwrt 12 | Kernel=https://github.com/fanck0605/friendlywrt-kernel 13 | -------------------------------------------------------------------------------- /scripts/check_net.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | scriptpath=/usr/bin/check_net 4 | hotplugpath=/etc/hotplug.d/iface/10-checknet 5 | 6 | realrun="$1" 7 | 8 | if [ "$0" == "sh" ] || [ "$0" == "bash" ]; then 9 | realrun="" 10 | fi 11 | 12 | sScriptName="$(basename $scriptpath)" 13 | 14 | checkrunning() { 15 | count="$1" 16 | logger "CheckNet: checking running of ${sScriptName}, count $count" 17 | if [ $(ps | grep ${sScriptName} | grep -v grep | wc -l) -gt $count ]; then 18 | logger "CheckNet: already running exit" 19 | exit 20 | fi 21 | } 22 | 23 | realrun() { 24 | checkrunning 3 25 | logger "CheckNet: script started" 26 | . /lib/functions/network.sh 27 | 28 | network_get_ipaddr lan_addr lan 29 | 30 | if [ "$lan_addr" == "" ]; then 31 | logger "CheckNet: no lan address yet, exit" 32 | return 33 | fi 34 | 35 | fail_count=0 36 | while :; do 37 | sleep 2s 38 | 39 | # try to connect 40 | if ping -W 1 -c 1 "$lan_addr" >/dev/null 2>&1; then 41 | # No problem! 42 | if [ $fail_count -gt 0 ]; then 43 | logger 'CheckNet: Network problems solved!' 44 | return 45 | fi 46 | fail_count=0 47 | logger 'CheckNet: No Problem, exit' 48 | return 49 | fi 50 | 51 | # May have some problem 52 | logger "CheckNet: Network may have some problems!" 53 | fail_count=$((fail_count + 1)) 54 | 55 | if [ $fail_count -ge 3 ]; then 56 | # Must have some problem! We refresh the ip address and try again! 57 | network_get_ipaddr lan_addr lan 58 | 59 | if ping -W 1 -c 1 "$lan_addr" >/dev/null 2>&1; then 60 | return 61 | fi 62 | 63 | logger 'CheckNet: Network problem! Firewall reloading...' 64 | /etc/init.d/firewall reload >/dev/null 2>&1 65 | sleep 2s 66 | 67 | if ping -W 1 -c 1 "$lan_addr" >/dev/null 2>&1; then 68 | return 69 | fi 70 | 71 | logger 'CheckNet: Network problem! Network reloading...' 72 | /etc/init.d/network restart >/dev/null 2>&1 73 | sleep 2s 74 | fi 75 | done 76 | } 77 | 78 | adduci() { 79 | if [ "$(basename $0)" == "$sScriptName" ]; then 80 | pp=$(ps | grep $PPID | grep -v grep | awk '{print $5}') 81 | if [ "$pp" == "fw3" ]; then 82 | logger 'CheckNet: running in fw3, ignore uci' 83 | return 84 | fi 85 | logger "CheckNet: checking uci" 86 | uci get firewall.checknet >/dev/null 2>&1 87 | if [ $? -ne 0 ]; then 88 | logger 'CheckNet: add uci firewall script' 89 | uci -q batch <<-EOF >/dev/null 90 | set firewall.checknet=include 91 | set firewall.checknet.type=script 92 | set firewall.checknet.reload='1' 93 | set firewall.checknet.path=$scriptpath 94 | commit firewall 95 | EOF 96 | fi 97 | fi 98 | } 99 | 100 | addhotplug() { 101 | if ! [ -f "$hotplugpath" ]; then 102 | cat <<< "#!/bin/sh 103 | $(echo $scriptpath)">"$hotplugpath" 104 | chmod +x "$hotplugpath" 105 | fi 106 | } 107 | 108 | if [ "$realrun" == "" ]; then 109 | checkrunning 2 110 | adduci 111 | addhotplug 112 | logger 'CheckNet: delay check 30 secs' 113 | (sleep 30 && $scriptpath realrun)& 114 | else 115 | realrun 116 | fi 117 | -------------------------------------------------------------------------------- /scripts/check_wan4.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | while true; do 4 | wan=`/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'` 5 | r=`ping -c1 $wan 2>&1` 6 | case $r in 7 | *permitted* ) /etc/init.d/firewall reload ;; 8 | esac 9 | sleep 2 10 | done 11 | -------------------------------------------------------------------------------- /scripts/fw_update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd /root 4 | 5 | url=$1 6 | zipfile=update_rom.zip 7 | imgfile=rom.img 8 | lomntpoint=/mnt/img 9 | backupfile=/tmp/backup.tar.gz 10 | 11 | if [ "$url" == "" ];then 12 | echo "需要传入 ROM zip 文件下载链接" 13 | exit 1 14 | fi 15 | 16 | rm -f "$zipfile" 17 | rm -f "$imgfile" 18 | rm -f "$backupfile" 19 | rm -f "/tmp/$imgfile.zst" 20 | rm -f *sd.img.gz 21 | 22 | echo "开始下载固件文件 $url" 23 | wget -O "$zipfile" "$url" 24 | 25 | if [ -f "$zipfile" ]; then 26 | echo "固件下载成功" 27 | else 28 | echo "固件下载失败" 29 | exit 1 30 | fi 31 | 32 | gzfile=$(unzip -Z -1 "$zipfile" | grep "sd.img.gz$") 33 | 34 | if [ "$gzfile" == "" ]; then 35 | echo "没发现 sd.img.gz 结尾的固件包" 36 | exit 1 37 | fi 38 | unzip "$zipfile" "$gzfile" 39 | rm $zipfile 40 | 41 | if [ -f "$gzfile" ]; then 42 | echo "zip 固件已解压至 $gzfile" 43 | else 44 | echo "zip 固件解压失败" 45 | exit 1 46 | fi 47 | 48 | pv "$gzfile" | gunzip -dc > "$imgfile" 49 | if [ -f "$imgfile" ]; then 50 | echo "gz 固件已解压至 $imgfile" 51 | else 52 | echo "gz 固件解压失败" 53 | exit 1 54 | fi 55 | 56 | lodev=$(losetup -f) 57 | echo "使用设备 $lodev 改写 ROM 文件" 58 | 59 | mkdir -p "$lomntpoint" 60 | losetup -o 100663296 $lodev "$imgfile" 61 | mount $lodev "$lomntpoint" 62 | cd "$lomntpoint" 63 | echo "开始备份设置" 64 | sysupgrade -b "$backupfile" 65 | echo "开始写入备份到镜像文件" 66 | tar zxf "$backupfile" 67 | echo "备份文件已写入, 移除挂载" 68 | 69 | cd /tmp 70 | rm "$backupfile" 71 | umount "$lomntpoint" 72 | losetup -d $lodev 73 | 74 | echo "开始压缩镜像" 75 | zstfile="/tmp/$imgfile.zst" 76 | zstdmt "/root/$imgfile" -o "$zstfile" 77 | 78 | if [ -f "$zstfile" ]; then 79 | echo 1 > /proc/sys/kernel/sysrq 80 | echo "卸载 SD 卡" 81 | echo u > /proc/sysrq-trigger || umount / 82 | 83 | rotestfile="/rotest.txt" 84 | touch "$rotestfile" 85 | if [ $? -eq 0 ]; then 86 | rm "$rotestfile" 87 | echo "卸载 SD 卡失败" 88 | exit 1 89 | fi 90 | 91 | echo "开始刷机, 请不要断电或关机, 如果刷机失败请取出 SD 卡用电脑重新写入 ROM" 92 | pv "$zstfile" | zstdcat | dd of=/dev/mmcblk0 conv=fsync 93 | echo "刷机完毕, 正在重启..." 94 | echo o > /proc/sysrq-trigger 95 | else 96 | echo "压缩出错" 97 | exit 1 98 | fi 99 | -------------------------------------------------------------------------------- /scripts/rom_prepare.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | sScriptName="$(basename $0)" 4 | 5 | if [ $(pidof ${sScriptName}| wc -w) -gt 2 ]; then 6 | pids=$(pidof ${sScriptName}) 7 | echo "其他任务正在执行刷机 ${pids}" 8 | exit 1 9 | fi 10 | 11 | needed_binaries=(unzip gunzip pv losetup tar zstdmt zstdcat) 12 | 13 | need_warn="" 14 | for i in "${needed_binaries[@]}"; do 15 | w_b=$(which $i) 16 | if [ "$w_b" == "" ]; then 17 | need_warn="${need_warn} $i" 18 | fi 19 | done 20 | if ! [ "$need_warn" == "" ]; then 21 | echo "无法刷机, 需要这些可执行文件 $need_warn" 22 | exit 1 23 | fi 24 | 25 | workingdir=/root/r2sflasher/ 26 | 27 | rm -rf $workingdir 28 | mkdir -p $workingdir 29 | 30 | cd $workingdir 31 | 32 | inputfile=$1 33 | nobackup=$2 34 | lomntpoint=/mnt/img 35 | backupfile=$workingdir/backup.tar.gz 36 | 37 | if [ "$inputfile" == "" ];then 38 | echo "需要传入 ROM zip 文件" 39 | exit 1 40 | fi 41 | 42 | if [ -f "$inputfile" ]; then 43 | echo "固件上传成功" 44 | else 45 | echo "固件上传失败" 46 | cd /root 47 | rm -rf $workingdir 48 | exit 1 49 | fi 50 | 51 | inputfileext=${inputfile##*.} 52 | 53 | gzfile="" 54 | 55 | if [ "$inputfileext" == "gz" ]; then 56 | gzfile="$inputfile" 57 | fi 58 | 59 | if [ "$inputfileext" == "zip" ]; then 60 | gzfile=$(unzip -Z -1 "$inputfile" | grep "sd.img.gz$") 61 | imgfile=$(unzip -Z -1 "$inputfile" | grep ".img$") 62 | 63 | if [ "$gzfile" == "" ] && [ "$imgfile" == "" ]; then 64 | echo "没发现 sd.img.gz 结尾的固件包" 65 | cd /root 66 | rm -rf $workingdir 67 | exit 1 68 | fi 69 | 70 | if ! [ "$gzfile" == "" ]; then 71 | unzip "$inputfile" "$gzfile" 72 | imgfile="" 73 | else 74 | if ! [ "$imgfile" == "" ]; then 75 | unzip "$inputfile" "$imgfile" 76 | fi 77 | fi 78 | 79 | rm $inputfile 80 | 81 | if [ -f "$gzfile" ] || [ -f "$imgfile" ]; then 82 | echo "zip 固件已解压至 ${gzfile}${imgfile}" 83 | else 84 | echo "zip 固件解压失败" 85 | cd /root 86 | rm -rf $workingdir 87 | exit 1 88 | fi 89 | fi 90 | 91 | if [ "$gzfile" == "" ] && [ "$imgfile" == "" ]; then 92 | echo "不是有效的 ROM 文件" 93 | cd /root 94 | rm $inputfile 95 | rm -rf $workingdir 96 | exit 1 97 | fi 98 | 99 | if ! [ "$gzfile" == "" ]; then 100 | echo "开始解压 gz 文件......" 101 | imgfile="rom.img" 102 | pv -f -F "%e %p" -i 1 "$gzfile" | gunzip -dc > "$imgfile" 103 | if [ -f "$imgfile" ]; then 104 | echo "gz 固件已解压至 $imgfile" 105 | rm $gzfile 106 | else 107 | echo "gz 固件解压失败" 108 | rm $gzfile 109 | cd /root 110 | rm -rf $workingdir 111 | exit 1 112 | fi 113 | fi 114 | 115 | lodev=$(losetup -f) 116 | echo "使用设备 $lodev 测试 ROM 文件" 117 | 118 | mkdir -p "$lomntpoint" 119 | losetup -o 100663296 $lodev "$imgfile" 120 | mount $lodev "$lomntpoint" 121 | if [ $? -ne 0 ]; then 122 | echo "img 文件挂载失败" 123 | losetup -d $lodev 124 | cd /root 125 | rm -rf $workingdir 126 | exit 1 127 | fi 128 | 129 | cd "$lomntpoint" 130 | imgbindir=$(ls | grep "bin") 131 | if [ "$imgbindir" == "" ]; then 132 | echo "img 文件错误" 133 | cd /root 134 | umount "$lomntpoint" 135 | losetup -d $lodev 136 | rm -rf $workingdir 137 | exit 1 138 | fi 139 | 140 | if [ "$2" == "nobackup" ]; then 141 | echo "不备份设置" 142 | else 143 | echo "开始备份设置" 144 | rm -f "$backupfile" 145 | sysupgrade -b "$backupfile" 146 | if ! [ -f "$backupfile" ]; then 147 | echo "生成备份文件失败" 148 | cd /root 149 | umount "$lomntpoint" 150 | losetup -d $lodev 151 | rm -rf $workingdir 152 | exit 1 153 | fi 154 | echo "开始写入备份到镜像文件" 155 | tar zxf "$backupfile" 156 | echo "备份文件已写入, 移除挂载" 157 | rm "$backupfile" 158 | fi 159 | 160 | cd /tmp 161 | umount "$lomntpoint" 162 | losetup -d $lodev 163 | 164 | finalfile="/root/$imgfile.gz" 165 | echo "开始压缩镜像至 $finalfile" 166 | rm -f $finalfile 167 | gzip "${workingdir}${imgfile}" 168 | mv "${workingdir}${imgfile}.gz" "$finalfile" 169 | rm -rf $workingdir 170 | 171 | if [ -f "$finalfile" ]; then 172 | echo "ROM 已准备好 $finalfile" 173 | else 174 | echo "压缩出错" 175 | exit 1 176 | fi 177 | -------------------------------------------------------------------------------- /scripts/temp.chart.sh: -------------------------------------------------------------------------------- 1 | # shellcheck shell=bash 2 | # no need for shebang - this file is loaded from charts.d.plugin 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | # netdata 6 | # real-time performance and health monitoring, done right! 7 | # (C) 2016 Costa Tsaousis 8 | # 9 | 10 | # if this chart is called X.chart.sh, then all functions and global variables 11 | # must start with X_ 12 | 13 | # _update_every is a special variable - it holds the number of seconds 14 | # between the calls of the _update() function 15 | temp_update_every= 16 | 17 | # the priority is used to sort the charts on the dashboard 18 | # 1 = the first chart 19 | temp_priority=1 20 | 21 | # global variables to store our collected data 22 | # remember: they need to start with the module name example_ 23 | temp_cpu=40 24 | temp_cpu_file=/sys/class/thermal/thermal_zone0/temp 25 | 26 | temp_get() { 27 | # do all the work to collect / calculate the values 28 | # for each dimension 29 | # 30 | # Remember: 31 | # 1. KEEP IT SIMPLE AND SHORT 32 | # 2. AVOID FORKS (avoid piping commands) 33 | # 3. AVOID CALLING TOO MANY EXTERNAL PROGRAMS 34 | # 4. USE LOCAL VARIABLES (global variables may overlap with other modules) 35 | 36 | if [ -f "$temp_cpu_file" ]; then 37 | temp_cpu=$(cat $temp_cpu_file) 38 | else 39 | return 1 40 | fi 41 | 42 | # this should return: 43 | # - 0 to send the data to netdata 44 | # - 1 to report a failure to collect the data 45 | 46 | return 0 47 | } 48 | 49 | # _check is called once, to find out if this chart should be enabled or not 50 | temp_check() { 51 | # this should return: 52 | # - 0 to enable the chart 53 | # - 1 to disable the chart 54 | 55 | # check something 56 | 57 | # check that we can collect data 58 | temp_get || return 1 59 | 60 | return 0 61 | } 62 | 63 | # _create is called once, to create the charts 64 | temp_create() { 65 | # create the chart with 3 dimensions 66 | cat << EOF 67 | CHART Gauge.Temperature 'Temperature' "CPU Temperature" "Celsius Degree" "Temperature" "" line $temp_priority $temp_update_every 68 | DIMENSION CPU '' absolute 1 1000 69 | EOF 70 | 71 | return 0 72 | } 73 | 74 | # _update is called continuously, to collect the values 75 | temp_update() { 76 | # the first argument to this function is the microseconds since last update 77 | # pass this parameter to the BEGIN statement (see bellow). 78 | 79 | temp_get || return 1 80 | 81 | # write the result of the work. 82 | cat << VALUESEOF 83 | BEGIN Gauge.Temperature $1 84 | SET CPU = $temp_cpu 85 | END 86 | VALUESEOF 87 | 88 | return 0 89 | } -------------------------------------------------------------------------------- /set_repo_hash.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | name=$1 3 | if [ "$#" -gt 1 ]; then 4 | repo=$2 5 | echo "::set-env name=${name}Hash::$(git ls-remote ${repo} HEAD | awk '{ print $1}' | cut -c -7)" 6 | else 7 | git log --invert-grep --author="action@github.com" -n 1 8 | echo "::set-env name=${name}Hash::$(git log --invert-grep --author="action@github.com" -n 1 --pretty=format:%H | cut -c -7)" 9 | fi 10 | --------------------------------------------------------------------------------