From 8ff7e9df072f6547d619831b619147daca6e09d7 Mon Sep 17 00:00:00 2001 From: suyuan <175338101@qq.com> Date: Sat, 3 Apr 2021 09:06:56 +0800 Subject: [PATCH] Revert "fix" This reverts commit 2c2d178dd173e7dd77df74272bcae872fb5c8322. --- .circleci/config.yml | 751 ------------------ .gitignore | 29 + .../htdocs/luci-static/resources/computer.png | Bin 1101 -> 2578 bytes .../htdocs/luci-static/resources/modem.svg | 53 +- .../luci-static/resources/openmptcprouter.png | Bin 10733 -> 4287 bytes .../htdocs/luci-static/resources/server.png | Bin 1115 -> 3923 bytes .../root/etc/init.d/openmptcprouter | 6 + .../luasrc/view/themes/argon/footer.htm | 2 +- .../luci-static/openmptcprouter/cascade.css | 18 +- .../luci-static/openmptcprouter/favicon.png | Bin 535 -> 8175 bytes .../openmptcprouter/omr-logo-apple.png | Bin 15855 -> 8175 bytes .../openmptcprouter/images/omr-logo.png | Bin 50790 -> 15505 bytes .../view/themes/openmptcprouter/footer.htm | 2 +- .../view/themes/openmptcprouter/header.htm | 8 +- .../files/etc/uci-defaults/1920-omr-network | 301 ------- 15 files changed, 52 insertions(+), 1118 deletions(-) delete mode 100644 .circleci/config.yml create mode 100755 .gitignore delete mode 100644 openmptcprouter/files/etc/uci-defaults/1920-omr-network diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index efc3cc25f..000000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,751 +0,0 @@ -version: 2 -jobs: - prepare: - machine: - image: ubuntu-1604:201903-01 - - working_directory: ~/ - - steps: - - run: - name: Prepare - command: | - sudo rm -rf /var/lib/apt/lists/lock - sudo apt-get update - sudo rm -rf /var/lib/apt/lists/lock - sudo apt-get install -yq build-essential git unzip ncurses-dev libz-dev libssl-dev python subversion gettext gawk wget curl rsync perl libelf-dev python3.5 libpython3.5-stdlib liblzma-dev - pyenv global 3.5.2 - - build_x86_64: - machine: - image: ubuntu-1604:201903-01 - - environment: - - OMR_VERSION: $CIRCLE_TAG - - OMR_TARGET: x86_64 - - OMR_KERNEL: 5.4 - - working_directory: ~/ - - steps: - - run: - name: cache - command: | - echo "cache 107 $OMR_KERNEL $OMR_TARGET" > /tmp/cache-target - echo "cache 108 $OMR_KERNEL $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - - - restore_cache: - keys: - - cache-{{ checksum "/tmp/cache-version" }} - - cache-{{ checksum "/tmp/cache-target" }} - - - run: - name: Build toolchain - no_output_timeout: 50m - command: | - git clone https://github.com/ysurac/openmptcprouter || true - cd openmptcprouter - git checkout ${CIRCLE_BRANCH:-$CIRCLE_TAG} || true - git pull || true - export OMR_PATH="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/${CIRCLE_BRANCH:-$CIRCLE_TAG}" - export OMR_FEED_URL="$CIRCLE_REPOSITORY_URL" - export OMR_FEED_SRC="${CIRCLE_BRANCH:-$CIRCLE_TAG}" - sudo apt-get update - sudo apt-get install -yq libelf-dev - pyenv global 3.5.2 - sh build.sh prepare {tools,toolchain}/install -j2 - echo -e "$OMR_PRIVKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build - echo -e "$OMR_PUBKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build.pub - - - save_cache: - key: cache-{{ checksum "/tmp/cache-target" }} - paths: - - openmptcprouter - - - run: - name: Build - no_output_timeout: 50m - command: make IGNORE_ERRORS=m -C ~/openmptcprouter/$OMR_TARGET/source package/{compile,install,index} target/install -j2 - - - run: - name: Deploy - command: | - ssh -p ${OMR_DEPLOY_PORT:-22} deploy@$OMR_DEPLOY_HOST mkdir -p deploy/${CIRCLE_BRANCH:-release}/${CIRCLE_TAG:-$OMR_KERNEL}/$OMR_TARGET - rsync -av --delete-after ~/openmptcprouter/$OMR_TARGET/source/bin/ -e "ssh -q -p ${OMR_DEPLOY_PORT:-22}" deploy@$OMR_DEPLOY_HOST:deploy/${CIRCLE_BRANCH:-release}/${CIRCLE_TAG:-$OMR_KERNEL}/$OMR_TARGET - rm -rf ~/openmptcprouter/$OMR_TARGET/source/bin - - - save_cache: - key: cache-{{ checksum "/tmp/cache-version" }} - paths: - - openmptcprouter - - build_x86: - machine: - image: ubuntu-1604:201903-01 - - environment: - - OMR_VERSION: $CIRCLE_TAG - - OMR_TARGET: x86 - - OMR_KERNEL: 5.4 - - working_directory: ~/ - - steps: - - run: - name: cache - command: | - echo "cache 107 $OMR_KERNEL $OMR_TARGET" > /tmp/cache-target - echo "cache 108 $OMR_KERNEL $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - - - restore_cache: - keys: - - cache-{{ checksum "/tmp/cache-version" }} - - cache-{{ checksum "/tmp/cache-target" }} - - - run: - name: Build toolchain - no_output_timeout: 40m - command: | - git clone https://github.com/ysurac/openmptcprouter || true - cd openmptcprouter - git checkout ${CIRCLE_BRANCH:-$CIRCLE_TAG} || true - git pull || true - export OMR_PATH="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/${CIRCLE_BRANCH:-$CIRCLE_TAG}" - export OMR_FEED_URL="$CIRCLE_REPOSITORY_URL" - export OMR_FEED_SRC="${CIRCLE_BRANCH:-$CIRCLE_TAG}" - pyenv global 3.5.2 - sh build.sh prepare {tools,toolchain}/install -j2 - echo -e "$OMR_PRIVKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build - echo -e "$OMR_PUBKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build.pub - - - save_cache: - key: cache-{{ checksum "/tmp/cache-target" }} - paths: - - openmptcprouter - - - run: - name: Build - no_output_timeout: 40m - command: make IGNORE_ERRORS=m -C ~/openmptcprouter/$OMR_TARGET/source package/{compile,install,index} target/install -j2 - - - run: - name: Deploy - command: | - ssh -p ${OMR_DEPLOY_PORT:-22} deploy@$OMR_DEPLOY_HOST mkdir -p deploy/${CIRCLE_BRANCH:-release}/${CIRCLE_TAG:-$OMR_KERNEL}/$OMR_TARGET - rsync -av --delete-after ~/openmptcprouter/$OMR_TARGET/source/bin/ -e "ssh -q -p ${OMR_DEPLOY_PORT:-22}" deploy@$OMR_DEPLOY_HOST:deploy/${CIRCLE_BRANCH:-release}/${CIRCLE_TAG:-$OMR_KERNEL}/$OMR_TARGET - rm -rf ~/openmptcprouter/$OMR_TARGET/source/bin - - - save_cache: - key: cache-{{ checksum "/tmp/cache-version" }} - paths: - - openmptcprouter - - build_rpi3: - machine: - image: ubuntu-1604:201903-01 - - environment: - - OMR_VERSION: $CIRCLE_TAG - - OMR_TARGET: rpi3 - - OMR_KERNEL: 5.4 - - working_directory: ~/ - - steps: - - run: - name: cache - command: | - echo "cache 107 $OMR_KERNEL $OMR_TARGET" > /tmp/cache-target - echo "cache 108 $OMR_KERNEL $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - - - restore_cache: - keys: - - cache-{{ checksum "/tmp/cache-version" }} - - cache-{{ checksum "/tmp/cache-target" }} - - - run: - name: Build toolchain - no_output_timeout: 40m - command: | - git clone https://github.com/ysurac/openmptcprouter || true - cd openmptcprouter - git checkout ${CIRCLE_BRANCH:-$CIRCLE_TAG} || true - git pull || true - export OMR_PATH="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/${CIRCLE_BRANCH:-$CIRCLE_TAG}" - export OMR_FEED_URL="$CIRCLE_REPOSITORY_URL" - export OMR_FEED_SRC="${CIRCLE_BRANCH:-$CIRCLE_TAG}" - pyenv global 3.5.2 - sh build.sh prepare {tools,toolchain}/install -j2 - echo -e "$OMR_PRIVKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build - echo -e "$OMR_PUBKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build.pub - - - save_cache: - key: cache-{{ checksum "/tmp/cache-target" }} - paths: - - openmptcprouter - - - run: - name: Build - no_output_timeout: 40m - command: make IGNORE_ERRORS=m -C ~/openmptcprouter/$OMR_TARGET/source package/{compile,install,index} target/compile -j2 package/compile -j2 target/install -j2 - - - run: - name: Deploy - command: | - ssh -p ${OMR_DEPLOY_PORT:-22} deploy@$OMR_DEPLOY_HOST mkdir -p deploy/${CIRCLE_BRANCH:-release}/${CIRCLE_TAG:-$OMR_KERNEL}/$OMR_TARGET - rsync -av --delete-after ~/openmptcprouter/$OMR_TARGET/source/bin/ -e "ssh -q -p ${OMR_DEPLOY_PORT:-22}" deploy@$OMR_DEPLOY_HOST:deploy/${CIRCLE_BRANCH:-release}/${CIRCLE_TAG:-$OMR_KERNEL}/$OMR_TARGET - rm -rf ~/openmptcprouter/$OMR_TARGET/source/bin - - - save_cache: - key: cache-{{ checksum "/tmp/cache-version" }} - paths: - - openmptcprouter - - build_espressobin: - machine: - image: ubuntu-1604:201903-01 - - environment: - - OMR_VERSION: $CIRCLE_TAG - - OMR_TARGET: espressobin - - OMR_KERNEL: 5.4 - - working_directory: ~/ - - steps: - - run: - name: cache - command: | - echo "cache 107 $OMR_KERNEL $OMR_TARGET" > /tmp/cache-target - echo "cache 108 $OMR_KERNEL $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - - - restore_cache: - keys: - - cache-{{ checksum "/tmp/cache-version" }} - - cache-{{ checksum "/tmp/cache-target" }} - - - run: - name: Build toolchain - no_output_timeout: 40m - command: | - git clone https://github.com/ysurac/openmptcprouter || true - cd openmptcprouter - git checkout ${CIRCLE_BRANCH:-$CIRCLE_TAG} || true - git pull || true - export OMR_PATH="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/${CIRCLE_BRANCH:-$CIRCLE_TAG}" - export OMR_FEED_URL="$CIRCLE_REPOSITORY_URL" - export OMR_FEED_SRC="${CIRCLE_BRANCH:-$CIRCLE_TAG}" - pyenv global 3.5.2 - sh build.sh prepare {tools,toolchain}/install -j2 - echo -e "$OMR_PRIVKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build - echo -e "$OMR_PUBKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build.pub - - - save_cache: - key: cache-{{ checksum "/tmp/cache-target" }} - paths: - - openmptcprouter - - - run: - name: Build - no_output_timeout: 40m - command: make IGNORE_ERRORS=m -C ~/openmptcprouter/$OMR_TARGET/source package/{compile,install,index} target/compile -j2 package/compile -j2 target/install -j2 - - - run: - name: Deploy - command: | - ssh -p ${OMR_DEPLOY_PORT:-22} deploy@$OMR_DEPLOY_HOST mkdir -p deploy/${CIRCLE_BRANCH:-release}/${CIRCLE_TAG:-$OMR_KERNEL}/$OMR_TARGET - rsync -av --delete-after ~/openmptcprouter/$OMR_TARGET/source/bin/ -e "ssh -q -p ${OMR_DEPLOY_PORT:-22}" deploy@$OMR_DEPLOY_HOST:deploy/${CIRCLE_BRANCH:-release}/${CIRCLE_TAG:-$OMR_KERNEL}/$OMR_TARGET - rm -rf ~/openmptcprouter/$OMR_TARGET/source/bin - - - save_cache: - key: cache-{{ checksum "/tmp/cache-version" }} - paths: - - openmptcprouter - - build_r2s: - machine: - image: ubuntu-1604:201903-01 - - environment: - - OMR_VERSION: $CIRCLE_TAG - - OMR_TARGET: r2s - - OMR_KERNEL: 5.4 - - working_directory: ~/ - - steps: - - run: - name: cache - command: | - echo "cache 107 $OMR_KERNEL $OMR_TARGET" > /tmp/cache-target - echo "cache 108 $OMR_KERNEL $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - - - restore_cache: - keys: - - cache-{{ checksum "/tmp/cache-version" }} - - cache-{{ checksum "/tmp/cache-target" }} - - - run: - name: Build toolchain - no_output_timeout: 40m - command: | - git clone https://github.com/ysurac/openmptcprouter || true - cd openmptcprouter - git checkout ${CIRCLE_BRANCH:-$CIRCLE_TAG} || true - git pull || true - export OMR_PATH="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/${CIRCLE_BRANCH:-$CIRCLE_TAG}" - export OMR_FEED_URL="$CIRCLE_REPOSITORY_URL" - export OMR_FEED_SRC="${CIRCLE_BRANCH:-$CIRCLE_TAG}" - pyenv global 3.5.2 - sh build.sh prepare {tools,toolchain}/install -j2 - echo -e "$OMR_PRIVKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build - echo -e "$OMR_PUBKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build.pub - - - save_cache: - key: cache-{{ checksum "/tmp/cache-target" }} - paths: - - openmptcprouter - - - run: - name: Build - no_output_timeout: 40m - command: make IGNORE_ERRORS=m -C ~/openmptcprouter/$OMR_TARGET/source package/{compile,install,index} target/compile -j2 package/compile -j2 target/install -j2 - - - run: - name: Deploy - command: | - ssh -p ${OMR_DEPLOY_PORT:-22} deploy@$OMR_DEPLOY_HOST mkdir -p deploy/${CIRCLE_BRANCH:-release}/${CIRCLE_TAG:-$OMR_KERNEL}/$OMR_TARGET - rsync -av --delete-after ~/openmptcprouter/$OMR_TARGET/source/bin/ -e "ssh -q -p ${OMR_DEPLOY_PORT:-22}" deploy@$OMR_DEPLOY_HOST:deploy/${CIRCLE_BRANCH:-release}/${CIRCLE_TAG:-$OMR_KERNEL}/$OMR_TARGET - rm -rf ~/openmptcprouter/$OMR_TARGET/source/bin - - - save_cache: - key: cache-{{ checksum "/tmp/cache-version" }} - paths: - - openmptcprouter - - build_rpi4: - machine: - image: ubuntu-1604:201903-01 - - environment: - - OMR_VERSION: $CIRCLE_TAG - - OMR_TARGET: rpi4 - - OMR_KERNEL: 5.4 - - working_directory: ~/ - - steps: - - run: - name: cache - command: | - echo "cache 107 $OMR_KERNEL $OMR_TARGET" > /tmp/cache-target - echo "cache 108 $OMR_KERNEL $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - - - restore_cache: - keys: - - cache-{{ checksum "/tmp/cache-version" }} - - cache-{{ checksum "/tmp/cache-target" }} - - - run: - name: Build toolchain - no_output_timeout: 40m - command: | - git clone https://github.com/ysurac/openmptcprouter || true - cd openmptcprouter - git checkout ${CIRCLE_BRANCH:-$CIRCLE_TAG} || true - git pull || true - export OMR_PATH="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/${CIRCLE_BRANCH:-$CIRCLE_TAG}" - export OMR_FEED_URL="$CIRCLE_REPOSITORY_URL" - export OMR_FEED_SRC="${CIRCLE_BRANCH:-$CIRCLE_TAG}" - pyenv global 3.5.2 - sh build.sh prepare {tools,toolchain}/install -j2 - echo -e "$OMR_PRIVKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build - echo -e "$OMR_PUBKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build.pub - - - save_cache: - key: cache-{{ checksum "/tmp/cache-target" }} - paths: - - openmptcprouter - - - run: - name: Build - no_output_timeout: 40m - command: make IGNORE_ERRORS=m -C ~/openmptcprouter/$OMR_TARGET/source package/{compile,install,index} target/compile -j2 package/compile -j2 target/install -j2 - - - run: - name: Deploy - command: | - ssh -p ${OMR_DEPLOY_PORT:-22} deploy@$OMR_DEPLOY_HOST mkdir -p deploy/${CIRCLE_BRANCH:-release}/${CIRCLE_TAG:-$OMR_KERNEL}/$OMR_TARGET - rsync -av --delete-after ~/openmptcprouter/$OMR_TARGET/source/bin/ -e "ssh -q -p ${OMR_DEPLOY_PORT:-22}" deploy@$OMR_DEPLOY_HOST:deploy/${CIRCLE_BRANCH:-release}/${CIRCLE_TAG:-$OMR_KERNEL}/$OMR_TARGET - rm -rf ~/openmptcprouter/$OMR_TARGET/source/bin - - - save_cache: - key: cache-{{ checksum "/tmp/cache-version" }} - paths: - - openmptcprouter - - build_rpi2: - machine: - image: ubuntu-1604:201903-01 - - environment: - - OMR_VERSION: $CIRCLE_TAG - - OMR_TARGET: rpi2 - - OMR_KERNEL: 5.4 - - working_directory: ~/ - - steps: - - run: - name: cache - command: | - echo "cache 107 $OMR_KERNEL $OMR_TARGET" > /tmp/cache-target - echo "cache 108 $OMR_KERNEL $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - - - restore_cache: - keys: - - cache-{{ checksum "/tmp/cache-version" }} - - cache-{{ checksum "/tmp/cache-target" }} - - - run: - name: Build toolchain - no_output_timeout: 40m - command: | - git clone https://github.com/ysurac/openmptcprouter || true - cd openmptcprouter - git checkout ${CIRCLE_BRANCH:-$CIRCLE_TAG} || true - git pull || true - export OMR_PATH="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/${CIRCLE_BRANCH:-$CIRCLE_TAG}" - export OMR_FEED_URL="$CIRCLE_REPOSITORY_URL" - export OMR_FEED_SRC="${CIRCLE_BRANCH:-$CIRCLE_TAG}" - pyenv global 3.5.2 - sh build.sh prepare {tools,toolchain}/install -j2 - echo -e "$OMR_PRIVKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build - echo -e "$OMR_PUBKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build.pub - - - save_cache: - key: cache-{{ checksum "/tmp/cache-target" }} - paths: - - openmptcprouter - - - run: - name: Build - no_output_timeout: 40m - command: make IGNORE_ERRORS=m -C ~/openmptcprouter/$OMR_TARGET/source package/{compile,install,index} target/compile package/compile target/install -j2 - - - run: - name: Deploy - command: | - ssh -p ${OMR_DEPLOY_PORT:-22} deploy@$OMR_DEPLOY_HOST mkdir -p deploy/${CIRCLE_BRANCH:-release}/${CIRCLE_TAG:-$OMR_KERNEL}/$OMR_TARGET - rsync -av --delete-after ~/openmptcprouter/$OMR_TARGET/source/bin/ -e "ssh -q -p ${OMR_DEPLOY_PORT:-22}" deploy@$OMR_DEPLOY_HOST:deploy/${CIRCLE_BRANCH:-release}/${CIRCLE_TAG:-$OMR_KERNEL}/$OMR_TARGET - rm -rf ~/openmptcprouter/$OMR_TARGET/source/bin - - - save_cache: - key: cache-{{ checksum "/tmp/cache-version" }} - paths: - - openmptcprouter - - build_bpi-r2: - machine: - image: ubuntu-1604:201903-01 - - environment: - - OMR_VERSION: $CIRCLE_TAG - - OMR_TARGET: bpi-r2 - - OMR_KERNEL: 5.4 - - working_directory: ~/ - - steps: - - run: - name: cache - command: | - echo "cache 107 $OMR_KERNEL $OMR_TARGET" > /tmp/cache-target - echo "cache 108 $OMR_KERNEL $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - - - restore_cache: - keys: - - cache-{{ checksum "/tmp/cache-version" }} - - cache-{{ checksum "/tmp/cache-target" }} - - - run: - name: Build toolchain - no_output_timeout: 40m - command: | - git clone https://github.com/ysurac/openmptcprouter || true - cd openmptcprouter - git checkout ${CIRCLE_BRANCH:-$CIRCLE_TAG} || true - git pull || true - export OMR_PATH="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/${CIRCLE_BRANCH:-$CIRCLE_TAG}" - export OMR_FEED_URL="$CIRCLE_REPOSITORY_URL" - export OMR_FEED_SRC="${CIRCLE_BRANCH:-$CIRCLE_TAG}" - pyenv global 3.5.2 - sh build.sh prepare {tools,toolchain}/install -j2 - echo -e "$OMR_PRIVKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build - echo -e "$OMR_PUBKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build.pub - - - save_cache: - key: cache-{{ checksum "/tmp/cache-target" }} - paths: - - openmptcprouter - - - run: - name: Build - no_output_timeout: 40m - command: | - sudo apt-get update - sudo apt-get -yq install swig2.0 - make IGNORE_ERRORS=m -C ~/openmptcprouter/$OMR_TARGET/source package/{compile,install,index} target/compile -j2 package/compile -j2 target/install -j2 - - - run: - name: Deploy - command: | - ssh -p ${OMR_DEPLOY_PORT:-22} deploy@$OMR_DEPLOY_HOST mkdir -p deploy/${CIRCLE_BRANCH:-release}/${CIRCLE_TAG:-$OMR_KERNEL}/$OMR_TARGET - rsync -av --delete-after ~/openmptcprouter/$OMR_TARGET/source/bin/ -e "ssh -q -p ${OMR_DEPLOY_PORT:-22}" deploy@$OMR_DEPLOY_HOST:deploy/${CIRCLE_BRANCH:-release}/${CIRCLE_TAG:-$OMR_KERNEL}/$OMR_TARGET - rm -rf ~/openmptcprouter/$OMR_TARGET/source/bin - - - save_cache: - key: cache-{{ checksum "/tmp/cache-version" }} - paths: - - openmptcprouter - - build_wrt3200acm: - machine: - image: ubuntu-1604:201903-01 - - environment: - - OMR_VERSION: $CIRCLE_TAG - - OMR_TARGET: wrt3200acm - - OMR_KERNEL: 5.4 - - working_directory: ~/ - - steps: - - run: - name: cache - command: | - echo "cache 107 $OMR_KERNEL $OMR_TARGET" > /tmp/cache-target - echo "cache 108 $OMR_KERNEL $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - - - restore_cache: - keys: - - cache-{{ checksum "/tmp/cache-version" }} - - cache-{{ checksum "/tmp/cache-target" }} - - - run: - name: Build toolchain - no_output_timeout: 40m - command: | - git clone https://github.com/ysurac/openmptcprouter || true - cd openmptcprouter - git checkout ${CIRCLE_BRANCH:-$CIRCLE_TAG} || true - git pull || true - export OMR_PATH="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/${CIRCLE_BRANCH:-$CIRCLE_TAG}" - export OMR_FEED_URL="$CIRCLE_REPOSITORY_URL" - export OMR_FEED_SRC="${CIRCLE_BRANCH:-$CIRCLE_TAG}" - pyenv global 3.5.2 - sh build.sh prepare {tools,toolchain}/install -j2 - echo -e "$OMR_PRIVKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build - echo -e "$OMR_PUBKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build.pub - - - save_cache: - key: cache-{{ checksum "/tmp/cache-target" }} - paths: - - openmptcprouter - - - run: - name: Build - no_output_timeout: 40m - command: make IGNORE_ERRORS=m -C ~/openmptcprouter/$OMR_TARGET/source package/{compile,install,index} target/compile -j2 package/compile -j2 target/install -j2 - - - run: - name: Deploy - command: | - ssh -p ${OMR_DEPLOY_PORT:-22} deploy@$OMR_DEPLOY_HOST mkdir -p deploy/${CIRCLE_BRANCH:-release}/${CIRCLE_TAG:-$OMR_KERNEL}/$OMR_TARGET - rsync -av --delete-after ~/openmptcprouter/$OMR_TARGET/source/bin/ -e "ssh -q -p ${OMR_DEPLOY_PORT:-22}" deploy@$OMR_DEPLOY_HOST:deploy/${CIRCLE_BRANCH:-release}/${CIRCLE_TAG:-$OMR_KERNEL}/$OMR_TARGET - rm -rf ~/openmptcprouter/$OMR_TARGET/source/bin - - - save_cache: - key: cache-{{ checksum "/tmp/cache-version" }} - paths: - - openmptcprouter - - build_wrt32: - machine: - image: ubuntu-1604:201903-01 - - environment: - - OMR_VERSION: $CIRCLE_TAG - - OMR_KERNEL: 5.4 - - working_directory: ~/ - - steps: - - run: - name: cache - command: | - echo "cache 107 $OMR_KERNEL $OMR_TARGET" > /tmp/cache-target - echo "cache 108 $OMR_KERNEL $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - - - restore_cache: - keys: - - cache-{{ checksum "/tmp/cache-version" }} - - cache-{{ checksum "/tmp/cache-target" }} - - - run: - name: Build toolchain wrt3200acm - no_output_timeout: 40m - command: | - git clone https://github.com/ysurac/openmptcprouter || true - cd openmptcprouter - git checkout ${CIRCLE_BRANCH:-$CIRCLE_TAG} || true - git pull || true - export OMR_PATH="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/${CIRCLE_BRANCH:-$CIRCLE_TAG}" - export OMR_FEED_URL="$CIRCLE_REPOSITORY_URL" - export OMR_FEED_SRC="${CIRCLE_BRANCH:-$CIRCLE_TAG}" - export OMR_TARGET="wrt3200acm" - pyenv global 3.5.2 - sh build.sh prepare {tools,toolchain}/install -j2 - echo -e "$OMR_PRIVKEY" > ~/openmptcprouter/wrt3200acm/source/key-build - echo -e "$OMR_PUBKEY" > ~/openmptcprouter/wrt3200acm/source/key-build.pub - - - save_cache: - key: cache-{{ checksum "/tmp/cache-target" }} - paths: - - openmptcprouter - - - run: - name: Build wrt3200acm - no_output_timeout: 40m - command: make IGNORE_ERRORS=m -C ~/openmptcprouter/wrt3200acm/source package/{compile,install,index} target/compile -j2 package/compile -j2 target/install -j2 - - - run: - name: Deploy wrt3200acm - command: | - ssh -p ${OMR_DEPLOY_PORT:-22} deploy@$OMR_DEPLOY_HOST mkdir -p deploy/${CIRCLE_BRANCH:-release}/${CIRCLE_TAG:-$OMR_KERNEL}/$OMR_TARGET - rsync -av --delete-after ~/openmptcprouter/wrt3200acm/source/bin/ -e "ssh -q -p ${OMR_DEPLOY_PORT:-22}" deploy@$OMR_DEPLOY_HOST:deploy/${CIRCLE_BRANCH:-release}/${CIRCLE_TAG:-$OMR_KERNEL}/wrt3200acm - rm -rf ~/openmptcprouter/wrt3200acm/source/bin - - - save_cache: - key: cache-{{ checksum "/tmp/cache-version" }} - paths: - - openmptcprouter - - - run: - name: Build toolchain wrt32x - no_output_timeout: 40m - command: | - cd ~/openmptcprouter/ - export OMR_PATH="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/${CIRCLE_BRANCH:-$CIRCLE_TAG}" - export OMR_FEED_URL="$CIRCLE_REPOSITORY_URL" - export OMR_FEED_SRC="${CIRCLE_BRANCH:-$CIRCLE_TAG}" - export OMR_TARGET="wrt32x" - ln -s wrt3200acm wrt32x - pyenv global 3.5.2 - sh build.sh prepare {tools,toolchain}/install -j2 - echo -e "$OMR_PRIVKEY" > ~/openmptcprouter/wrt32x/source/key-build - echo -e "$OMR_PUBKEY" > ~/openmptcprouter/wrt32x/source/key-build.pub - - - run: - name: Build wrt32x - no_output_timeout: 40m - command: make IGNORE_ERRORS=m -C ~/openmptcprouter/wrt32x/source package/{compile,install,index} target/compile -j2 package/compile -j2 target/install -j2 - - - run: - name: Deploy wrt32x - command: | - ssh -p ${OMR_DEPLOY_PORT:-22} deploy@$OMR_DEPLOY_HOST mkdir -p deploy/${CIRCLE_BRANCH:-release}/${CIRCLE_TAG:-$OMR_KERNEL}/$OMR_TARGET - rsync -av --delete-after ~/openmptcprouter/wrt32x/source/bin/ -e "ssh -q -p ${OMR_DEPLOY_PORT:-22}" deploy@$OMR_DEPLOY_HOST:deploy/${CIRCLE_BRANCH:-release}/${CIRCLE_TAG:-$OMR_KERNEL}/wrt32x - -workflows: - version: 2 - main: - jobs: - - prepare: - filters: - tags: - only: /.*/ - branches: - only: - - develop - - build_x86_64: - requires: - - prepare - filters: - tags: - only: /.*/ - branches: - only: - - develop - - build_x86: - requires: - - prepare - filters: - tags: - only: /.*/ - branches: - only: - - develop - - build_rpi4: - requires: - - prepare - filters: - tags: - only: /.*/ - branches: - only: - - develop - - build_rpi3: - requires: - - prepare - filters: - tags: - only: /.*/ - branches: - only: - - develop - - build_espressobin: - requires: - - prepare - filters: - tags: - only: /.*/ - branches: - only: - - develop - - build_r2s: - requires: - - prepare - filters: - tags: - only: /.*/ - branches: - only: - - develop - - build_rpi2: - requires: - - prepare - filters: - tags: - only: /.*/ - branches: - only: - - develop - - build_bpi-r2: - requires: - - prepare - filters: - tags: - only: /.*/ - branches: - only: - - develop - - build_wrt32: - requires: - - prepare - filters: - tags: - only: /.*/ - branches: - only: - - develop diff --git a/.gitignore b/.gitignore new file mode 100755 index 000000000..2d93d2114 --- /dev/null +++ b/.gitignore @@ -0,0 +1,29 @@ +*.o +.DS_Store +.*.swp +/env +/dl +/.config +/.config.old +/bin +/build_dir +/staging_dir +/tmp +/logs +/feeds +/feeds.conf +/files +/overlay +/package/feeds +/package/openwrt-packages +key-build* +*.orig +*.rej +*~ +.#* +*# +.emacs.desktop* +TAGS*~ +git-src +.git-credentials +/*.log diff --git a/luci-app-openmptcprouter/htdocs/luci-static/resources/computer.png b/luci-app-openmptcprouter/htdocs/luci-static/resources/computer.png index 4598c7cb644bf2f2cc53b4fb0f07af6b55ba80b4..f90e4789b97a965a459311314d0da607bcfea5f7 100755 GIT binary patch literal 2578 zcmb_e3se(l77j?Qg(3o;6_B#yK!H^!naKmlKvX0sK@uY7Abt3l%uHYk$;8YA0?Kj} zS4B~)OR-e&!P$D&RYVaE<+W0!B8YInwkcGrXYF=H!Sa^U+U|r$4&Aj~PtWGeRW#K;r4_nX|UoHv(y25x7TaIaU4F>f$Do{OjLcHn(b z?8W1~)JtiS*d%2fiqm>NM$lT4Z_yh$G>;dt(qhE$RFVa>WHM!tf#23$0Rf7Tfg2@C zSZRzRQ>d6M6S*NvrNOgOaVY_=TmeK_P>w)PvKU~|rx_U3A_FIRQEqIT7J$GcgiV!! zkv4}wl2Q#s(Iyg*@IxRR5r+YxQa%zQhD9OE0U?Y?1#p-E5kWA5!Xc<66qx>joHrAp zLlfj{rhRc=GBAZ@ji^A7k&(gA5b1i+ z$WpWcurXp<+RVy8PU%z#dZV4zz)Yu!OPIid83hO*wuLkaByc;%%!g)yCw=b{-+rjZmRkPK}$ z;be3=C)3{+jS-D9kr+#xG&G$yvr+09$$*fH8VFWmIAyQ}@rPL^q#R>O87PE>FoYo7 zr9og+B1FZKWpEe@!&6WtO;Ebb*-#;bglS+H6>*pNXHc$a2#m%4Cz!xd9c|KMT*#Cj zOC|+ILox{16NyIAX|#!R%&8O2o>xRgsZF$wO5+xogte;yMRZgMA`JTpr`^7m&x z|0rwgdmwrEZu{-tnu_eJ`TmW*AE)0rG7|p9)6jw~?+f-17p8Pnf79~2@bIsX&sWs{ zS#zQYY9-pcpJ>O5y0QBM=c~5BmX|7>-tO&x_s31@nsIC2#G=54>TTI@Sm2?e?!%$~ zvTp7#yP1>y54RpYw6MQ#aqikjaTl=&P22f~oNV*x&eg@rYU@yaaMyS5M);`&m}#13;N~z(m{E+d+Gme`s?PC$1jBMmF?tL-W+eKp3{jI&-Una z-dZAmfb4f#ZY^2+!2Otq;^e2c!Iq%ZVTbFV)G`#T`_qcJvi#%Aid2ppAGiNC?@kPA zZ5>})7LeqAC63JU`zSF(s{|D%zw)5V{&KJ!&!snd#{2A;-!y#K9Ugxr%p5cbsvE!A zHbU=v-Mb@p!fX7?@Rm&nE0+)MxgR{>z1TT@__%NQj=h$%1w)#i2m7M)y#pV(wAVEr zaXneiE4LQ7G%hvP#7#)Otqa~7%dN|M(mD5!4^ZJ=K*e0ql2;0>%hhOMoVRI z|GK8DJc;=RQ3h3e`HG>%#ZG+J!q}?pdY{g@0qY(AnQnbL|3;sF>*=G#wO(Tj2iz+> z{hhpPDwet5Z9P}>_b1DWdR88CSk=W!{9Rn1@y>X39y>SBG45LTv+GNmw9!k}woL(5&f7*NvMpYaP>^3 zpt4vlmt~g=25q1P@LT{7BS`CoN=CpJdxIv(GrkD`chVD;nJ>bi^o(wfSY zVCS7c6J)NHtA?hs5RYQ5=*FvaCrC_Ed3i}CZL!kN+DdjnH$?KYG>rm*yY0JXQY_$~ zTvj#E;>ll(i+>*Iq6~OV;2hz(;Q(wSm&EOr4`NkAnWq^5vPWW@skC@kL&?_a5$&;z zok*4%%mPmLsy=F7MXM92r7^yE&y^9Y!AQ-M4aj`_TPh^fl#fB)a}q#2rcPut^r>-v z=30jpoihXSJX(bA z=oUSS*@u)zSN+piMRr!%1_vmeyH*ad1+5Ldu)^PkOgEeamR%GAJQqG!4Scv$ym5|4 zaSuPLHJ5e_luiJ!C6bwky9CbB zsH;bhJQh+)B|Jp`*4u>|#k|PX2ieNX$_wY>E0w#51@9)MP#hUtTGe5F$!lJKaG3wSbo}&&V&qkA}wD-=G`H-X`Z#!PZrq= z?5k!l2k>naGpkzO$@2Gq@Flwf4UAJ|?A;*?%TJM!V0VAzNRqNN$a2BR`x){=M)*7VkKd zwXF{ybln8j=>SqGBO^IKcfClTR7%OaCI-Dgzp{ZYaQ4B eb@f*L6<`2|l77u%dHOB@0000 - - - - - - - - - - - - - - - - - - - - - - - - - - + + diff --git a/luci-app-openmptcprouter/htdocs/luci-static/resources/openmptcprouter.png b/luci-app-openmptcprouter/htdocs/luci-static/resources/openmptcprouter.png index f4683f2c532cf5306c9ed7c8b5af8945309fc203..9a4b11123bc1b87715a4143565002063697f4c80 100755 GIT binary patch literal 4287 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 l*&Jb|&?h7q$6001CSdQ@0+Qek%> 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 diff --git a/luci-app-openmptcprouter/htdocs/luci-static/resources/server.png b/luci-app-openmptcprouter/htdocs/luci-static/resources/server.png index 78f61d67281331786d80f0af1580dba0a51b5736..f6ca87d5ece336a5521111d1c4073243ef12f2e6 100755 GIT binary patch literal 3923 zcmb_f2UJtp77Yjtq9_O|C~63zpd@*zB%uieB}jmwiGX6t3kjr=1QLqaKtTZuC^kSw zkup@VASlK1QH&H(5GgvSpx7HOm4W|)$a4O7=Fgh-v-0xZyLaDn_Bm&tdsmXZJXY!I z%+rCvV7fF{syB518M?UITF`IuXA>XjHdXApRtn8`sxCDriz5mcOsk6L8z2jyyHi*q z0gAyEF+r3hWp)UN>DLeh;z_eY=|q~KgrOA-F&cvcR3VK6*{n&NI8wqNcg|*^K|Uw|g)%9G z#Y|$wT#-y9<%<5q^yKs(96+h1(S! z(AO6OPzYEGp0FGsQ2^j8lrCcPIMLrju}BQb7XT=DfPw-30EI-uX2=--6U=5&I3kIF z0fo#HFhW7JSQv_cPbQM$EaHnKkYk7)?)!0?v$K~(#NqLw390ugCpgW;nTR11iAXF8 zGftOIr_h8_8AHedX;eD|lpYk1$EJW-HkrU+a*#wKgN4KsF<2xCz>$$SA^}Taa|k2= zkN>uwDq=;dMDT4r8(MD-iQF1wl96~4i;cu%01!#S0AwWDn!^AU85(O#|Mme zkw$g&RUCbhB}iG|XWY1HP*K2C}NKkN8Vlb&T}Q>XVGrR$kEt5Gyz9 zW7JcU^fypbU=24f`cNNvv)|gleOW%$O>Lu7O+K1u7#Z34hQLj0DrVWN;B(zM^n~)@ zxX{^68;!)d@p2DVUevap*49UdcNlFMp|}i2!e^wr7VaiE2Ub#oNrW=dfI;v4R|MhGjP;%Q&lTyBU2>A` z$lBqox|t=*7x*3PYJFp4pR@6Z^X2fn@|U$mQ73J7RGI#6FPFby3kJ%xi$cspa_sAS z*V(L1-+1n1?`iojhUK!_#{6nqiP_doi+2AOgQ!*pZRWWISClKQUn<+W1|G(2{e8^+ z_0XuVnIwGP?WfYbL{Jnq_sXDuwetFB*p&=UZ<9KD^d9rX?E=I3jaQqSA_u0~U)<<2 z(l(Ws6o=*CyEP1VM>4xQ6}7ucmJPn2X^FKw!tNgv&#rX8ROqhn;eM-2 zxVz<&)03jRJyA79S#DQA$6#iXO`L7RtFeXU5%ewDl{;V5UGFEAkQa3oArek$Tu&gF zBIXh1`0Nij$ZMqD-(fv^l-Uxp?BTID4tKB*2dQR#x08<4<;is#rc`EKyR+F)?Z9j8 z(**lM_bYK$zjdY_+G$QbX1*nju3s6}bP*FM-OdFj#Gs{_WZ2b zDY@L3VQ5>%Sane=WYno;nw!>*dFkt=t+Do>Ie>ygZX8zfH@*msj-8$!i{pZbWrV)U(MX(gxMd z3@;U7`}W(>5U9p=-X#fwHKmpu$0Y>DTzw~2<4Ts>9vc1BUUqxO>pZ2~Do@(zaBgF2 zFKQ4Kc%j;Xj%9fE9!rjR-ekz=-p5}FnP=t(1f7gAJR0S0(zH5$ltUbf3(|R)WZ-0` zy@wmNqv*}S($wUj+LDm=!(Zm_eRRj;$UL~et`Rm1(LqA(DH&%wryw~6cCCv?+;(BV)aqengR*m^ZJR6D^){H7y^+j5b zI}HtkKQ(XY8@<~2yTN_y4q52A;zOC&rI+{3+nuIX&aPh<9%FG{Ejy$z)47B4g#1); zwoVzFJ@CN+MSC7Spdc==E-eRsN;AiKjut!X2fxPhj_?Ehs3QgWSGuGNYaME5>6>ZC zw>ofd*M?eu^`XoAEp}xs z^r+cI!k(%w$~tf0+|zz$*Py@fw}ww;@S@^K@tRIycF_66pXQ95I@y~-J#BTfAGJH> zQ@|-yd(@!2cjeye(@^Lvrv}3KfQ0hSa{6+*z&QtPP-d-9T+YkvrKyFt6f>a&l| zuJQJl>3Qqv%UV`h(0<%&-}8-2Y1p>I z>D4SxgJKVasv{q4ToxMvQ!nyzsr z+CzLz!zYETfwMYqIudP2>z|xFSH+BrH0C4?Z>kTV_%NURsHRyxp+`Zoi=R!H-Akq A1poj5 delta 1075 zcmV-31kC%>9@_|zBo78+OGiWi{{a60|De66laV18e*gz`Nliru;tLxMAT--}vf=;$ z1L#RaK~#9!?VY`A6hRoqf4h6(LIgn!K{1UQqcJ8Xduwrb;WD>(H@h?Uk=*mZ3%R|SN%Fh-cxUIyCZM%S zz)j#fe=r7Y1p+pfMvT`nP_eAL0{jBr0QZ2`S-<(+S|f>KEj|J#Y~Yn@g#|4=D!`-( zEo%6>0L%b;ky>$sZ@q-IIr7UhFMz}GGJB`#C||*Y9I^+(X|2f zOgD%Lkd#WLOiN}IMG279wozTHvk@RBMv7zm%Oys-l60xgU_(sFlZJjsYjy4u#6Z~m zf6R%2k>Uhd>$Q08t4@C*mdoWVAcGt|GiZoz*6AO_g@px;&t50nk|276sGKFsE+a|I zd3h-W=7q*yaU7cv--Weu@FdYIYD z5Qok9?ggTZ?;apF0F%kn5u!|B0dPmjY{a)2n4r>7K0CeOwx&T;ddXLtuLe;?YW zOtvLK6vRP-xNcI*V0<4+rI|bd-lF4yOdO4vkjc{>s7#)YlF8GGp9@sSSZTGW0Nh4SS=-h5H*nM} zbf`9ID!pl;6sPQzS>~|-=IW6be;O0*WkJjZ@=^Wb6#>i*ajw219~YNQYP^ZP1K1e? zd&I?Fg+jsn(~GeX*e*1=dm=!jgDMXaL_ripL8M1c*+F;7xt6LR2XcLNie)<3>y81R1gd3x0Z!R;-BI8H@K4az;xBL?*p>AT$pml}I1lUt tb^}|6WDfjO%b!0`ea`N)8CnLDs{d)gJT8*w5MTfR002ovPDHLkV1hL2?@s^# diff --git a/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter b/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter index 99d9061e9..41d595756 100755 --- a/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter +++ b/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter @@ -143,6 +143,9 @@ start_service() { uci -q batch <<-EOF > /dev/null del_list dhcp.@dnsmasq[0].server='127.0.0.1#5353' add_list dhcp.@dnsmasq[0].server='114.114.114.114' + add_list dhcp.@dnsmasq[0].server="223.5.5.5" + add_list dhcp.@dnsmasq[0].server="223.6.6.6" + add_list dhcp.@dnsmasq[0].server="180.76.76.76" set dhcp.@dnsmasq[0].dnsseccheckunsigned='0' delete dhcp.@dnsmasq[0].dnssec='1' commit dhcp @@ -151,6 +154,9 @@ start_service() { uci -q batch <<-EOF > /dev/null add_list dhcp.@dnsmasq[0].server='127.0.0.1#5353' del_list dhcp.@dnsmasq[0].server='114.114.114.114' + add_list dhcp.@dnsmasq[0].server="223.5.5.5" + add_list dhcp.@dnsmasq[0].server="223.6.6.6" + add_list dhcp.@dnsmasq[0].server="180.76.76.76" set dhcp.@dnsmasq[0].dnsseccheckunsigned='1' set dhcp.@dnsmasq[0].dnssec='1' commit dhcp diff --git a/luci-theme-argon/luasrc/view/themes/argon/footer.htm b/luci-theme-argon/luasrc/view/themes/argon/footer.htm index a4e1df4b2..f28850b93 100755 --- a/luci-theme-argon/luasrc/view/themes/argon/footer.htm +++ b/luci-theme-argon/luasrc/view/themes/argon/footer.htm @@ -20,7 +20,7 @@
- Powered by <%= ver.luciname %> (<%= ver.luciversion %>) / + Powered by openmptcprouter路由器特别定制优化版 官方支持群140215026<%= ver.luciname %> (<%= ver.luciversion %>) / ArgonTheme <%# vPKG_VERSION %> / <%= ver.distversion %> diff --git a/luci-theme-openmptcprouter/htdocs/luci-static/openmptcprouter/cascade.css b/luci-theme-openmptcprouter/htdocs/luci-static/openmptcprouter/cascade.css index facffacbf..46841fc95 100755 --- a/luci-theme-openmptcprouter/htdocs/luci-static/openmptcprouter/cascade.css +++ b/luci-theme-openmptcprouter/htdocs/luci-static/openmptcprouter/cascade.css @@ -17,7 +17,7 @@ * Props to Eric Meyer (meyerweb.com) for his CSS reset file. We're using an adapted version here that cuts out some of the reset HTML elements we will never need here (i.e., dfn, samp, etc). * ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */ -* { + * { margin: 0; padding: 0; border: 0; @@ -768,7 +768,7 @@ header { } header a { - color: #bfbfbf; + color: #f9f9f9; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); } @@ -786,8 +786,8 @@ header h3 { header h3 a, header .brand { float: left; display: block; - padding: 8px 20px 12px; - margin-left: -20px; + /* padding: 8px 20px 12px; */ + /* margin-left: -10px; */ color: #fff; font-size: 20px; font-weight: 200; @@ -799,14 +799,14 @@ header p { line-height: 40px; } + header .fill { - background-color: #0d6eff; + background-color: #000; background-repeat: repeat-x; - background-image: linear-gradient(to bottom, #0c5fdc, #0d6eff); + background-image: linear-gradient(to bottom, #6089d4, #6089d4); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); padding: 0 5px; } - header div > ul, .nav { display: block; float: left; @@ -868,7 +868,7 @@ header div > ul .menu-dropdown, .nav .menu-dropdown, header div > ul .dropdown-menu, .nav .dropdown-menu { - background-color: #333; + background-color: #6089d4; } header div > ul .menu-dropdown a.menu, @@ -898,7 +898,7 @@ header div > ul .menu-dropdown li a, .nav .menu-dropdown li a, header div > ul .dropdown-menu li a, .nav .dropdown-menu li a { - color: #999; + color: #f9f9f9; text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); } diff --git a/luci-theme-openmptcprouter/htdocs/luci-static/openmptcprouter/favicon.png b/luci-theme-openmptcprouter/htdocs/luci-static/openmptcprouter/favicon.png index 7c3f3acb1f0c7c142d0dbd3f42a4926b07f8eb38..7ee7779108d5a958e17f305962fef3f5715fbafd 100755 GIT binary patch literal 8175 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 FV1l>8OPc@y diff --git a/luci-theme-openmptcprouter/htdocs/luci-static/resources/openmptcprouter/images/omr-logo.png b/luci-theme-openmptcprouter/htdocs/luci-static/resources/openmptcprouter/images/omr-logo.png index f8584ac11a5020cc2dfe049b6b87025ab7c35782..25260a68449ee448ce079217e8de631b4d5e9ebf 100644 GIT binary patch literal 15505 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 V*JbhYUTO@ZD61w@BV`u){{XpJ!3+QZ literal 50790 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 diff --git a/luci-theme-openmptcprouter/luasrc/view/themes/openmptcprouter/footer.htm b/luci-theme-openmptcprouter/luasrc/view/themes/openmptcprouter/footer.htm index 2c3c4a07b..c700afc0b 100755 --- a/luci-theme-openmptcprouter/luasrc/view/themes/openmptcprouter/footer.htm +++ b/luci-theme-openmptcprouter/luasrc/view/themes/openmptcprouter/footer.htm @@ -8,7 +8,7 @@ <% local ver = require "luci.version" %>
diff --git a/luci-theme-openmptcprouter/luasrc/view/themes/openmptcprouter/header.htm b/luci-theme-openmptcprouter/luasrc/view/themes/openmptcprouter/header.htm index d45dd088c..459f654e4 100755 --- a/luci-theme-openmptcprouter/luasrc/view/themes/openmptcprouter/header.htm +++ b/luci-theme-openmptcprouter/luasrc/view/themes/openmptcprouter/header.htm @@ -27,7 +27,7 @@ - <%=striptags( (boardinfo.hostname or "?") .. ( (node and node.title) and ' - ' .. translate(node.title) or '')) %> - LuCI + <%=striptags( (boardinfo.hostname or "?") .. ( (node and node.title) and ' - ' .. translate(node.title) or '')) %> - system @@ -47,7 +47,7 @@
@@ -66,8 +66,8 @@ <%- end -%> <%- if current_omr_version ~= "" and latest_omr_version ~= "" and current_omr_version < latest_omr_version then -%>
-

<%=translatef("You have OpenMPTCProuter version %s and version %s is now available",current_omr_version,latest_omr_version)%>

- +

<%=translatef("You have openmptcprouter business version %s and version %s is now available",current_omr_version,latest_omr_version)%>

+
<%- end -%> diff --git a/openmptcprouter/files/etc/uci-defaults/1920-omr-network b/openmptcprouter/files/etc/uci-defaults/1920-omr-network deleted file mode 100644 index 4a4710df9..000000000 --- a/openmptcprouter/files/etc/uci-defaults/1920-omr-network +++ /dev/null @@ -1,301 +0,0 @@ -#!/bin/sh -. /lib/functions.sh - -_setup_macaddr() { - uci -q get "network.$1.macaddr" >/dev/null && return - uci -q set "network.$1.macaddr=$2" -} - -_setup_macvlan() { - uci -q get "network.$1_dev.ifname" >/dev/null && return - - # do not create macvlan for vlan - local _ifname - _ifname=$(uci -q get "network.$1.ifname") - case "$_ifname" in - eth*.*) return ;; - esac - - uci -q batch <<-EOF - set network.$1_dev=device - set network.$1_dev.name=$1 - set network.$1_dev.type=macvlan - set network.$1_dev.ifname=$_ifname - set network.$1.ifname=$1 - set network.$1.type=macvlan - set network.$1.masterintf=$_ifname - set macvlan.$1=macvlan - set macvlan.$1.name=$1 - set macvlan.$1.ifname=$_ifname - EOF - _macaddr=$(uci -q get "network.$1.macaddr") - _setup_macaddr "$1_dev" "${_macaddr:-auto$(date +%s)}" -} - -_setup_macvlan_update() { - uci -q get "network.$1_dev.ifname" >/dev/null || return - - uci -q batch <<-EOF - set macvlan.$1=macvlan - set macvlan.$1.ifname=$_ifname - commit macvlan - EOF -} - -_setup_mptcp_handover_to_on() { - if [ "$(uci -q get network.$1.multipath)" = "handover" ]; then - uci -q set network.$1.multipath=on - fi - if [ "$(uci -q get openmptcprouter.$1.multipath)" = "handover" ]; then - uci -q set openmptcprouter.$1.multipath=on - fi -} - -_setup_multipath_off() { - uci -q get "network.$1.multipath" >/dev/null && return - uci -q set "network.$1.multipath=off" -} - -_setup_wan_interface() { - uci -q batch <<-EOF - set network.$1=interface - set network.$1.ifname=$2 - set network.$1.proto=static - set network.$1.ip4table=wan - set network.$1.multipath=$3 - set network.$1.defaultroute=0 - commit network - add_list firewall.@zone[1].network=$1 - commit firewall - EOF - [ -n "$4" ] && uci -q set network.$1.type=$4 -} - -config_load network -config_foreach _setup_macvlan_update interface -config_foreach _setup_mptcp_handover_to_on interface - -if [ "$(uci -q show network.lan | grep multipath)" != "" ]; then - exit 0 -fi - -lanif="eth0" -if [ "$(grep rockchip /etc/os-release)" != "" ]; then - lanif="eth1" -elif [ -d /sys/class/net/lan0 -o -n "$(ip link | grep ' lan0')" ] && [ -d /sys/class/net/wan -o -n "$(ip link | grep ' wan@')" -o -n "$(ip link | grep ' wan:')" ]; then - lanif="wan" -elif [ -d /sys/class/net/lan1 -o -n "$(ip link | grep ' lan1')" ] && [ -d /sys/class/net/wan -o -n "$(ip link | grep ' wan@')" -o -n "$(ip link | grep ' wan:')" ]; then - lanif="wan" -elif [ -d /sys/class/net/lan ] || [ -n "$(ip link | grep ' lan')" ]; then - lanif="lan" -elif [ "$(swconfig list 2>&1 | grep switch0)" != "" ] && [ -d '/sys/class/net/eth1.5' ]; then - lanif="eth1.5" - uci -q batch <<-EOF - set network.@switch_vlan[0]=switch_vlan - set network.@switch_vlan[0].device='switch0' - set network.@switch_vlan[0].vlan=1 - set network.@switch_vlan[0].vid=1 - set network.@switch_vlan[0].ports='3 5t' - add network switch_vlan - set network.@switch_vlan[1].device='switch0' - set network.@switch_vlan[1].vlan=2 - set network.@switch_vlan[1].vid=2 - set network.@switch_vlan[1].ports='2 5t' - add network switch_vlan - set network.@switch_vlan[2].device='switch0' - set network.@switch_vlan[2].vlan=3 - set network.@switch_vlan[2].vid=3 - set network.@switch_vlan[2].ports='1 5t' - add network switch_vlan - set network.@switch_vlan[3].device='switch0' - set network.@switch_vlan[3].vlan=4 - set network.@switch_vlan[3].vid=4 - set network.@switch_vlan[3].ports='0 5t' - add network switch_vlan - set network.@switch_vlan[4].device='switch0' - set network.@switch_vlan[4].vlan=5 - set network.@switch_vlan[4].vid=5 - set network.@switch_vlan[4].ports='4 6t' - EOF -elif [ "$(swconfig list 2>&1 | grep switch0)" != "" ] && [ -d /sys/class/net/eth1 ]; then - lanif="eth1" -elif [ ! -d /sys/class/net/eth1 ] && [ -d /sys/class/net/eth0 ]; then - lanif="eth0" -fi -uci -q batch <<-EOF -delete network.lan.type -set network.lan=interface -set network.lan.proto=static -set network.lan.ipaddr=192.168.100.1 -set network.lan.netmask=255.255.255.0 -set network.lan.ifname=${lanif} -set network.lan.metric=2048 -set network.lan.ipv6=0 -set network.lan.delegate=0 -EOF - -uci -q batch <<-EOF -delete network.none -delete network.wan -delete network.if6rd -reorder network.loopback=0 -reorder network.globals=1 -reorder network.lan=2 -set network.globals.multipath=enable -EOF - -# Set the ip rule for the lan with a pref of 100 -uci -q show network.lan_rule >/dev/null || \ - uci -q batch <<-EOF - set network.lan_rule=rule - set network.lan_rule.lookup=lan - set network.lan_rule.priority=100 - EOF - -if [ "$(uci -q get network.vpn0.proto)" = "none" ]; then - uci -q delete network.vpn0 -fi - -config_load network -config_foreach _setup_multipath_off interface - -# Add the lan as a named routing table -if ! grep -s -q "lan" /etc/iproute2/rt_tables; then - echo "50 lan" >> /etc/iproute2/rt_tables -fi -uci -q set network.lan.ip4table='lan' - -#uci -q set "network.lan.ip6assign=64" - -# Create WAN interfaces -if [ "$(uci -q show network.wan1 | grep multipath)" = "" ] && [ -z "$(uci -q get network.wan1.multipath)" ]; then - if [ "$(grep rockchip /etc/os-release)" != "" ]; then - _setup_wan_interface wan1 eth0 master macvlan - _setup_wan_interface wan2 eth0 on macvlan - _setup_macvlan wan1 - _setup_macvlan wan2 - elif [ "$(swconfig list 2>&1 | grep switch0)" != "" ]; then - _setup_wan_interface wan1 eth0.1 master - _setup_wan_interface wan2 eth0.2 on - _setup_wan_interface wan3 eth0.3 on - _setup_wan_interface wan4 eth0.4 on - elif [ -d /sys/class/net/wan ] || [ -n "$(ip link | grep ' wan:')" ] || [ -n "$(ip link | grep ' wan@')" ]; then - if [ -d /sys/class/net/lan0 -o -n "$(ip link | grep ' lan0')" ] && [ -d /sys/class/net/lan1 -o -n "$(ip link | grep ' lan1')" ]; then - _setup_wan_interface wan1 lan0 master - _setup_wan_interface wan2 lan1 on - - _macaddr=$(uci -q get "network.lan0.macaddr") - _setup_macaddr "wan1" "${_macaddr:-$(dd if=/dev/urandom bs=1024 count=1 2>/dev/null | md5sum | sed -e 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4:\5:\6/' -e 's/^\(.\)[13579bdf]/\10/')}" - _macaddr=$(uci -q get "network.lan1.macaddr") - _setup_macaddr "wan2" "${_macaddr:-$(dd if=/dev/urandom bs=1024 count=1 2>/dev/null | md5sum | sed -e 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4:\5:\6/' -e 's/^\(.\)[13579bdf]/\10/')}" - if [ -d /sys/class/net/lan2 ] || [ -n "$(ip link | grep ' lan2')" ]; then - _setup_wan_interface wan3 lan2 on - _macaddr=$(uci -q get "network.lan2.macaddr") - _setup_macaddr "wan3" "${_macaddr:-$(dd if=/dev/urandom bs=1024 count=1 2>/dev/null | md5sum | sed -e 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4:\5:\6/' -e 's/^\(.\)[13579bdf]/\10/')}" - if [ -d /sys/class/net/lan3 ] || [ -n "$(ip link | grep ' lan3')" ]; then - _setup_wan_interface wan4 lan3 on - _macaddr=$(uci -q get "network.lan3.macaddr") - _setup_macaddr "wan4" "${_macaddr:-$(dd if=/dev/urandom bs=1024 count=1 2>/dev/null | md5sum | sed -e 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4:\5:\6/' -e 's/^\(.\)[13579bdf]/\10/')}" - fi - fi - elif [ -d /sys/class/net/lan1 -o -n "$(ip link | grep ' lan1')" ] && [ -d /sys/class/net/lan2 -o -n "$(ip link | grep ' lan2')" ]; then - _setup_wan_interface wan1 lan1 master - _setup_wan_interface wan2 lan2 on - - _macaddr=$(uci -q get "network.lan1.macaddr") - _setup_macaddr "wan1" "${_macaddr:-$(dd if=/dev/urandom bs=1024 count=1 2>/dev/null | md5sum | sed -e 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4:\5:\6/' -e 's/^\(.\)[13579bdf]/\10/')}" - _macaddr=$(uci -q get "network.lan2.macaddr") - _setup_macaddr "wan2" "${_macaddr:-$(dd if=/dev/urandom bs=1024 count=1 2>/dev/null | md5sum | sed -e 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4:\5:\6/' -e 's/^\(.\)[13579bdf]/\10/')}" - if [ -d /sys/class/net/lan3 ] || [ -n "$(ip link | grep ' lan3')" ]; then - _setup_wan_interface wan3 lan3 on - _macaddr=$(uci -q get "network.lan3.macaddr") - _setup_macaddr "wan3" "${_macaddr:-$(dd if=/dev/urandom bs=1024 count=1 2>/dev/null | md5sum | sed -e 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4:\5:\6/' -e 's/^\(.\)[13579bdf]/\10/')}" - if [ -d /sys/class/net/lan4 ] || [ -n "$(ip link | grep ' lan4')" ]; then - _setup_wan_interface wan4 lan4 on - _macaddr=$(uci -q get "network.lan4.macaddr") - _setup_macaddr "wan4" "${_macaddr:-$(dd if=/dev/urandom bs=1024 count=1 2>/dev/null | md5sum | sed -e 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4:\5:\6/' -e 's/^\(.\)[13579bdf]/\10/')}" - fi - fi - else - _setup_wan_interface wan1 wan master macvlan - _setup_wan_interface wan2 wan on macvlan - _setup_macvlan wan1 - _setup_macvlan wan2 - fi - elif [ -d /sys/class/net/wan1 ] || [ -n "$(ip link | grep ' wan1')" ]; then - if [ -d /sys/class/net/wan2 ] || [ -n "$(ip link | grep ' wan2')" ]; then - _setup_wan_interface wan1 wan1 master - _setup_wan_interface wan2 wan2 on - - _macaddr=$(uci -q get "network.wan1.macaddr") - _setup_macaddr "wan1" "${_macaddr:-$(dd if=/dev/urandom bs=1024 count=1 2>/dev/null | md5sum | sed -e 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4:\5:\6/' -e 's/^\(.\)[13579bdf]/\10/')}" - _macaddr=$(uci -q get "network.wan2.macaddr") - _setup_macaddr "wan2" "${_macaddr:-$(dd if=/dev/urandom bs=1024 count=1 2>/dev/null | md5sum | sed -e 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4:\5:\6/' -e 's/^\(.\)[13579bdf]/\10/')}" - - if [ -d /sys/class/net/wan3 ] || [ -n "$(ip link | grep ' wan3')" ]; then - _setup_wan_interface wan3 wan3 on - _macaddr=$(uci -q get "network.wan3.macaddr") - _setup_macaddr "wan3" "${_macaddr:-$(dd if=/dev/urandom bs=1024 count=1 2>/dev/null | md5sum | sed -e 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4:\5:\6/' -e 's/^\(.\)[13579bdf]/\10/')}" - if [ -d /sys/class/net/wan4 ] || [ -n "$(ip link | grep ' wan4')" ]; then - _setup_wan_interface wan4 wan4 on - _macaddr=$(uci -q get "network.wan4.macaddr") - _setup_macaddr "wan4" "${_macaddr:-$(dd if=/dev/urandom bs=1024 count=1 2>/dev/null | md5sum | sed -e 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4:\5:\6/' -e 's/^\(.\)[13579bdf]/\10/')}" - fi - fi - else - _setup_wan_interface wan1 wan1 master macvlan - _setup_wan_interface wan2 wan1 on macvlan - _setup_macvlan wan1 - _setup_macvlan wan2 - fi - elif [ -d /sys/class/net/eth1 ] || [ -n "$(ip link | grep ' eth1:')" ]; then - if [ -d /sys/class/net/eth2 ] || [ -n "$(ip link | grep ' eth2:')" ]; then - _setup_wan_interface wan1 eth1 master - _setup_wan_interface wan2 eth2 on - if [ -d /sys/class/net/eth3 ] || [ -n "$(ip link | grep ' eth3:')" ]; then - _setup_wan_interface wan3 eth3 on - fi - if [ -d /sys/class/net/eth4 ] || [ -n "$(ip link | grep ' eth4:')" ]; then - _setup_wan_interface wan4 eth4 on - fi - if [ -d /sys/class/net/eth5 ] || [ -n "$(ip link | grep ' eth5:')" ]; then - _setup_wan_interface wan5 eth5 on - fi - if [ -d /sys/class/net/eth6 ] || [ -n "$(ip link | grep ' eth6:')" ]; then - _setup_wan_interface wan6 eth6 on - fi - if [ -d /sys/class/net/eth7 ] || [ -n "$(ip link | grep ' eth7:')" ]; then - _setup_wan_interface wan7 eth7 on - fi - if [ -d /sys/class/net/eth8 ] || [ -n "$(ip link | grep ' eth8:')" ]; then - _setup_wan_interface wan8 eth8 on - fi - else - _setup_wan_interface wan1 eth1 master macvlan - _setup_wan_interface wan2 eth1 on macvlan - _setup_macvlan wan1 - _setup_macvlan wan2 - fi - elif [ -d /sys/class/net/eth0.1 ] && [ -d /sys/class/net/eth0.2 ]; then - _setup_wan_interface wan1 eth0.1 master - _setup_wan_interface wan2 eth0.2 on - else - _setup_wan_interface wan1 eth0 master macvlan - _setup_wan_interface wan2 eth0 on macvlan - _setup_macvlan wan1 - _setup_macvlan wan2 - fi - #uci -q batch <<-EOF - #add network route6 - #set network.@route6[-1].interface='lan' - #set network.@route6[-1].target='::/0' - #EOF -fi - -# Replace omrip to oip in config for old config -sed -i 's/omrip/oip/g' /etc/config/* - -uci -q commit macvlan -uci -q commit network -rm -f /tmp/luci-indexcache -exit 0